[llvm] [AArch64][SME2][SVE2p1] Add PNR_3b regclass (PR #67785)

David Sherwood via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 29 03:52:51 PDT 2023


================
@@ -26,4 +26,18 @@ entry:
   %0 = load target("aarch64.svcount"), ptr %predcnt.addr, align 2
   call void asm sideeffect "ld1w {z0.s,z1.s,z2.s,z3.s}, $0/z, [x10]", "@3Upa"(target("aarch64.svcount") %0)
   ret void
-}
\ No newline at end of file
+}
+
+define void @UplPNR(target("aarch64.svcount") %predcnt) {
+entry:
+; CHECK:  %0:ppr = COPY $p0
+; CHECK:  STR_PXI %0, %stack.0.predcnt.addr, 0 :: (store unknown-size into %ir.predcnt.addr, align 2)
+; CHECK:  %1:pnr_3b = COPY %0
+; CHECK:  INLINEASM &"fadd z0.h, p0/m, z0.h, #0.5", 1 /* sideeffect attdialect */, 393225 /* reguse:PNR_3b */, %1
+; CHECK:  RET_ReallyLR
+  %predcnt.addr = alloca target("aarch64.svcount"), align 2
+  store target("aarch64.svcount") %predcnt, ptr %predcnt.addr, align 2
+  %0 = load target("aarch64.svcount"), ptr %predcnt.addr, align 2
+  call void asm sideeffect "fadd z0.h, p0/m, z0.h, #0.5", "@3Upl"(target("aarch64.svcount") %0)
----------------
david-arm wrote:

I think you need to change 'p0/m' to '$0/m' so that it's actually using the input operand, right? That's what we seem to do in the test above.

https://github.com/llvm/llvm-project/pull/67785


More information about the llvm-commits mailing list