[PATCH] D100574: [RISCV][WIP] Fix missing emergency slots for scalable stack offsets
Fraser Cormack via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 15 09:16:29 PDT 2021
frasercrmck added a subscriber: Hsiang-Kai.
frasercrmck added inline comments.
================
Comment at: llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir:92
+ renamable $x13 = nsw ADDI renamable $x16, -2
+ renamable $v0 = PseudoVRELOAD_M1 %stack.1 :: (load unknown-size from %stack.1, align 8)
+ renamable $v0 = PseudoVSLIDEDOWN_VX_M1 undef renamable $v0, killed renamable $v0, killed renamable $x13, $noreg, 8, implicit $vl, implicit $vtype
----------------
>From what I can tell, we need to scavenge three registers to compute the stack offsets at this point. The scalable offsets certainly require two. After adding two extra slots, the code generated is:
```
renamable $x13 = nsw ADDI renamable $x16, -2
$x5 = LUI 1
$x9 = ADDIW killed $x5, -1896
$x9 = ADD $x2, killed $x9
$x1 = PseudoReadVLENB
$x5 = ADDI $x0, 50
$x1 = MUL killed $x1, killed $x5
$x5 = LD $x2, 8 :: (load 8 from %stack.17)
$x9 = ADD killed $x9, killed $x1
$x1 = LD $x2, 16 :: (load 8 from %stack.16)
renamable $v0 = PseudoVRELOAD_M1 killed $x9 :: (load unknown-size from %stack.1, align 8)
```
I was wondering if I've missed something in my analysis. Perhaps @rogfer01, @StephenFan or @Hsiang-Kai know more?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D100574/new/
https://reviews.llvm.org/D100574
More information about the llvm-commits
mailing list