================
@@ -3062,3 +2951,99 @@ define <2 x i16> @test_pnclipup_v2i16(i32 %a, i32 %b) {
   %r = call <2 x i16> @llvm.riscv.pnclipup.v2i16.i32(i32 %a, i32 %b)
   ret <2 x i16> %r
 }
+
+define i32 @test_mqacc_h00_i32(i32 %rd, <2 x i16> %a, <2 x i16> %b) {
+; RV32-LABEL: test_mqacc_h00_i32:
+; RV32:       # %bb.0:
+; RV32-NEXT:    mqacc.h00 a0, a1, a2
+; RV32-NEXT:    ret
+;
+; RV64-LABEL: test_mqacc_h00_i32:
+; RV64:       # %bb.0:
+; RV64-NEXT:    zext.w a2, a2
----------------
TelGome wrote:

Done. The zext.w was a side effect of zero-extending the v2i16 source to fill 
the upper half of the 64-bit register. Switched to undef fill (CONCAT_VECTORS 
with UNDEF) for the upper lanes, so zext.w is no longer emitted. The i32-result 
RV64 form is now pmv.ws + pmqacc.w.hXX.

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

Reply via email to