Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / instruction-select / store-rv32.mir
blobd320fb755da97a369755a64b7ad605ee5cf3957b
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: | FileCheck %s
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   define void @store_fi_gep_i32(ptr %val) {
15     %ptr0 = alloca [2 x i32]
16     ret void
17   }
18   define void @store_gep_i32(i32 %val, ptr %addr) { ret void }
19 ...
20 ---
21 name:            store_i8
22 legalized:       true
23 regBankSelected: true
24 tracksRegLiveness: true
25 body:            |
26   bb.0:
27     liveins: $x10, $x11, $x11
29     ; CHECK-LABEL: name: store_i8
30     ; CHECK: liveins: $x10, $x11, $x11
31     ; CHECK-NEXT: {{  $}}
32     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
33     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
34     ; CHECK-NEXT: SB [[COPY]], [[COPY1]], 0 :: (store (s8))
35     ; CHECK-NEXT: PseudoRET
36     %0:gprb(s32) = COPY $x10
37     %1:gprb(p0) = COPY $x11
38     G_STORE %0(s32), %1(p0) :: (store (s8))
39     PseudoRET
41 ...
42 ---
43 name:            store_i16
44 legalized:       true
45 regBankSelected: true
46 tracksRegLiveness: true
47 body:            |
48   bb.0:
49     liveins: $x10, $x11
51     ; CHECK-LABEL: name: store_i16
52     ; CHECK: liveins: $x10, $x11
53     ; CHECK-NEXT: {{  $}}
54     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
55     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
56     ; CHECK-NEXT: SH [[COPY]], [[COPY1]], 0 :: (store (s16))
57     ; CHECK-NEXT: PseudoRET
58     %0:gprb(s32) = COPY $x10
59     %1:gprb(p0) = COPY $x11
60     G_STORE %0(s32), %1(p0) :: (store (s16))
61     PseudoRET
63 ...
64 ---
65 name:            store_i32
66 legalized:       true
67 regBankSelected: true
68 tracksRegLiveness: true
69 body:            |
70   bb.0:
71     liveins: $x10, $x11
73     ; CHECK-LABEL: name: store_i32
74     ; CHECK: liveins: $x10, $x11
75     ; CHECK-NEXT: {{  $}}
76     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
77     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
78     ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (s32))
79     ; CHECK-NEXT: PseudoRET
80     %0:gprb(s32) = COPY $x10
81     %1:gprb(p0) = COPY $x11
82     G_STORE %0(s32), %1(p0) :: (store (s32))
83     PseudoRET
85 ...
86 ---
87 name:            store_p0
88 legalized:       true
89 regBankSelected: true
90 tracksRegLiveness: true
91 body:            |
92   bb.0:
93     liveins: $x10, $x11
95     ; CHECK-LABEL: name: store_p0
96     ; CHECK: liveins: $x10, $x11
97     ; CHECK-NEXT: {{  $}}
98     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
99     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
100     ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 0 :: (store (p0))
101     ; CHECK-NEXT: PseudoRET
102     %0:gprb(p0) = COPY $x10
103     %1:gprb(p0) = COPY $x11
104     G_STORE %0(p0), %1(p0) :: (store (p0))
105     PseudoRET
109 name:            store_fi_i32
110 legalized:       true
111 regBankSelected: true
112 tracksRegLiveness: true
114 stack:
115   - { id: 0, name: ptr0, offset: 0, size: 4, alignment: 4 }
117 body:            |
118   bb.0:
119     liveins: $x10
121     ; CHECK-LABEL: name: store_fi_i32
122     ; CHECK: liveins: $x10
123     ; CHECK-NEXT: {{  $}}
124     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
125     ; CHECK-NEXT: SW [[COPY]], %stack.0.ptr0, 0 :: (store (s32))
126     ; CHECK-NEXT: PseudoRET
127     %0:gprb(s32) = COPY $x10
128     %1:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
129     G_STORE %0(s32), %1(p0) :: (store (s32))
130     PseudoRET
134 name:            store_fi_gep_i32
135 legalized:       true
136 regBankSelected: true
137 tracksRegLiveness: true
139 stack:
140   - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 4 }
142 body:            |
143   bb.0:
144     liveins: $x10
146     ; CHECK-LABEL: name: store_fi_gep_i32
147     ; CHECK: liveins: $x10
148     ; CHECK-NEXT: {{  $}}
149     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
150     ; CHECK-NEXT: SW [[COPY]], %stack.0.ptr0, 4 :: (store (s32))
151     ; CHECK-NEXT: PseudoRET
152     %0:gprb(s32) = COPY $x10
153     %1:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
154     %2:gprb(s32) = G_CONSTANT i32 4
155     %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s32)
156     G_STORE %0(s32), %3(p0) :: (store (s32))
157     PseudoRET
161 name:            store_gep_i32
162 legalized:       true
163 regBankSelected: true
164 tracksRegLiveness: true
165 body:            |
166   bb.0:
167     liveins: $x10, $x11
169     ; CHECK-LABEL: name: store_gep_i32
170     ; CHECK: liveins: $x10, $x11
171     ; CHECK-NEXT: {{  $}}
172     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
173     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
174     ; CHECK-NEXT: SW [[COPY]], [[COPY1]], 4 :: (store (s32))
175     ; CHECK-NEXT: PseudoRET
176     %0:gprb(s32) = COPY $x10
177     %1:gprb(p0) = COPY $x11
178     %2:gprb(s32) = G_CONSTANT i32 4
179     %3:gprb(p0) = G_PTR_ADD %1(p0), %2(s32)
180     G_STORE %0(s32), %3(p0) :: (store (s32))
181     PseudoRET