xref: /llvm-project/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir (revision eff60d83b0533954eda153fbbabb3e99d46bde94)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=riscv32 -run-pass=instruction-select %s -o - \
3# RUN:   -disable-gisel-legality-check | FileCheck %s
4#
5---
6name:            store_i8
7legalized:       true
8regBankSelected: true
9tracksRegLiveness: true
10body:            |
11  bb.0:
12    liveins: $x10, $x11, $x11
13
14    ; CHECK-LABEL: name: store_i8
15    ; CHECK: liveins: $x10, $x11, $x11
16    ; CHECK-NEXT: {{  $}}
17    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
18    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
19    ; CHECK-NEXT: SB [[COPY]], [[COPY1]], 0 :: (store (s8))
20    ; CHECK-NEXT: PseudoRET
21    %0:gprb(s32) = COPY $x10
22    %1:gprb(p0) = COPY $x11
23    G_STORE %0(s32), %1(p0) :: (store (s8))
24    PseudoRET
25
26...
27---
28name:            store_i16
29legalized:       true
30regBankSelected: true
31tracksRegLiveness: true
32body:            |
33  bb.0:
34    liveins: $x10, $x11
35
36    ; CHECK-LABEL: name: store_i16
37    ; CHECK: liveins: $x10, $x11
38    ; CHECK-NEXT: {{  $}}
39    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
40    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
41    ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16))
42    ; CHECK-NEXT: PseudoRET
43    %0:gprb(s32) = COPY $x10
44    %1:gprb(p0) = COPY $x11
45    G_STORE %0(s32), %1(p0) :: (store (s16))
46    PseudoRET
47
48...
49---
50name:            store_i8_i16
51legalized:       true
52regBankSelected: true
53tracksRegLiveness: true
54body:            |
55  bb.0:
56    liveins: $x10, $x11
57
58    ; CHECK-LABEL: name: store_i8_i16
59    ; CHECK: liveins: $x10, $x11
60    ; CHECK-NEXT: {{  $}}
61    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
62    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
63    ; CHECK-NEXT: SB [[COPY]], [[COPY1]], 0 :: (store (s8))
64    ; CHECK-NEXT: PseudoRET
65    %0:gprb(s32) = COPY $x10
66    %1:gprb(p0) = COPY $x11
67    %2:gprb(s16) = G_TRUNC %0
68    G_STORE %2(s16), %1(p0) :: (store (s8))
69    PseudoRET
70
71...
72---
73name:            store_i16_i16
74legalized:       true
75regBankSelected: true
76tracksRegLiveness: true
77body:            |
78  bb.0:
79    liveins: $x10, $x11
80
81    ; CHECK-LABEL: name: store_i16_i16
82    ; CHECK: liveins: $x10, $x11
83    ; CHECK-NEXT: {{  $}}
84    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
85    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
86    ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16))
87    ; CHECK-NEXT: PseudoRET
88    %0:gprb(s32) = COPY $x10
89    %1:gprb(p0) = COPY $x11
90    %2:gprb(s16) = G_TRUNC %0
91    G_STORE %2(s16), %1(p0) :: (store (s16))
92    PseudoRET
93
94...
95---
96name:            store_i32
97legalized:       true
98regBankSelected: true
99tracksRegLiveness: true
100body:            |
101  bb.0:
102    liveins: $x10, $x11
103
104    ; CHECK-LABEL: name: store_i32
105    ; CHECK: liveins: $x10, $x11
106    ; CHECK-NEXT: {{  $}}
107    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
108    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
109    ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (s32))
110    ; CHECK-NEXT: PseudoRET
111    %0:gprb(s32) = COPY $x10
112    %1:gprb(p0) = COPY $x11
113    G_STORE %0(s32), %1(p0) :: (store (s32))
114    PseudoRET
115
116...
117---
118name:            store_p0
119legalized:       true
120regBankSelected: true
121tracksRegLiveness: true
122body:            |
123  bb.0:
124    liveins: $x10, $x11
125
126    ; CHECK-LABEL: name: store_p0
127    ; CHECK: liveins: $x10, $x11
128    ; CHECK-NEXT: {{  $}}
129    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
130    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
131    ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (p0))
132    ; CHECK-NEXT: PseudoRET
133    %0:gprb(p0) = COPY $x10
134    %1:gprb(p0) = COPY $x11
135    G_STORE %0(p0), %1(p0) :: (store (p0))
136    PseudoRET
137
138...
139---
140name:            store_fi_i32
141legalized:       true
142regBankSelected: true
143tracksRegLiveness: true
144
145stack:
146  - { id: 0, offset: 0, size: 4, alignment: 4 }
147
148body:            |
149  bb.0:
150    liveins: $x10
151
152    ; CHECK-LABEL: name: store_fi_i32
153    ; CHECK: liveins: $x10
154    ; CHECK-NEXT: {{  $}}
155    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
156    ; CHECK-NEXT: SW [[COPY]], %stack.0, 0 :: (store (s32))
157    ; CHECK-NEXT: PseudoRET
158    %0:gprb(s32) = COPY $x10
159    %1:gprb(p0) = G_FRAME_INDEX %stack.0
160    G_STORE %0(s32), %1(p0) :: (store (s32))
161    PseudoRET
162
163...
164---
165name:            store_fi_gep_i32
166legalized:       true
167regBankSelected: true
168tracksRegLiveness: true
169
170stack:
171  - { id: 0, offset: 0, size: 8, alignment: 4 }
172
173body:            |
174  bb.0:
175    liveins: $x10
176
177    ; CHECK-LABEL: name: store_fi_gep_i32
178    ; CHECK: liveins: $x10
179    ; CHECK-NEXT: {{  $}}
180    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
181    ; CHECK-NEXT: SW [[COPY]], %stack.0, 4 :: (store (s32))
182    ; CHECK-NEXT: PseudoRET
183    %0:gprb(s32) = COPY $x10
184    %1:gprb(p0) = G_FRAME_INDEX %stack.0
185    %2:gprb(s32) = G_CONSTANT i32 4
186    %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s32)
187    G_STORE %0(s32), %3(p0) :: (store (s32))
188    PseudoRET
189
190...
191---
192name:            store_gep_i32
193legalized:       true
194regBankSelected: true
195tracksRegLiveness: true
196body:            |
197  bb.0:
198    liveins: $x10, $x11
199
200    ; CHECK-LABEL: name: store_gep_i32
201    ; CHECK: liveins: $x10, $x11
202    ; CHECK-NEXT: {{  $}}
203    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
204    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
205    ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 4 :: (store (s32))
206    ; CHECK-NEXT: PseudoRET
207    %0:gprb(s32) = COPY $x10
208    %1:gprb(p0) = COPY $x11
209    %2:gprb(s32) = G_CONSTANT i32 4
210    %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s32)
211    G_STORE %0(s32), %3(p0) :: (store (s32))
212    PseudoRET
213
214...
215