Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / load-rv64.mir
blob357c1895b158e2d225a217c0a2796d7e0fe140e8
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=regbankselect \
3 # RUN:   -disable-gisel-legality-check -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefix=RV64I %s
6 ---
7 name:            load_i8
8 legalized:       true
9 tracksRegLiveness: true
10 body:             |
11   bb.0:
12     liveins: $x10
14     ; RV64I-LABEL: name: load_i8
15     ; RV64I: liveins: $x10
16     ; RV64I-NEXT: {{  $}}
17     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
18     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
19     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[LOAD]](s32)
20     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
21     ; RV64I-NEXT: PseudoRET implicit $x10
22     %0:_(p0) = COPY $x10
23     %3:_(s32) = G_LOAD %0(p0) :: (load (s8))
24     %2:_(s64) = G_ANYEXT %3(s32)
25     $x10 = COPY %2(s64)
26     PseudoRET implicit $x10
28 ...
29 ---
30 name:            load_i16
31 legalized:       true
32 tracksRegLiveness: true
33 body:             |
34   bb.0:
35     liveins: $x10
37     ; RV64I-LABEL: name: load_i16
38     ; RV64I: liveins: $x10
39     ; RV64I-NEXT: {{  $}}
40     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
41     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s16))
42     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[LOAD]](s32)
43     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
44     ; RV64I-NEXT: PseudoRET implicit $x10
45     %0:_(p0) = COPY $x10
46     %3:_(s32) = G_LOAD %0(p0) :: (load (s16))
47     %2:_(s64) = G_ANYEXT %3(s32)
48     $x10 = COPY %2(s64)
49     PseudoRET implicit $x10
51 ...
52 ---
53 name:            load_i32
54 legalized:       true
55 tracksRegLiveness: true
56 body:             |
57   bb.0:
58     liveins: $x10
60     ; RV64I-LABEL: name: load_i32
61     ; RV64I: liveins: $x10
62     ; RV64I-NEXT: {{  $}}
63     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
64     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
65     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[LOAD]](s32)
66     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
67     ; RV64I-NEXT: PseudoRET implicit $x10
68     %0:_(p0) = COPY $x10
69     %1:_(s32) = G_LOAD %0(p0) :: (load (s32))
70     %2:_(s64) = G_ANYEXT %1(s32)
71     $x10 = COPY %2(s64)
72     PseudoRET implicit $x10
74 ...
75 ---
76 name:            load_i64
77 legalized:       true
78 tracksRegLiveness: true
79 body:             |
80   bb.0:
81     liveins: $x10
83     ; RV64I-LABEL: name: load_i64
84     ; RV64I: liveins: $x10
85     ; RV64I-NEXT: {{  $}}
86     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
87     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(s64) = G_LOAD [[COPY]](p0) :: (load (s64))
88     ; RV64I-NEXT: $x10 = COPY [[LOAD]](s64)
89     ; RV64I-NEXT: PseudoRET implicit $x10
90     %0:_(p0) = COPY $x10
91     %1:_(s64) = G_LOAD %0(p0) :: (load (s64))
92     $x10 = COPY %1(s64)
93     PseudoRET implicit $x10
95 ...
96 ---
97 name:            load_ptr
98 legalized:       true
99 tracksRegLiveness: true
100 body:             |
101   bb.0:
102     liveins: $x10
104     ; RV64I-LABEL: name: load_ptr
105     ; RV64I: liveins: $x10
106     ; RV64I-NEXT: {{  $}}
107     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
108     ; RV64I-NEXT: [[LOAD:%[0-9]+]]:gprb(p0) = G_LOAD [[COPY]](p0) :: (load (p0))
109     ; RV64I-NEXT: $x10 = COPY [[LOAD]](p0)
110     ; RV64I-NEXT: PseudoRET implicit $x10
111     %0:_(p0) = COPY $x10
112     %1:_(p0) = G_LOAD %0(p0) :: (load (p0))
113     $x10 = COPY %1(p0)
114     PseudoRET implicit $x10
118 name:            zextload_i8
119 legalized:       true
120 tracksRegLiveness: true
121 body:             |
122   bb.0:
123     liveins: $x10
125     %0:_(p0) = COPY $x10
126     %3:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s8))
127     %2:_(s64) = G_ANYEXT %3(s32)
128     $x10 = COPY %2(s64)
129     PseudoRET implicit $x10
133 name:            zextload_i16
134 legalized:       true
135 tracksRegLiveness: true
136 body:             |
137   bb.0:
138     liveins: $x10
140     ; RV64I-LABEL: name: zextload_i16
141     ; RV64I: liveins: $x10
142     ; RV64I-NEXT: {{  $}}
143     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
144     ; RV64I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))
145     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[ZEXTLOAD]](s32)
146     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
147     ; RV64I-NEXT: PseudoRET implicit $x10
148     %0:_(p0) = COPY $x10
149     %3:_(s32) = G_ZEXTLOAD %0(p0) :: (load (s16))
150     %2:_(s64) = G_ANYEXT %3(s32)
151     $x10 = COPY %2(s64)
152     PseudoRET implicit $x10
156 name:            zextload_i32
157 legalized:       true
158 tracksRegLiveness: true
159 body:             |
160   bb.0:
161     liveins: $x10
163     ; RV64I-LABEL: name: zextload_i32
164     ; RV64I: liveins: $x10
165     ; RV64I-NEXT: {{  $}}
166     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
167     ; RV64I-NEXT: [[ZEXTLOAD:%[0-9]+]]:gprb(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s32))
168     ; RV64I-NEXT: $x10 = COPY [[ZEXTLOAD]](s64)
169     ; RV64I-NEXT: PseudoRET implicit $x10
170     %0:_(p0) = COPY $x10
171     %1:_(s64) = G_ZEXTLOAD %0(p0) :: (load (s32))
172     $x10 = COPY %1(s64)
173     PseudoRET implicit $x10
177 name:            sextload_i8
178 legalized:       true
179 tracksRegLiveness: true
180 body:             |
181   bb.0:
182     liveins: $x10
184     %0:_(p0) = COPY $x10
185     %3:_(s32) = G_SEXTLOAD %0(p0) :: (load (s8))
186     %2:_(s64) = G_ANYEXT %3(s32)
187     $x10 = COPY %2(s64)
188     PseudoRET implicit $x10
192 name:            sextload_i16
193 legalized:       true
194 tracksRegLiveness: true
195 body:             |
196   bb.0:
197     liveins: $x10
199     ; RV64I-LABEL: name: sextload_i16
200     ; RV64I: liveins: $x10
201     ; RV64I-NEXT: {{  $}}
202     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
203     ; RV64I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16))
204     ; RV64I-NEXT: [[ANYEXT:%[0-9]+]]:gprb(s64) = G_ANYEXT [[SEXTLOAD]](s32)
205     ; RV64I-NEXT: $x10 = COPY [[ANYEXT]](s64)
206     ; RV64I-NEXT: PseudoRET implicit $x10
207     %0:_(p0) = COPY $x10
208     %3:_(s32) = G_SEXTLOAD %0(p0) :: (load (s16))
209     %2:_(s64) = G_ANYEXT %3(s32)
210     $x10 = COPY %2(s64)
211     PseudoRET implicit $x10
215 name:            sextload_i32
216 legalized:       true
217 tracksRegLiveness: true
218 body:             |
219   bb.0:
220     liveins: $x10
222     ; RV64I-LABEL: name: sextload_i32
223     ; RV64I: liveins: $x10
224     ; RV64I-NEXT: {{  $}}
225     ; RV64I-NEXT: [[COPY:%[0-9]+]]:gprb(p0) = COPY $x10
226     ; RV64I-NEXT: [[SEXTLOAD:%[0-9]+]]:gprb(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s32))
227     ; RV64I-NEXT: $x10 = COPY [[SEXTLOAD]](s64)
228     ; RV64I-NEXT: PseudoRET implicit $x10
229     %0:_(p0) = COPY $x10
230     %1:_(s64) = G_SEXTLOAD %0(p0) :: (load (s32))
231     $x10 = COPY %1(s64)
232     PseudoRET implicit $x10