[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-sextload-global.mir
blob181cd132e91d9a417a1d6ab3f99d578570940053
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=legalizer -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - 2> %t %s | FileCheck -check-prefix=GFX8 %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -global-isel-abort=2 -o - %s | FileCheck -check-prefix=GFX6  %s
4 # RUN: FileCheck -check-prefixes=ERR %s < %t
6 # FIXME: Run with and without unaligned access turned on
8 # ERR-NOT: remark
9 # ERR: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s16>) = G_SEXTLOAD %0:_(p1) :: (load (<2 x s8>), addrspace 1) (in function: test_sextload_global_v2i16_from_v2s8)
10 # ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s32>) = G_SEXTLOAD %0:_(p1) :: (load (<2 x s8>), addrspace 1) (in function: test_sextload_global_v2i32_from_v2s8)
11 # ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s32>) = G_SEXTLOAD %0:_(p1) :: (load (<2 x s16>), addrspace 1) (in function: test_sextload_global_v2i32_from_v2s16)
12 # ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s64>) = G_SEXTLOAD %0:_(p1) :: (load (<2 x s16>), addrspace 1) (in function: test_sextload_global_v2i64_from_v2s16)
13 # ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s64>) = G_SEXTLOAD %0:_(p1) :: (load (<2 x s32>), addrspace 1) (in function: test_sextload_global_v2i64_from_v2s32)
14 # ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(s128) = G_SEXTLOAD %0:_(p1) :: (load (s64), addrspace 1) (in function: test_sextload_global_s128_8)
15 # ERR-NOT: remark
17 ---
18 name: test_sextload_global_i32_i1
19 body: |
20   bb.0:
21     liveins: $vgpr0_vgpr1
23     ; GFX8-LABEL: name: test_sextload_global_i32_i1
24     ; GFX8: liveins: $vgpr0_vgpr1
25     ; GFX8-NEXT: {{  $}}
26     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
27     ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)
28     ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 1
29     ; GFX8-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
30     ; GFX6-LABEL: name: test_sextload_global_i32_i1
31     ; GFX6: liveins: $vgpr0_vgpr1
32     ; GFX6-NEXT: {{  $}}
33     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
34     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)
35     ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 1
36     ; GFX6-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
37     %0:_(p1) = COPY $vgpr0_vgpr1
38     %1:_(s32) = G_SEXTLOAD %0 :: (load (s1), addrspace 1)
39     $vgpr0 = COPY %1
40 ...
42 ---
43 name: test_sextload_global_i32_i7
44 body: |
45   bb.0:
46     liveins: $vgpr0_vgpr1
48     ; GFX8-LABEL: name: test_sextload_global_i32_i7
49     ; GFX8: liveins: $vgpr0_vgpr1
50     ; GFX8-NEXT: {{  $}}
51     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
52     ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)
53     ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 7
54     ; GFX8-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
55     ; GFX6-LABEL: name: test_sextload_global_i32_i7
56     ; GFX6: liveins: $vgpr0_vgpr1
57     ; GFX6-NEXT: {{  $}}
58     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
59     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)
60     ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 7
61     ; GFX6-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
62     %0:_(p1) = COPY $vgpr0_vgpr1
63     %1:_(s32) = G_SEXTLOAD %0 :: (load (s7), addrspace 1)
64     $vgpr0 = COPY %1
65 ...
66 ---
67 name: test_sextload_global_i32_i24
68 body: |
69   bb.0:
70     liveins: $vgpr0_vgpr1
72     ; GFX8-LABEL: name: test_sextload_global_i32_i24
73     ; GFX8: liveins: $vgpr0_vgpr1
74     ; GFX8-NEXT: {{  $}}
75     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
76     ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)
77     ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
78     ; GFX8-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64)
79     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 2, align 2, addrspace 1)
80     ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
81     ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[SEXTLOAD]], [[C1]](s32)
82     ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]
83     ; GFX8-NEXT: $vgpr0 = COPY [[OR]](s32)
84     ; GFX6-LABEL: name: test_sextload_global_i32_i24
85     ; GFX6: liveins: $vgpr0_vgpr1
86     ; GFX6-NEXT: {{  $}}
87     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
88     ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)
89     ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
90     ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64)
91     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 2, align 2, addrspace 1)
92     ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
93     ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[SEXTLOAD]], [[C1]](s32)
94     ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]
95     ; GFX6-NEXT: $vgpr0 = COPY [[OR]](s32)
96     %0:_(p1) = COPY $vgpr0_vgpr1
97     %1:_(s32) = G_SEXTLOAD %0 :: (load (s24), addrspace 1)
98     $vgpr0 = COPY %1
99 ...
102 name: test_sextload_global_i32_i30
103 body: |
104   bb.0:
105     liveins: $vgpr0_vgpr1
107     ; GFX8-LABEL: name: test_sextload_global_i32_i30
108     ; GFX8: liveins: $vgpr0_vgpr1
109     ; GFX8-NEXT: {{  $}}
110     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
111     ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
112     ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 30
113     ; GFX8-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
114     ; GFX6-LABEL: name: test_sextload_global_i32_i30
115     ; GFX6: liveins: $vgpr0_vgpr1
116     ; GFX6-NEXT: {{  $}}
117     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
118     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
119     ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 30
120     ; GFX6-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
121     %0:_(p1) = COPY $vgpr0_vgpr1
122     %1:_(s32) = G_SEXTLOAD %0 :: (load (s30), addrspace 1)
123     $vgpr0 = COPY %1
127 name: test_sextload_global_i32_i31
128 body: |
129   bb.0:
130     liveins: $vgpr0_vgpr1
132     ; GFX8-LABEL: name: test_sextload_global_i32_i31
133     ; GFX8: liveins: $vgpr0_vgpr1
134     ; GFX8-NEXT: {{  $}}
135     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
136     ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
137     ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 31
138     ; GFX8-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
139     ; GFX6-LABEL: name: test_sextload_global_i32_i31
140     ; GFX6: liveins: $vgpr0_vgpr1
141     ; GFX6-NEXT: {{  $}}
142     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
143     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
144     ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 31
145     ; GFX6-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
146     %0:_(p1) = COPY $vgpr0_vgpr1
147     %1:_(s32) = G_SEXTLOAD %0 :: (load (s31), addrspace 1)
148     $vgpr0 = COPY %1
152 name: test_sextload_global_i32_i8
153 body: |
154   bb.0:
155     liveins: $vgpr0_vgpr1
157     ; GFX8-LABEL: name: test_sextload_global_i32_i8
158     ; GFX8: liveins: $vgpr0_vgpr1
159     ; GFX8-NEXT: {{  $}}
160     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
161     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
162     ; GFX8-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
163     ; GFX6-LABEL: name: test_sextload_global_i32_i8
164     ; GFX6: liveins: $vgpr0_vgpr1
165     ; GFX6-NEXT: {{  $}}
166     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
167     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
168     ; GFX6-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
169     %0:_(p1) = COPY $vgpr0_vgpr1
170     %1:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)
171     $vgpr0 = COPY %1
175 name: test_sextload_global_i32_i16
176 body: |
177   bb.0:
178     liveins: $vgpr0_vgpr1
180     ; GFX8-LABEL: name: test_sextload_global_i32_i16
181     ; GFX8: liveins: $vgpr0_vgpr1
182     ; GFX8-NEXT: {{  $}}
183     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
184     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)
185     ; GFX8-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
186     ; GFX6-LABEL: name: test_sextload_global_i32_i16
187     ; GFX6: liveins: $vgpr0_vgpr1
188     ; GFX6-NEXT: {{  $}}
189     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
190     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)
191     ; GFX6-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
192     %0:_(p1) = COPY $vgpr0_vgpr1
193     %1:_(s32) = G_SEXTLOAD %0 :: (load (s16), addrspace 1)
194     $vgpr0 = COPY %1
197 name: test_sextload_global_i31_i8
198 body: |
199   bb.0:
200     liveins: $vgpr0_vgpr1
202     ; GFX8-LABEL: name: test_sextload_global_i31_i8
203     ; GFX8: liveins: $vgpr0_vgpr1
204     ; GFX8-NEXT: {{  $}}
205     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
206     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
207     ; GFX8-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
208     ; GFX6-LABEL: name: test_sextload_global_i31_i8
209     ; GFX6: liveins: $vgpr0_vgpr1
210     ; GFX6-NEXT: {{  $}}
211     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
212     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
213     ; GFX6-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
214     %0:_(p1) = COPY $vgpr0_vgpr1
215     %1:_(s31) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)
216     %2:_(s32) = G_ANYEXT %1
217     $vgpr0 = COPY %2
220 name: test_sextload_global_i64_i8
221 body: |
222   bb.0:
223     liveins: $vgpr0_vgpr1
225     ; GFX8-LABEL: name: test_sextload_global_i64_i8
226     ; GFX8: liveins: $vgpr0_vgpr1
227     ; GFX8-NEXT: {{  $}}
228     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
229     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
230     ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32)
231     ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
232     ; GFX6-LABEL: name: test_sextload_global_i64_i8
233     ; GFX6: liveins: $vgpr0_vgpr1
234     ; GFX6-NEXT: {{  $}}
235     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
236     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
237     ; GFX6-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32)
238     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
239     %0:_(p1) = COPY $vgpr0_vgpr1
240     %1:_(s64) = G_SEXTLOAD %0 :: (load (s8), addrspace 1)
241     $vgpr0_vgpr1 = COPY %1
244 name: test_sextload_global_i64_i16
245 body: |
246   bb.0:
247     liveins: $vgpr0_vgpr1
249     ; GFX8-LABEL: name: test_sextload_global_i64_i16
250     ; GFX8: liveins: $vgpr0_vgpr1
251     ; GFX8-NEXT: {{  $}}
252     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
253     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)
254     ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32)
255     ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
256     ; GFX6-LABEL: name: test_sextload_global_i64_i16
257     ; GFX6: liveins: $vgpr0_vgpr1
258     ; GFX6-NEXT: {{  $}}
259     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
260     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)
261     ; GFX6-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32)
262     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
263     %0:_(p1) = COPY $vgpr0_vgpr1
264     %1:_(s64) = G_SEXTLOAD %0 :: (load (s16), addrspace 1)
265     $vgpr0_vgpr1 = COPY %1
268 name: test_sextload_global_i64_i32
269 body: |
270   bb.0:
271     liveins: $vgpr0_vgpr1
273     ; GFX8-LABEL: name: test_sextload_global_i64_i32
274     ; GFX8: liveins: $vgpr0_vgpr1
275     ; GFX8-NEXT: {{  $}}
276     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
277     ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
278     ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[LOAD]](s32)
279     ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
280     ; GFX6-LABEL: name: test_sextload_global_i64_i32
281     ; GFX6: liveins: $vgpr0_vgpr1
282     ; GFX6-NEXT: {{  $}}
283     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
284     ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
285     ; GFX6-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[LOAD]](s32)
286     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
287     %0:_(p1) = COPY $vgpr0_vgpr1
288     %1:_(s64) = G_SEXTLOAD %0 :: (load (s32), addrspace 1)
289     $vgpr0_vgpr1 = COPY %1
293 name: test_sextload_global_s32_from_2_align1
294 body: |
295   bb.0:
296     liveins: $vgpr0_vgpr1
298     ; GFX8-LABEL: name: test_sextload_global_s32_from_2_align1
299     ; GFX8: liveins: $vgpr0_vgpr1
300     ; GFX8-NEXT: {{  $}}
301     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
302     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), align 1, addrspace 1)
303     ; GFX8-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
304     ; GFX6-LABEL: name: test_sextload_global_s32_from_2_align1
305     ; GFX6: liveins: $vgpr0_vgpr1
306     ; GFX6-NEXT: {{  $}}
307     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
308     ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
309     ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
310     ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64)
311     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 1, addrspace 1)
312     ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
313     ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[SEXTLOAD]], [[C1]](s32)
314     ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]
315     ; GFX6-NEXT: $vgpr0 = COPY [[OR]](s32)
316     %0:_(p1) = COPY $vgpr0_vgpr1
317     %1:_(s32) = G_SEXTLOAD %0 :: (load (s16), align 1, addrspace 1)
318     $vgpr0 = COPY %1
322 name: test_sextload_global_s64_from_2_align1
323 body: |
324   bb.0:
325     liveins: $vgpr0_vgpr1
327     ; GFX8-LABEL: name: test_sextload_global_s64_from_2_align1
328     ; GFX8: liveins: $vgpr0_vgpr1
329     ; GFX8-NEXT: {{  $}}
330     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
331     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), align 1, addrspace 1)
332     ; GFX8-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32)
333     ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
334     ; GFX6-LABEL: name: test_sextload_global_s64_from_2_align1
335     ; GFX6: liveins: $vgpr0_vgpr1
336     ; GFX6-NEXT: {{  $}}
337     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
338     ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
339     ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
340     ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64)
341     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 1, addrspace 1)
342     ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
343     ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[SEXTLOAD]], [[C1]](s32)
344     ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]
345     ; GFX6-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[OR]](s32)
346     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
347     %0:_(p1) = COPY $vgpr0_vgpr1
348     %1:_(s64) = G_SEXTLOAD %0 :: (load (s16), align 1, addrspace 1)
349     $vgpr0_vgpr1 = COPY %1
353 name: test_sextload_global_v2i16_from_v2s8
354 body: |
355   bb.0:
356     liveins: $vgpr0_vgpr1
358     ; GFX8-LABEL: name: test_sextload_global_v2i16_from_v2s8
359     ; GFX8: liveins: $vgpr0_vgpr1
360     ; GFX8-NEXT: {{  $}}
361     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
362     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s16>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)
363     ; GFX8-NEXT: $vgpr0 = COPY [[SEXTLOAD]](<2 x s16>)
364     ; GFX6-LABEL: name: test_sextload_global_v2i16_from_v2s8
365     ; GFX6: liveins: $vgpr0_vgpr1
366     ; GFX6-NEXT: {{  $}}
367     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
368     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s16>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)
369     ; GFX6-NEXT: $vgpr0 = COPY [[SEXTLOAD]](<2 x s16>)
370     %0:_(p1) = COPY $vgpr0_vgpr1
371     %1:_(<2 x s16>) = G_SEXTLOAD %0 :: (load (<2 x s8>), addrspace 1)
372     $vgpr0 = COPY %1
376 name: test_sextload_global_v2i32_from_v2s8
377 body: |
378   bb.0:
379     liveins: $vgpr0_vgpr1
381     ; GFX8-LABEL: name: test_sextload_global_v2i32_from_v2s8
382     ; GFX8: liveins: $vgpr0_vgpr1
383     ; GFX8-NEXT: {{  $}}
384     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
385     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)
386     ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SEXTLOAD]](<2 x s32>)
387     ; GFX6-LABEL: name: test_sextload_global_v2i32_from_v2s8
388     ; GFX6: liveins: $vgpr0_vgpr1
389     ; GFX6-NEXT: {{  $}}
390     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
391     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)
392     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SEXTLOAD]](<2 x s32>)
393     %0:_(p1) = COPY $vgpr0_vgpr1
394     %1:_(<2 x s32>) = G_SEXTLOAD %0 :: (load (<2 x s8>), addrspace 1)
395     $vgpr0_vgpr1 = COPY %1
399 name: test_sextload_global_v2i32_from_v2s16
400 body: |
401   bb.0:
402     liveins: $vgpr0_vgpr1
404     ; GFX8-LABEL: name: test_sextload_global_v2i32_from_v2s16
405     ; GFX8: liveins: $vgpr0_vgpr1
406     ; GFX8-NEXT: {{  $}}
407     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
408     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)
409     ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SEXTLOAD]](<2 x s32>)
410     ; GFX6-LABEL: name: test_sextload_global_v2i32_from_v2s16
411     ; GFX6: liveins: $vgpr0_vgpr1
412     ; GFX6-NEXT: {{  $}}
413     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
414     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)
415     ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SEXTLOAD]](<2 x s32>)
416     %0:_(p1) = COPY $vgpr0_vgpr1
417     %1:_(<2 x s32>) = G_SEXTLOAD %0 :: (load (<2 x s16>), addrspace 1)
418     $vgpr0_vgpr1 = COPY %1
422 name: test_sextload_global_v2i64_from_v2s16
423 body: |
424   bb.0:
425     liveins: $vgpr0_vgpr1
427     ; GFX8-LABEL: name: test_sextload_global_v2i64_from_v2s16
428     ; GFX8: liveins: $vgpr0_vgpr1
429     ; GFX8-NEXT: {{  $}}
430     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
431     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)
432     ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[SEXTLOAD]](<2 x s64>)
433     ; GFX6-LABEL: name: test_sextload_global_v2i64_from_v2s16
434     ; GFX6: liveins: $vgpr0_vgpr1
435     ; GFX6-NEXT: {{  $}}
436     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
437     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)
438     ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[SEXTLOAD]](<2 x s64>)
439     %0:_(p1) = COPY $vgpr0_vgpr1
440     %1:_(<2 x s64>) = G_SEXTLOAD %0 :: (load (<2 x s16>), addrspace 1)
441     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
445 name: test_sextload_global_v2i64_from_v2s32
446 body: |
447   bb.0:
448     liveins: $vgpr0_vgpr1
450     ; GFX8-LABEL: name: test_sextload_global_v2i64_from_v2s32
451     ; GFX8: liveins: $vgpr0_vgpr1
452     ; GFX8-NEXT: {{  $}}
453     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
454     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s32>), addrspace 1)
455     ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[SEXTLOAD]](<2 x s64>)
456     ; GFX6-LABEL: name: test_sextload_global_v2i64_from_v2s32
457     ; GFX6: liveins: $vgpr0_vgpr1
458     ; GFX6-NEXT: {{  $}}
459     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
460     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_SEXTLOAD [[COPY]](p1) :: (load (<2 x s32>), addrspace 1)
461     ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[SEXTLOAD]](<2 x s64>)
462     %0:_(p1) = COPY $vgpr0_vgpr1
463     %1:_(<2 x s64>) = G_SEXTLOAD %0 :: (load (<2 x s32>), addrspace 1)
464     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
468 name: test_sextload_global_s128_8
469 body: |
470   bb.0:
471     liveins: $vgpr0_vgpr1
473     ; GFX8-LABEL: name: test_sextload_global_s128_8
474     ; GFX8: liveins: $vgpr0_vgpr1
475     ; GFX8-NEXT: {{  $}}
476     ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
477     ; GFX8-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s128) = G_SEXTLOAD [[COPY]](p1) :: (load (s64), addrspace 1)
478     ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[SEXTLOAD]](s128)
479     ; GFX6-LABEL: name: test_sextload_global_s128_8
480     ; GFX6: liveins: $vgpr0_vgpr1
481     ; GFX6-NEXT: {{  $}}
482     ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
483     ; GFX6-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s128) = G_SEXTLOAD [[COPY]](p1) :: (load (s64), addrspace 1)
484     ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[SEXTLOAD]](s128)
485     %0:_(p1) = COPY $vgpr0_vgpr1
486     %1:_(s128) = G_SEXTLOAD %0 :: (load (s64), addrspace 1)
487     $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1