[llvm] [AArch64][SME] Don't use glue for call lowering's SMSTART. (PR #68630)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 10 02:47:40 PDT 2023
================
@@ -368,15 +368,11 @@ define i8 @call_to_non_streaming_pass_sve_objects(ptr nocapture noundef readnone
; CHECK-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill
; CHECK-NEXT: stp x29, x30, [sp, #64] // 16-byte Folded Spill
; CHECK-NEXT: addvl sp, sp, #-3
-; CHECK-NEXT: rdsvl x8, #1
-; CHECK-NEXT: addvl x9, sp, #2
-; CHECK-NEXT: addvl x10, sp, #1
-; CHECK-NEXT: mov x11, sp
+; CHECK-NEXT: rdsvl x3, #1
; CHECK-NEXT: smstop sm
-; CHECK-NEXT: mov x0, x9
-; CHECK-NEXT: mov x1, x10
-; CHECK-NEXT: mov x2, x11
-; CHECK-NEXT: mov x3, x8
+; CHECK-NEXT: addvl x0, sp, #2
----------------
sdesmalen-arm wrote:
This is semantically different because `addvl` has a different meaning after the `smstop` then it did before.
Before the `smstop` it would have calculated the address of `%Data1`, `%Data2` and `%Data3` using the streaming VL (SVL), whereas now it uses the regular (non-streaming) VL. If SVL != VL, then this is a different address.
That's also the reason for having this `Glue`, so that these are not scheduled after the `smstop`.
https://github.com/llvm/llvm-project/pull/68630
More information about the llvm-commits
mailing list