Skip to content

Commit 564ff80

Browse files
committed
[RISCV][GISel] Test G_FRAME_INDEX folding into store address. NFC
1 parent bc6b632 commit 564ff80

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
22
# RUN: llc -mtriple=riscv32 -run-pass=instruction-select %s -o - \
33
# RUN: | FileCheck %s
4+
#
5+
--- |
6+
define void @store_i8(i8 %val, ptr %addr) { ret void }
7+
define void @store_i16(i16 %val, ptr %addr) { ret void }
8+
define void @store_i32(i32 %val, ptr %addr) { ret void }
9+
define void @store_p0(ptr %val, ptr %addr) { ret void }
10+
define void @store_fi_i32(ptr %val) {
11+
%ptr0 = alloca i32
12+
ret void
13+
}
14+
...
415
---
516
name: store_i8
617
legalized: true
@@ -89,3 +100,28 @@ body: |
89100
PseudoRET
90101
91102
...
103+
---
104+
name: store_fi_i32
105+
legalized: true
106+
regBankSelected: true
107+
tracksRegLiveness: true
108+
109+
stack:
110+
- { id: 0, name: ptr0, offset: 0, size: 4, alignment: 4 }
111+
112+
body: |
113+
bb.0:
114+
liveins: $x10
115+
116+
; CHECK-LABEL: name: store_fi_i32
117+
; CHECK: liveins: $x10
118+
; CHECK-NEXT: {{ $}}
119+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
120+
; CHECK-NEXT: SW [[COPY]], %stack.0.ptr0, 0 :: (store (s32))
121+
; CHECK-NEXT: PseudoRET
122+
%0:gprb(s32) = COPY $x10
123+
%1:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
124+
G_STORE %0(s32), %1(p0) :: (store (s32))
125+
PseudoRET
126+
127+
...

llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv64.mir

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
22
# RUN: llc -mtriple=riscv64 -run-pass=instruction-select %s -o - \
33
# RUN: | FileCheck %s
4+
5+
--- |
6+
define void @store_i8_i64(i8 %val, ptr %addr) { ret void }
7+
define void @store_i16_i64(i16 %val, ptr %addr) { ret void }
8+
define void @store_i32_i64(i32 %val, ptr %addr) { ret void }
9+
define void @store_i64_i64(i32 %val, ptr %addr) { ret void }
10+
define void @store_p0(ptr %val, ptr %addr) { ret void }
11+
define void @truncstore_i8_i32(i8 %val, ptr %addr) { ret void }
12+
define void @truncstore_i16_i32(i8 %val, ptr %addr) { ret void }
13+
define void @store_i32_i32(i8 %val, ptr %addr) { ret void }
14+
define void @store_fi_i64_i64(ptr %val) {
15+
%ptr0 = alloca i64
16+
ret void
17+
}
18+
...
419
---
520
name: store_i8_i64
621
legalized: true
@@ -207,3 +222,28 @@ body: |
207222
PseudoRET implicit $x10
208223
209224
...
225+
---
226+
name: store_fi_i64_i64
227+
legalized: true
228+
regBankSelected: true
229+
tracksRegLiveness: true
230+
231+
stack:
232+
- { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
233+
234+
body: |
235+
bb.0:
236+
liveins: $x10
237+
238+
; CHECK-LABEL: name: store_fi_i64_i64
239+
; CHECK: liveins: $x10
240+
; CHECK-NEXT: {{ $}}
241+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
242+
; CHECK-NEXT: SD [[COPY]], %stack.0.ptr0, 0 :: (store (s64))
243+
; CHECK-NEXT: PseudoRET
244+
%0:gprb(s64) = COPY $x10
245+
%1:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
246+
G_STORE %0(s64), %1(p0) :: (store (s64))
247+
PseudoRET
248+
249+
...

0 commit comments

Comments
 (0)