[llvm] [AArch64] Implement spill/fill of predicate pair register classes (PR #76068)

Momchil Velikov via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 21 07:04:43 PST 2023


================
@@ -2378,11 +2378,13 @@ let Predicates = [HasSVEorSME] in {
     def LDR_ZZXI   : Pseudo<(outs   ZZ_b_strided_and_contiguous:$Zd), (ins GPR64sp:$sp, simm4s1:$offset),[]>, Sched<[]>;
     def LDR_ZZZXI  : Pseudo<(outs  ZZZ_b:$Zd), (ins GPR64sp:$sp, simm4s1:$offset),[]>, Sched<[]>;
     def LDR_ZZZZXI : Pseudo<(outs ZZZZ_b_strided_and_contiguous:$Zd), (ins GPR64sp:$sp, simm4s1:$offset),[]>, Sched<[]>;
+    def LDR_PPXI   : Pseudo<(outs PPR2:$pp), (ins GPR64sp:$sp, simm4s1:$offset),[]>, Sched<[]>;
----------------
momchil-velikov wrote:

These offsets are checked when replacing frame index with actual addressing mode, so we know we are in range. I would suggest changing all these to `simm9` in a separate patch, if only to not make someone wonder why did we use such strange constraints.

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


More information about the llvm-commits mailing list