• bbudge's avatar
    Turbofan: Add MachineOperators for SIMD. · 3831d41e
    bbudge authored
    IMPORTANT NOTE: This will likely be macroized to reduce boilerplate. Publishing now to start discussion about approach, which ops are needed, etc. Omitted functions are commented out in machine-operator.h so start there.
    
    Takes the SIMD runtime intrinsics as a starting point for defining TF machine operators. The rationale for omitting functions is:
    
     - UInt constructors. int and uint aren't distinguished in wasm.
     - Check functions.
     - 'FromXxxBits' functions. These are essentially casts.
     - Simple Load / Store functions. Existing load / store with SIMD type should work.
     - Uint functions, except where their behavior is bitwise different from the Int function.
    
    Skipped fns:
    
    Float32x4Check
    Float32x4FromInt32x4Bits
    Float32x4FromUint32x4Bits
    Float32x4FromInt16x8Bits
    Float32x4FromUint16x8Bits
    Float32x4FromInt8x16Bits
    Float32x4FromUint8x16Bits
    Float32x4Load
    Float32x4Store
    
    Int32x4Check
    Int32x4FromUint32x4
    Int32x4FromFloat32x4Bits
    Int32x4FromUint32x4Bits
    Int32x4FromInt16x8Bits
    Int32x4FromUint16x8Bits
    Int32x4FromInt8x16Bits
    Int32x4FromUint8x16Bits
    Int32x4Load
    Int32x4Store
    
    CreateUint32x4
    Uint32x4Check
    Uint32x4ExtractLane
    Uint32x4ReplaceLane
    Uint32x4Add
    Uint32x4Sub
    Uint32x4Mul
    Uint32x4And
    Uint32x4Or
    Uint32x4Xor
    Uint32x4Not
    Uint32x4Equal
    Uint32x4NotEqual
    Uint32x4Select
    Uint32x4Swizzle
    Uint32x4Shuffle
    Uint32x4FromInt32x4
    Uint32x4FromFloat32x4Bits
    Uint32x4FromInt32x4Bits
    Uint32x4FromInt16x8Bits
    Uint32x4FromUint16x8Bits
    Uint32x4FromInt8x16Bits
    Uint32x4FromUint8x16Bits
    Uint32x4Load
    Uint32x4Load1
    Uint32x4Load2
    Uint32x4Load3
    Uint32x4Store
    Uint32x4Store1
    Uint32x4Store2
    Uint32x4Store3
    
    Bool32x4Check
    
    Int16x8Check
    Int16x8FromUint16x8
    Int16x8FromFloat32x4Bits
    Int16x8FromInt32x4Bits
    Int16x8FromUint32x4Bits
    Int16x8FromUint16x8Bits
    Int16x8FromInt8x16Bits
    Int16x8FromUint8x16Bits
    Int16x8Load
    Int16x8Store
    
    CreateUint16x8
    Uint16x8Check
    Uint16x8ExtractLane
    Uint16x8ReplaceLane
    Uint16x8Add
    Uint16x8Sub
    Uint16x8Mul
    Uint16x8And
    Uint16x8Or
    Uint16x8Xor
    Uint16x8Not
    Uint16x8Equal
    Uint16x8NotEqual
    Uint16x8Select
    Uint16x8Swizzle
    Uint16x8Shuffle
    Uint16x8FromInt16x8
    Uint16x8FromFloat32x4Bits
    Uint16x8FromInt32x4Bits
    Uint16x8FromUint32x4Bits
    Uint16x8FromInt16x8Bits
    Uint16x8FromInt8x16Bits
    Uint16x8FromUint8x16Bits
    Uint16x8Load
    Uint16x8Store
    
    Bool16x8Check
    
    Int8x16Check
    Int8x16FromUint8x16
    Int8x16FromFloat32x4Bits
    Int8x16FromInt32x4Bits
    Int8x16FromUint32x4Bits
    Int8x16FromInt16x8Bits
    Int8x16FromUint16x8Bits
    Int8x16FromUint8x16Bits
    Int8x16Load
    Int8x16Store
    
    CreateUint8x16
    Uint8x16Check
    Uint8x16ExtractLane
    Uint8x16ReplaceLane
    Uint8x16Add
    Uint8x16Sub
    Uint8x16Mul
    Uint8x16And
    Uint8x16Or
    Uint8x16Xor
    Uint8x16Not
    Uint8x16Equal
    Uint8x16NotEqual
    Uint8x16Select
    Uint8x16Swizzle
    Uint8x16Shuffle
    Uint8x16FromInt8x16
    Uint8x16FromFloat32x4Bits
    Uint8x16FromInt32x4Bits
    Uint8x16FromUint32x4Bits
    Uint8x16FromInt16x8Bits
    Uint8x16FromUint16x8Bits
    Uint8x16FromInt8x16Bits
    Uint8x16Load
    Uint8x16Store
    
    Bool8x16Check
    
    LOG=N
    BUG=v8:4124
    
    Review URL: https://codereview.chromium.org/1848433003
    
    Cr-Commit-Position: refs/heads/master@{#35213}
    3831d41e
typer.cc 74 KB