diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 7063dc5f9e7..1ee9253d01b 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -681,194 +681,209 @@ enum ASTNodes { // SIMD opcodes V128Load = 0x00, - V128Store = 0x01, - V128Const = 0x02, - V8x16Shuffle = 0x03, - I8x16Splat = 0x04, - I8x16ExtractLaneS = 0x05, - I8x16ExtractLaneU = 0x06, - I8x16ReplaceLane = 0x07, - I16x8Splat = 0x08, - I16x8ExtractLaneS = 0x09, - I16x8ExtractLaneU = 0x0a, - I16x8ReplaceLane = 0x0b, - I32x4Splat = 0x0c, - I32x4ExtractLane = 0x0d, - I32x4ReplaceLane = 0x0e, - I64x2Splat = 0x0f, - I64x2ExtractLane = 0x10, - I64x2ReplaceLane = 0x11, - F32x4Splat = 0x12, - F32x4ExtractLane = 0x13, - F32x4ReplaceLane = 0x14, - F64x2Splat = 0x15, - F64x2ExtractLane = 0x16, - F64x2ReplaceLane = 0x17, - I8x16Eq = 0x18, - I8x16Ne = 0x19, - I8x16LtS = 0x1a, - I8x16LtU = 0x1b, - I8x16GtS = 0x1c, - I8x16GtU = 0x1d, - I8x16LeS = 0x1e, - I8x16LeU = 0x1f, - I8x16GeS = 0x20, - I8x16GeU = 0x21, - I16x8Eq = 0x22, - I16x8Ne = 0x23, - I16x8LtS = 0x24, - I16x8LtU = 0x25, - I16x8GtS = 0x26, - I16x8GtU = 0x27, - I16x8LeS = 0x28, - I16x8LeU = 0x29, - I16x8GeS = 0x2a, - I16x8GeU = 0x2b, - I32x4Eq = 0x2c, - I32x4Ne = 0x2d, - I32x4LtS = 0x2e, - I32x4LtU = 0x2f, - I32x4GtS = 0x30, - I32x4GtU = 0x31, - I32x4LeS = 0x32, - I32x4LeU = 0x33, - I32x4GeS = 0x34, - I32x4GeU = 0x35, - F32x4Eq = 0x40, - F32x4Ne = 0x41, - F32x4Lt = 0x42, - F32x4Gt = 0x43, - F32x4Le = 0x44, - F32x4Ge = 0x45, - F64x2Eq = 0x46, - F64x2Ne = 0x47, - F64x2Lt = 0x48, - F64x2Gt = 0x49, - F64x2Le = 0x4a, - F64x2Ge = 0x4b, - V128Not = 0x4c, - V128And = 0x4d, - V128Or = 0x4e, - V128Xor = 0x4f, - V128AndNot = 0xd8, - V128Bitselect = 0x50, - I8x16Abs = 0xe1, - I8x16Neg = 0x51, - I8x16AnyTrue = 0x52, - I8x16AllTrue = 0x53, - I8x16Bitmask = 0xe4, - I8x16Shl = 0x54, - I8x16ShrS = 0x55, - I8x16ShrU = 0x56, - I8x16Add = 0x57, - I8x16AddSatS = 0x58, - I8x16AddSatU = 0x59, - I8x16Sub = 0x5a, - I8x16SubSatS = 0x5b, - I8x16SubSatU = 0x5c, - I8x16Mul = 0x5d, - I8x16MinS = 0x5e, - I8x16MinU = 0x5f, - I8x16MaxS = 0x60, - I8x16MaxU = 0x61, - I8x16AvgrU = 0xd9, - I16x8Abs = 0xe2, - I16x8Neg = 0x62, - I16x8AnyTrue = 0x63, - I16x8AllTrue = 0x64, - I16x8Bitmask = 0xe5, - I16x8Shl = 0x65, - I16x8ShrS = 0x66, - I16x8ShrU = 0x67, - I16x8Add = 0x68, - I16x8AddSatS = 0x69, - I16x8AddSatU = 0x6a, - I16x8Sub = 0x6b, - I16x8SubSatS = 0x6c, - I16x8SubSatU = 0x6d, - I16x8Mul = 0x6e, - I16x8MinS = 0x6f, - I16x8MinU = 0x70, - I16x8MaxS = 0x71, - I16x8MaxU = 0x72, - I16x8AvgrU = 0xda, - I32x4Abs = 0xe3, - I32x4Neg = 0x73, - I32x4AnyTrue = 0x74, - I32x4AllTrue = 0x75, - I32x4Bitmask = 0xe6, - I32x4Shl = 0x76, - I32x4ShrS = 0x77, - I32x4ShrU = 0x78, - I32x4Add = 0x79, - I32x4Sub = 0x7c, - I32x4Mul = 0x7f, - I32x4MinS = 0x80, - I32x4MinU = 0x81, - I32x4MaxS = 0x82, - I32x4MaxU = 0x83, - I32x4DotSVecI16x8 = 0xdb, - I64x2Neg = 0x84, - I64x2AnyTrue = 0x85, - I64x2AllTrue = 0x86, - I64x2Shl = 0x87, - I64x2ShrS = 0x88, - I64x2ShrU = 0x89, - I64x2Add = 0x8a, - I64x2Sub = 0x8d, - F32x4Abs = 0x95, - F32x4Neg = 0x96, - F32x4Sqrt = 0x97, - F32x4QFMA = 0x98, - F32x4QFMS = 0x99, - F32x4Add = 0x9a, - F32x4Sub = 0x9b, - F32x4Mul = 0x9c, - F32x4Div = 0x9d, - F32x4Min = 0x9e, - F32x4Max = 0x9f, - F64x2Abs = 0xa0, - F64x2Neg = 0xa1, - F64x2Sqrt = 0xa2, - F64x2QFMA = 0xa3, - F64x2QFMS = 0xa4, - F64x2Add = 0xa5, - F64x2Sub = 0xa6, - F64x2Mul = 0xa7, - F64x2Div = 0xa8, - F64x2Min = 0xa9, - F64x2Max = 0xaa, - I32x4TruncSatSF32x4 = 0xab, - I32x4TruncSatUF32x4 = 0xac, - I64x2TruncSatSF64x2 = 0xad, - I64x2TruncSatUF64x2 = 0xae, - F32x4ConvertSI32x4 = 0xaf, - F32x4ConvertUI32x4 = 0xb0, - F64x2ConvertSI64x2 = 0xb1, - F64x2ConvertUI64x2 = 0xb2, - V8x16LoadSplat = 0xc2, - V16x8LoadSplat = 0xc3, - V32x4LoadSplat = 0xc4, - V64x2LoadSplat = 0xc5, - I8x16NarrowSI16x8 = 0xc6, - I8x16NarrowUI16x8 = 0xc7, - I16x8NarrowSI32x4 = 0xc8, - I16x8NarrowUI32x4 = 0xc9, - I16x8WidenLowSI8x16 = 0xca, - I16x8WidenHighSI8x16 = 0xcb, - I16x8WidenLowUI8x16 = 0xcc, - I16x8WidenHighUI8x16 = 0xcd, - I32x4WidenLowSI16x8 = 0xce, - I32x4WidenHighSI16x8 = 0xcf, - I32x4WidenLowUI16x8 = 0xd0, - I32x4WidenHighUI16x8 = 0xd1, - I16x8LoadExtSVec8x8 = 0xd2, - I16x8LoadExtUVec8x8 = 0xd3, - I32x4LoadExtSVec16x4 = 0xd4, - I32x4LoadExtUVec16x4 = 0xd5, - I64x2LoadExtSVec32x2 = 0xd6, - I64x2LoadExtUVec32x2 = 0xd7, - V8x16Swizzle = 0xc0, + I16x8LoadExtSVec8x8 = 0x01, + I16x8LoadExtUVec8x8 = 0x02, + I32x4LoadExtSVec16x4 = 0x03, + I32x4LoadExtUVec16x4 = 0x04, + I64x2LoadExtSVec32x2 = 0x05, + I64x2LoadExtUVec32x2 = 0x06, + V8x16LoadSplat = 0x07, + V16x8LoadSplat = 0x08, + V32x4LoadSplat = 0x09, + V64x2LoadSplat = 0x0a, + V128Store = 0x0b, + + V128Const = 0x0c, + V8x16Shuffle = 0x0d, + V8x16Swizzle = 0x0e, + + I8x16Splat = 0x0f, + I16x8Splat = 0x10, + I32x4Splat = 0x11, + I64x2Splat = 0x12, + F32x4Splat = 0x13, + F64x2Splat = 0x14, + + I8x16ExtractLaneS = 0x15, + I8x16ExtractLaneU = 0x16, + I8x16ReplaceLane = 0x17, + I16x8ExtractLaneS = 0x18, + I16x8ExtractLaneU = 0x19, + I16x8ReplaceLane = 0x1a, + I32x4ExtractLane = 0x1b, + I32x4ReplaceLane = 0x1c, + I64x2ExtractLane = 0x1d, + I64x2ReplaceLane = 0x1e, + F32x4ExtractLane = 0x1f, + F32x4ReplaceLane = 0x20, + F64x2ExtractLane = 0x21, + F64x2ReplaceLane = 0x22, + + I8x16Eq = 0x23, + I8x16Ne = 0x24, + I8x16LtS = 0x25, + I8x16LtU = 0x26, + I8x16GtS = 0x27, + I8x16GtU = 0x28, + I8x16LeS = 0x29, + I8x16LeU = 0x2a, + I8x16GeS = 0x2b, + I8x16GeU = 0x2c, + I16x8Eq = 0x2d, + I16x8Ne = 0x2e, + I16x8LtS = 0x2f, + I16x8LtU = 0x30, + I16x8GtS = 0x31, + I16x8GtU = 0x32, + I16x8LeS = 0x33, + I16x8LeU = 0x34, + I16x8GeS = 0x35, + I16x8GeU = 0x36, + I32x4Eq = 0x37, + I32x4Ne = 0x38, + I32x4LtS = 0x39, + I32x4LtU = 0x3a, + I32x4GtS = 0x3b, + I32x4GtU = 0x3c, + I32x4LeS = 0x3d, + I32x4LeU = 0x3e, + I32x4GeS = 0x3f, + I32x4GeU = 0x40, + F32x4Eq = 0x41, + F32x4Ne = 0x42, + F32x4Lt = 0x43, + F32x4Gt = 0x44, + F32x4Le = 0x45, + F32x4Ge = 0x46, + F64x2Eq = 0x47, + F64x2Ne = 0x48, + F64x2Lt = 0x49, + F64x2Gt = 0x4a, + F64x2Le = 0x4b, + F64x2Ge = 0x4c, + + V128Not = 0x4d, + V128And = 0x4e, + V128AndNot = 0x4f, + V128Or = 0x50, + V128Xor = 0x51, + V128Bitselect = 0x52, + + I8x16Abs = 0x60, + I8x16Neg = 0x61, + I8x16AnyTrue = 0x62, + I8x16AllTrue = 0x63, + I8x16Bitmask = 0x64, + I8x16NarrowSI16x8 = 0x65, + I8x16NarrowUI16x8 = 0x66, + I8x16Shl = 0x6b, + I8x16ShrS = 0x6c, + I8x16ShrU = 0x6d, + I8x16Add = 0x6e, + I8x16AddSatS = 0x6f, + I8x16AddSatU = 0x70, + I8x16Sub = 0x71, + I8x16SubSatS = 0x72, + I8x16SubSatU = 0x73, + I8x16Mul = 0x75, + I8x16MinS = 0x76, + I8x16MinU = 0x77, + I8x16MaxS = 0x78, + I8x16MaxU = 0x79, + I8x16AvgrU = 0x7b, + + I16x8Abs = 0x80, + I16x8Neg = 0x81, + I16x8AnyTrue = 0x82, + I16x8AllTrue = 0x83, + I16x8Bitmask = 0x84, + I16x8NarrowSI32x4 = 0x85, + I16x8NarrowUI32x4 = 0x86, + I16x8WidenLowSI8x16 = 0x87, + I16x8WidenHighSI8x16 = 0x88, + I16x8WidenLowUI8x16 = 0x89, + I16x8WidenHighUI8x16 = 0x8a, + I16x8Shl = 0x8b, + I16x8ShrS = 0x8c, + I16x8ShrU = 0x8d, + I16x8Add = 0x8e, + I16x8AddSatS = 0x8f, + I16x8AddSatU = 0x90, + I16x8Sub = 0x91, + I16x8SubSatS = 0x92, + I16x8SubSatU = 0x93, + I16x8Mul = 0x95, + I16x8MinS = 0x96, + I16x8MinU = 0x97, + I16x8MaxS = 0x98, + I16x8MaxU = 0x99, + I16x8AvgrU = 0x9b, + + I32x4Abs = 0xa0, + I32x4Neg = 0xa1, + I32x4AnyTrue = 0xa2, + I32x4AllTrue = 0xa3, + I32x4Bitmask = 0xa4, + I32x4WidenLowSI16x8 = 0xa7, + I32x4WidenHighSI16x8 = 0xa8, + I32x4WidenLowUI16x8 = 0xa9, + I32x4WidenHighUI16x8 = 0xaa, + I32x4Shl = 0xab, + I32x4ShrS = 0xac, + I32x4ShrU = 0xad, + I32x4Add = 0xae, + I32x4Sub = 0xb1, + I32x4DotSVecI16x8 = 0xb4, + I32x4Mul = 0xb5, + I32x4MinS = 0xb6, + I32x4MinU = 0xb7, + I32x4MaxS = 0xb8, + I32x4MaxU = 0xb9, + + I64x2Neg = 0xc1, + I64x2AnyTrue = 0xc2, + I64x2AllTrue = 0xc3, + I64x2Shl = 0xcb, + I64x2ShrS = 0xcc, + I64x2ShrU = 0xcd, + I64x2Add = 0xce, + I64x2Sub = 0xd1, + // TODO: i64x2.mul + + F32x4Abs = 0xe0, + F32x4Neg = 0xe1, + F32x4Sqrt = 0xe3, + F32x4Add = 0xe4, + F32x4Sub = 0xe5, + F32x4Mul = 0xe6, + F32x4Div = 0xe7, + F32x4Min = 0xe8, + F32x4Max = 0xe9, + + F64x2Abs = 0xec, + F64x2Neg = 0xed, + F64x2Sqrt = 0xef, + F64x2Add = 0xf0, + F64x2Sub = 0xf1, + F64x2Mul = 0xf2, + F64x2Div = 0xf3, + F64x2Min = 0xf4, + F64x2Max = 0xf5, + + I32x4TruncSatSF32x4 = 0xf8, + I32x4TruncSatUF32x4 = 0xf9, + F32x4ConvertSI32x4 = 0xfa, + F32x4ConvertUI32x4 = 0xfb, + + F32x4QFMA = 0xfc, + F32x4QFMS = 0xfd, + F64x2QFMA = 0xfe, + F64x2QFMS = 0xff, + + I64x2TruncSatSF64x2 = 0x0100, + I64x2TruncSatUF64x2 = 0x0101, + F64x2ConvertSI64x2 = 0x0102, + F64x2ConvertUI64x2 = 0x0103, // bulk memory opcodes diff --git a/test/unit/input/simd_target_feature.wasm b/test/unit/input/simd_target_feature.wasm index 5eecef198e6..75e624112e0 100755 Binary files a/test/unit/input/simd_target_feature.wasm and b/test/unit/input/simd_target_feature.wasm differ