================
@@ -8177,6 +8089,100 @@ define i64 @test_pm2waddsu_v2i16_i64(<2 x i16> %a, <2 x 
i16> %b) {
   ret i64 %r
 }
 
+; Packed Multiplication with Widening Horizontal Addition and Accumulate.
+define i64 @test_pm2wadda_v2i16_i64(i64 %rd, <2 x i16> %a, <2 x i16> %b) {
+; RV32-LABEL: test_pm2wadda_v2i16_i64:
+; RV32:       # %bb.0:
+; RV32-NEXT:    pm2wadda.h a0, a2, a3
+; RV32-NEXT:    ret
+;
+; RV64-LABEL: test_pm2wadda_v2i16_i64:
+; RV64:       # %bb.0:
+; RV64-NEXT:    pack a2, a2, zero
+; RV64-NEXT:    pm4adda.h a0, a1, a2
+; RV64-NEXT:    ret
+  %r = call i64 @llvm.riscv.pm2wadda.i64.v2i16(i64 %rd, <2 x i16> %a, <2 x 
i16> %b)
+  ret i64 %r
+}
+
+define i64 @test_pm2wadda_x_v2i16_i64(i64 %rd, <2 x i16> %a, <2 x i16> %b) {
+; RV32-LABEL: test_pm2wadda_x_v2i16_i64:
+; RV32:       # %bb.0:
+; RV32-NEXT:    pm2wadda.hx a0, a2, a3
+; RV32-NEXT:    ret
+;
+; RV64-LABEL: test_pm2wadda_x_v2i16_i64:
+; RV64:       # %bb.0:
+; RV64-NEXT:    pack a2, a2, zero
+; RV64-NEXT:    ppairoe.h a2, a2, a2
+; RV64-NEXT:    pm4adda.h a0, a1, a2
+; RV64-NEXT:    ret
+  %r = call i64 @llvm.riscv.pm2wadda.x.i64.v2i16(i64 %rd, <2 x i16> %a, <2 x 
i16> %b)
+  ret i64 %r
+}
+
+define i64 @test_pm2waddau_v2i16_i64(i64 %rd, <2 x i16> %a, <2 x i16> %b) {
+; RV32-LABEL: test_pm2waddau_v2i16_i64:
+; RV32:       # %bb.0:
+; RV32-NEXT:    pm2waddau.h a0, a2, a3
+; RV32-NEXT:    ret
+;
+; RV64-LABEL: test_pm2waddau_v2i16_i64:
+; RV64:       # %bb.0:
+; RV64-NEXT:    pack a2, a2, zero
+; RV64-NEXT:    pm4addau.h a0, a1, a2
+; RV64-NEXT:    ret
+  %r = call i64 @llvm.riscv.pm2waddau.i64.v2i16(i64 %rd, <2 x i16> %a, <2 x 
i16> %b)
+  ret i64 %r
+}
+
+define i64 @test_pm2wsuba_v2i16_i64(i64 %rd, <2 x i16> %a, <2 x i16> %b) {
+; RV32-LABEL: test_pm2wsuba_v2i16_i64:
+; RV32:       # %bb.0:
+; RV32-NEXT:    pm2wsuba.h a0, a2, a3
+; RV32-NEXT:    ret
+;
+; RV64-LABEL: test_pm2wsuba_v2i16_i64:
+; RV64:       # %bb.0:
+; RV64-NEXT:    pm2sub.h a1, a1, a2
+; RV64-NEXT:    zext.w a1, a1
----------------
topperc wrote:

According to the spec, this zext.w should be before the pm2sub.h so that it 
might be able to fold into a load.

https://github.com/llvm/llvm-project/pull/234450
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to