@@ -1256,7 +1256,6 @@ defm "" : SIMDConvert<I32x4, I16x8, int_wasm_extadd_pairwise_signed,
1256
1256
defm "" : SIMDConvert<I32x4, I16x8, int_wasm_extadd_pairwise_unsigned,
1257
1257
"extadd_pairwise_i16x8_u", 0xa6>;
1258
1258
1259
-
1260
1259
// Prototype f64x2 conversions
1261
1260
defm "" : SIMDConvert<F64x2, I32x4, int_wasm_convert_low_signed,
1262
1261
"convert_low_i32x4_s", 0x53>;
@@ -1271,6 +1270,25 @@ defm "" : SIMDConvert<F32x4, F64x2, int_wasm_demote_zero,
1271
1270
defm "" : SIMDConvert<F64x2, F32x4, int_wasm_promote_low,
1272
1271
"promote_low_f32x4", 0x69>;
1273
1272
1273
+ // Prototype i8x16 to i32x4 widening
1274
+ defm WIDEN_I8x16_TO_I32x4_S :
1275
+ SIMD_I<(outs V128:$dst), (ins V128:$vec, vec_i8imm_op:$idx),
1276
+ (outs), (ins vec_i8imm_op:$idx),
1277
+ [(set (I32x4.vt V128:$dst),
1278
+ (I32x4.vt (int_wasm_widen_signed
1279
+ (I8x16.vt V128:$vec), (i32 timm:$idx))))],
1280
+ "i32x4.widen_i8x16_s\t$dst, $vec, $idx",
1281
+ "i32x4.widen_i8x16_s\t$idx", 0x67>;
1282
+ defm WIDEN_I8x16_TO_I32x4_U :
1283
+ SIMD_I<(outs V128:$dst), (ins V128:$vec, vec_i8imm_op:$idx),
1284
+ (outs), (ins vec_i8imm_op:$idx),
1285
+ [(set (I32x4.vt V128:$dst),
1286
+ (I32x4.vt (int_wasm_widen_unsigned
1287
+ (I8x16.vt V128:$vec), (i32 timm:$idx))))],
1288
+ "i32x4.widen_i8x16_u\t$dst, $vec, $idx",
1289
+ "i32x4.widen_i8x16_u\t$idx", 0x68>;
1290
+
1291
+
1274
1292
//===----------------------------------------------------------------------===//
1275
1293
// Quasi-Fused Multiply- Add and Subtract (QFMA/QFMS)
1276
1294
//===----------------------------------------------------------------------===//
0 commit comments