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 ==