@@ -1711,25 +1711,29 @@ defm RELAXED_DOT :
17111711 "i16x8.relaxed_dot_i8x16_i7x16_s\t$dst, $lhs, $rhs",
17121712 "i16x8.relaxed_dot_i8x16_i7x16_s", 0x112>;
17131713
1714- def : Pat<
1715- (v8i16 (add
1716- (wasm_shuffle
1717- (v8i16 (extmul_low_s v16i8:$lhs, v16i8:$rhs)),
1718- (v8i16 (extmul_high_s v16i8:$lhs, v16i8:$rhs)),
1719- (i32 0), (i32 1), (i32 4), (i32 5),
1720- (i32 8), (i32 9), (i32 12), (i32 13),
1721- (i32 16), (i32 17), (i32 20), (i32 21),
1722- (i32 24), (i32 25), (i32 28), (i32 29)),
1723- (wasm_shuffle
1724- (v8i16 (extmul_low_s v16i8:$lhs, v16i8:$rhs)),
1725- (v8i16 (extmul_high_s v16i8:$lhs, v16i8:$rhs)),
1726- (i32 2), (i32 3), (i32 6), (i32 7),
1727- (i32 10), (i32 11), (i32 14), (i32 15),
1728- (i32 18), (i32 19), (i32 22), (i32 23),
1729- (i32 26), (i32 27), (i32 30), (i32 31)))
1730- ),
1731- (v8i16 (RELAXED_DOT v16i8:$lhs, v16i8:$rhs))
1732- >;
1714+ class RelaxedDotPat_ShuffleExtMul<ValueType FromVecTy, ValueType ToVecTy> :
1715+ Pat<
1716+ (ToVecTy (add
1717+ (wasm_shuffle
1718+ (ToVecTy (extmul_low_s FromVecTy:$lhs, FromVecTy:$rhs)),
1719+ (ToVecTy (extmul_high_s FromVecTy:$lhs, FromVecTy:$rhs)),
1720+ (i32 0), (i32 1), (i32 4), (i32 5),
1721+ (i32 8), (i32 9), (i32 12), (i32 13),
1722+ (i32 16), (i32 17), (i32 20), (i32 21),
1723+ (i32 24), (i32 25), (i32 28), (i32 29)),
1724+ (wasm_shuffle
1725+ (ToVecTy (extmul_low_s FromVecTy:$lhs, FromVecTy:$rhs)),
1726+ (ToVecTy (extmul_high_s FromVecTy:$lhs, FromVecTy:$rhs)),
1727+ (i32 2), (i32 3), (i32 6), (i32 7),
1728+ (i32 10), (i32 11), (i32 14), (i32 15),
1729+ (i32 18), (i32 19), (i32 22), (i32 23),
1730+ (i32 26), (i32 27), (i32 30), (i32 31)))
1731+ ),
1732+ (ToVecTy (RELAXED_DOT FromVecTy:$lhs, FromVecTy:$rhs))
1733+ >;
1734+
1735+ def : RelaxedDotPat_ShuffleExtMul<v16i8, v8i16>;
1736+
17331737
17341738defm RELAXED_DOT_ADD :
17351739 RELAXED_I<(outs V128:$dst), (ins V128:$lhs, V128:$rhs, V128:$acc),
0 commit comments