Changes between Version 12 and Version 13 of SimdLlvm


Ignore:
Timestamp:
Oct 5, 2011 1:45:43 PM (4 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SimdLlvm

    v12 v13  
    4646LLVM's [http://llvm.org/docs/LangRef.html#vectorops vector operations:] (`INT32`, `INT64`, `WORD32`, and `WORD64` are defined as `primops.txt.pp`) 
    4747{{{ 
    48 extractIntVec    :: IntVec#    -> Int# -> Int# 
    49 extractInt8Vec   :: Int8Vec#   -> Int# -> Int# 
    50 extractInt16Vec  :: Int16Vec#  -> Int# -> Int# 
    51 extractInt32Vec  :: Int32Vec#  -> Int# -> INT32 
    52 extractInt64Vec  :: Int64Vec#  -> Int# -> INT64 
    53 extractWordVec   :: WordVec#   -> Int# -> Int# 
    54 extractWord8Vec  :: Word8Vec#  -> Int# -> Word# 
    55 extractWord16Vec :: Word16Vec# -> Int# -> Word# 
    56 extractWord32Vec :: Word32Vec# -> Int# -> WORD32 
    57 extractWord64Vec :: Word32Vec# -> Int# -> WORD64 
    58 extractFloatVec  :: FloatVec#  -> Int# -> Float# 
    59 extractDoubleVec :: DoubleVec# -> Int# -> Double# 
     48extractIntVec#    :: IntVec#    -> Int# -> Int# 
     49extractInt8Vec#   :: Int8Vec#   -> Int# -> Int# 
     50extractInt16Vec#  :: Int16Vec#  -> Int# -> Int# 
     51extractInt32Vec#  :: Int32Vec#  -> Int# -> INT32 
     52extractInt64Vec#  :: Int64Vec#  -> Int# -> INT64 
     53extractWordVec#   :: WordVec#   -> Int# -> Int# 
     54extractWord8Vec#  :: Word8Vec#  -> Int# -> Word# 
     55extractWord16Vec# :: Word16Vec# -> Int# -> Word# 
     56extractWord32Vec# :: Word32Vec# -> Int# -> WORD32 
     57extractWord64Vec# :: Word32Vec# -> Int# -> WORD64 
     58extractFloatVec#  :: FloatVec#  -> Int# -> Float# 
     59extractDoubleVec# :: DoubleVec# -> Int# -> Double# 
    6060 
    61 insertIntVec    :: IntVec#    -> Int# -> Int#    -> IntVec#    
    62 insertInt8Vec   :: Int8Vec#   -> Int# -> Int#    -> Int8Vec#   
    63 insertInt16Vec  :: Int16Vec#  -> Int# -> Int#    -> Int16Vec#  
    64 insertInt32Vec  :: Int32Vec#  -> Int# -> INT32   -> Int32Vec#  
    65 insertInt64Vec  :: Int64Vec#  -> Int# -> INT64   -> Int64Vec#  
    66 insertWordVec   :: WordVec#   -> Int# -> Int#    -> WordVec#   
    67 insertWord8Vec  :: Word8Vec#  -> Int# -> Word#   -> Word8Vec#  
    68 insertWord16Vec :: Word16Vec# -> Int# -> Word#   -> Word16Vec# 
    69 insertWord32Vec :: Word32Vec# -> Int# -> WORD32  -> Word32Vec# 
    70 insertWord64Vec :: Word32Vec# -> Int# -> WORD64  -> Word32Vec# 
    71 insertFloatVec  :: FloatVec#  -> Int# -> Float#  -> FloatVec# 
    72 insertDoubleVec :: DoubleVec# -> Int# -> Double# -> DoubleVec# 
     61insertIntVec#    :: IntVec#    -> Int# -> Int#    -> IntVec#    
     62insertInt8Vec#   :: Int8Vec#   -> Int# -> Int#    -> Int8Vec#   
     63insertInt16Vec#  :: Int16Vec#  -> Int# -> Int#    -> Int16Vec#  
     64insertInt32Vec#  :: Int32Vec#  -> Int# -> INT32   -> Int32Vec#  
     65insertInt64Vec#  :: Int64Vec#  -> Int# -> INT64   -> Int64Vec#  
     66insertWordVec#   :: WordVec#   -> Int# -> Int#    -> WordVec#   
     67insertWord8Vec#  :: Word8Vec#  -> Int# -> Word#   -> Word8Vec#  
     68insertWord16Vec# :: Word16Vec# -> Int# -> Word#   -> Word16Vec# 
     69insertWord32Vec# :: Word32Vec# -> Int# -> WORD32  -> Word32Vec# 
     70insertWord64Vec# :: Word32Vec# -> Int# -> WORD64  -> Word32Vec# 
     71insertFloatVec#  :: FloatVec#  -> Int# -> Float#  -> FloatVec# 
     72insertDoubleVec# :: DoubleVec# -> Int# -> Double# -> DoubleVec# 
    7373}}} 
    7474 
     
    7676 * The order of the second and third argument of the insert family differs from the LLVM operations to be more in line to what we usually use in Haskell. 
    7777 * We should support LLVM's `shufflevector` operation as a shuffle family, much like the extract and insert families if this operation turns out to be useful in library or user code. 
     78 
     79Arithmetic and logic operations: 
     80{{{ 
     81-- the following on all vector types 
     82addIntVec#, subIntVec#, mulIntVec#, quotIntVec#, remIntVec# :: IntVec# -> IntVec# -> IntVec# 
     83negateIntVec# :: IntVec# -> IntVec# 
     84 
     85-- the following on IntVec#, Int8Vec#, Int16Vec#, Int32Vec#, and Int64Vec# 
     86uncheckedIntVecShiftL#, uncheckedIntVecShiftRA#, uncheckedIntVecShiftRL# :: IntVec# -> Int# -> IntVec# 
     87 
     88-- the following on WordVec#, Word8Vec#, Word16Vec#, Word32Vec#, and Word64Vec# 
     89andWordVec#, orWordVec#, xorWordVec# :: Word# -> Word# -> Word# 
     90notWord# :: WordVec# -> WordVec# 
     91uncheckedWordVecShiftL#, uncheckedWordVecShiftRL# :: WordVec# -> Int# -> WordVec# 
     92}}} 
     93 
     94NB: The [http://llvm.org/docs/LangRef.html LLVM reference] states that LLVM doesn't currently support comparisons on vector types. Once that becomes available, we may want to support it as well. 
    7895 
    7996== Using SIMD instructions in DPH ==