[llvm] f5cf98c - [RISCV] Improve test coverage for #87950
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 8 14:39:58 PDT 2024
Author: Philip Reames
Date: 2024-04-08T14:39:37-07:00
New Revision: f5cf98c02655de50401f6547ea181efed6a4c1f1
URL: https://github.com/llvm/llvm-project/commit/f5cf98c02655de50401f6547ea181efed6a4c1f1
DIFF: https://github.com/llvm/llvm-project/commit/f5cf98c02655de50401f6547ea181efed6a4c1f1.diff
LOG: [RISCV] Improve test coverage for #87950
Noticed in review that we want both the LUI and LUI/ADDI cases
with different behavior for each.
Added:
Modified:
llvm/test/CodeGen/RISCV/prolog-epilogue.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/RISCV/prolog-epilogue.ll b/llvm/test/CodeGen/RISCV/prolog-epilogue.ll
index 700481d9e13064..1204499deef5f3 100644
--- a/llvm/test/CodeGen/RISCV/prolog-epilogue.ll
+++ b/llvm/test/CodeGen/RISCV/prolog-epilogue.ll
@@ -181,6 +181,50 @@ define void @frame_4kb() {
ret void
}
+define void @frame_4kb_offset_128() {
+; RV32-LABEL: frame_4kb_offset_128:
+; RV32: # %bb.0:
+; RV32-NEXT: addi sp, sp, -2032
+; RV32-NEXT: .cfi_def_cfa_offset 2032
+; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
+; RV32-NEXT: .cfi_offset ra, -4
+; RV32-NEXT: lui a0, 1
+; RV32-NEXT: addi a0, a0, 128
+; RV32-NEXT: sub sp, sp, a0
+; RV32-NEXT: .cfi_def_cfa_offset 6256
+; RV32-NEXT: addi a0, sp, 12
+; RV32-NEXT: call callee
+; RV32-NEXT: lui a0, 1
+; RV32-NEXT: addi a0, a0, 128
+; RV32-NEXT: add sp, sp, a0
+; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
+; RV32-NEXT: addi sp, sp, 2032
+; RV32-NEXT: ret
+;
+; RV64-LABEL: frame_4kb_offset_128:
+; RV64: # %bb.0:
+; RV64-NEXT: addi sp, sp, -2032
+; RV64-NEXT: .cfi_def_cfa_offset 2032
+; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
+; RV64-NEXT: .cfi_offset ra, -8
+; RV64-NEXT: lui a0, 1
+; RV64-NEXT: addiw a0, a0, 128
+; RV64-NEXT: sub sp, sp, a0
+; RV64-NEXT: .cfi_def_cfa_offset 6256
+; RV64-NEXT: addi a0, sp, 8
+; RV64-NEXT: call callee
+; RV64-NEXT: lui a0, 1
+; RV64-NEXT: addiw a0, a0, 128
+; RV64-NEXT: add sp, sp, a0
+; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
+; RV64-NEXT: addi sp, sp, 2032
+; RV64-NEXT: ret
+ %a = alloca [6240 x i8]
+ call void @callee(ptr %a)
+ ret void
+}
+
+
;; 2^13-16+2032
define void @frame_8kb() {
; RV32-LABEL: frame_8kb:
@@ -221,6 +265,92 @@ define void @frame_8kb() {
ret void
}
+define void @frame_8kb_offset_128() {
+; RV32-LABEL: frame_8kb_offset_128:
+; RV32: # %bb.0:
+; RV32-NEXT: addi sp, sp, -2032
+; RV32-NEXT: .cfi_def_cfa_offset 2032
+; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
+; RV32-NEXT: .cfi_offset ra, -4
+; RV32-NEXT: lui a0, 2
+; RV32-NEXT: addi a0, a0, 128
+; RV32-NEXT: sub sp, sp, a0
+; RV32-NEXT: .cfi_def_cfa_offset 10352
+; RV32-NEXT: addi a0, sp, 12
+; RV32-NEXT: call callee
+; RV32-NEXT: lui a0, 2
+; RV32-NEXT: addi a0, a0, 128
+; RV32-NEXT: add sp, sp, a0
+; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
+; RV32-NEXT: addi sp, sp, 2032
+; RV32-NEXT: ret
+;
+; RV64-LABEL: frame_8kb_offset_128:
+; RV64: # %bb.0:
+; RV64-NEXT: addi sp, sp, -2032
+; RV64-NEXT: .cfi_def_cfa_offset 2032
+; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
+; RV64-NEXT: .cfi_offset ra, -8
+; RV64-NEXT: lui a0, 2
+; RV64-NEXT: addiw a0, a0, 128
+; RV64-NEXT: sub sp, sp, a0
+; RV64-NEXT: .cfi_def_cfa_offset 10352
+; RV64-NEXT: addi a0, sp, 8
+; RV64-NEXT: call callee
+; RV64-NEXT: lui a0, 2
+; RV64-NEXT: addiw a0, a0, 128
+; RV64-NEXT: add sp, sp, a0
+; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
+; RV64-NEXT: addi sp, sp, 2032
+; RV64-NEXT: ret
+ %a = alloca [10336 x i8]
+ call void @callee(ptr %a)
+ ret void
+}
+
+define void @frame_16kb_minus_80() {
+; RV32-LABEL: frame_16kb_minus_80:
+; RV32: # %bb.0:
+; RV32-NEXT: addi sp, sp, -2032
+; RV32-NEXT: .cfi_def_cfa_offset 2032
+; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
+; RV32-NEXT: .cfi_offset ra, -4
+; RV32-NEXT: lui a0, 4
+; RV32-NEXT: addi a0, a0, -80
+; RV32-NEXT: sub sp, sp, a0
+; RV32-NEXT: .cfi_def_cfa_offset 18336
+; RV32-NEXT: addi a0, sp, 12
+; RV32-NEXT: call callee
+; RV32-NEXT: lui a0, 4
+; RV32-NEXT: addi a0, a0, -80
+; RV32-NEXT: add sp, sp, a0
+; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
+; RV32-NEXT: addi sp, sp, 2032
+; RV32-NEXT: ret
+;
+; RV64-LABEL: frame_16kb_minus_80:
+; RV64: # %bb.0:
+; RV64-NEXT: addi sp, sp, -2032
+; RV64-NEXT: .cfi_def_cfa_offset 2032
+; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
+; RV64-NEXT: .cfi_offset ra, -8
+; RV64-NEXT: lui a0, 4
+; RV64-NEXT: addiw a0, a0, -80
+; RV64-NEXT: sub sp, sp, a0
+; RV64-NEXT: .cfi_def_cfa_offset 18336
+; RV64-NEXT: addi a0, sp, 8
+; RV64-NEXT: call callee
+; RV64-NEXT: lui a0, 4
+; RV64-NEXT: addiw a0, a0, -80
+; RV64-NEXT: add sp, sp, a0
+; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
+; RV64-NEXT: addi sp, sp, 2032
+; RV64-NEXT: ret
+ %a = alloca [18320 x i8]
+ call void @callee(ptr %a)
+ ret void
+}
+
;; 2^14-16+2032
define void @frame_16kb() {
; RV32-LABEL: frame_16kb:
More information about the llvm-commits
mailing list