1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -global-isel -march=amdgcn -mcpu=fiji -run-pass=regbankselect -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX8 %s
3# RUN: llc -global-isel -march=amdgcn -mcpu=gfx900 -run-pass=regbankselect -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9 %s
4# RUN: llc -global-isel -march=amdgcn -mcpu=gfx1010 -run-pass=regbankselect -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s
5---
6name: constant_load_i8_align8
7legalized: true
8
9body: |
10 bb.0:
11   liveins: $sgpr0_sgpr1
12    ; GFX8-LABEL: name: constant_load_i8_align8
13    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
14    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4)
15    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
16    ; GFX9-LABEL: name: constant_load_i8_align8
17    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
18    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4)
19    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
20    ; GFX10-LABEL: name: constant_load_i8_align8
21    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
22    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), align 8, addrspace 4)
23    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
24   %0:_(p1) = COPY $sgpr0_sgpr1
25   %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 8, addrspace 4)
26   S_ENDPGM 0, implicit %1
27...
28---
29name: constant_load_i8_align4
30legalized: true
31
32body: |
33 bb.0:
34   liveins: $sgpr0_sgpr1
35    ; GFX8-LABEL: name: constant_load_i8_align4
36    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
37    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
38    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
39    ; GFX9-LABEL: name: constant_load_i8_align4
40    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
41    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
42    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
43    ; GFX10-LABEL: name: constant_load_i8_align4
44    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
45    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
46    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
47   %0:_(p1) = COPY $sgpr0_sgpr1
48   %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 4, addrspace 4)
49   S_ENDPGM 0, implicit %1
50...
51---
52name: constant_load_i16_align4
53legalized: true
54
55body: |
56 bb.0:
57   liveins: $sgpr0_sgpr1
58    ; GFX8-LABEL: name: constant_load_i16_align4
59    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
60    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
61    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
62    ; GFX9-LABEL: name: constant_load_i16_align4
63    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
64    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
65    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
66    ; GFX10-LABEL: name: constant_load_i16_align4
67    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
68    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
69    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
70   %0:_(p1) = COPY $sgpr0_sgpr1
71   %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 4, addrspace 4)
72   S_ENDPGM 0, implicit %1
73...
74---
75name: constant_sextload_i8_align4
76legalized: true
77
78body: |
79 bb.0:
80   liveins: $sgpr0_sgpr1
81    ; GFX8-LABEL: name: constant_sextload_i8_align4
82    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
83    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
84    ; GFX8: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8
85    ; GFX8: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
86    ; GFX9-LABEL: name: constant_sextload_i8_align4
87    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
88    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
89    ; GFX9: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8
90    ; GFX9: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
91    ; GFX10-LABEL: name: constant_sextload_i8_align4
92    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
93    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
94    ; GFX10: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8
95    ; GFX10: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
96   %0:_(p1) = COPY $sgpr0_sgpr1
97   %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 4)
98   S_ENDPGM 0, implicit %1
99...
100---
101name: constant_sextload_i16_align4
102legalized: true
103
104body: |
105 bb.0:
106   liveins: $sgpr0_sgpr1
107    ; GFX8-LABEL: name: constant_sextload_i16_align4
108    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
109    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
110    ; GFX8: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16
111    ; GFX8: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
112    ; GFX9-LABEL: name: constant_sextload_i16_align4
113    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
114    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
115    ; GFX9: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16
116    ; GFX9: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
117    ; GFX10-LABEL: name: constant_sextload_i16_align4
118    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
119    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
120    ; GFX10: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 16
121    ; GFX10: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
122   %0:_(p1) = COPY $sgpr0_sgpr1
123   %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 4)
124   S_ENDPGM 0, implicit %1
125...
126
127---
128name: constant_zextload_i8_align4
129legalized: true
130
131body: |
132 bb.0:
133   liveins: $sgpr0_sgpr1
134    ; GFX8-LABEL: name: constant_zextload_i8_align4
135    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
136    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
137    ; GFX8: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255
138    ; GFX8: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
139    ; GFX8: S_ENDPGM 0, implicit [[AND]](s32)
140    ; GFX9-LABEL: name: constant_zextload_i8_align4
141    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
142    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
143    ; GFX9: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255
144    ; GFX9: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
145    ; GFX9: S_ENDPGM 0, implicit [[AND]](s32)
146    ; GFX10-LABEL: name: constant_zextload_i8_align4
147    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
148    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
149    ; GFX10: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 255
150    ; GFX10: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
151    ; GFX10: S_ENDPGM 0, implicit [[AND]](s32)
152   %0:_(p1) = COPY $sgpr0_sgpr1
153   %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 4)
154   S_ENDPGM 0, implicit %1
155...
156---
157name: constant_zextload_i16_align4
158legalized: true
159
160body: |
161 bb.0:
162   liveins: $sgpr0_sgpr1
163    ; GFX8-LABEL: name: constant_zextload_i16_align4
164    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
165    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
166    ; GFX8: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
167    ; GFX8: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
168    ; GFX8: S_ENDPGM 0, implicit [[AND]](s32)
169    ; GFX9-LABEL: name: constant_zextload_i16_align4
170    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
171    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
172    ; GFX9: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
173    ; GFX9: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
174    ; GFX9: S_ENDPGM 0, implicit [[AND]](s32)
175    ; GFX10-LABEL: name: constant_zextload_i16_align4
176    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
177    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 4)
178    ; GFX10: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
179    ; GFX10: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
180    ; GFX10: S_ENDPGM 0, implicit [[AND]](s32)
181   %0:_(p1) = COPY $sgpr0_sgpr1
182   %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 4)
183   S_ENDPGM 0, implicit %1
184...
185---
186name: global_load_i8_align4
187legalized: true
188
189body: |
190 bb.0:
191   liveins: $sgpr0_sgpr1
192    ; GFX8-LABEL: name: global_load_i8_align4
193    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
194    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
195    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
196    ; GFX9-LABEL: name: global_load_i8_align4
197    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
198    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
199    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
200    ; GFX10-LABEL: name: global_load_i8_align4
201    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
202    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
203    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
204   %0:_(p1) = COPY $sgpr0_sgpr1
205   %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 4, addrspace 1)
206   S_ENDPGM 0, implicit %1
207...
208---
209name: global_load_i16_align4
210legalized: true
211
212body: |
213 bb.0:
214   liveins: $sgpr0_sgpr1
215    ; GFX8-LABEL: name: global_load_i16_align4
216    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
217    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
218    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
219    ; GFX9-LABEL: name: global_load_i16_align4
220    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
221    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
222    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
223    ; GFX10-LABEL: name: global_load_i16_align4
224    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
225    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
226    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
227   %0:_(p1) = COPY $sgpr0_sgpr1
228   %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 4, addrspace 1)
229   S_ENDPGM 0, implicit %1
230...
231---
232name: global_sextload_i8_alig4
233legalized: true
234
235body: |
236 bb.0:
237   liveins: $sgpr0_sgpr1
238    ; GFX8-LABEL: name: global_sextload_i8_alig4
239    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
240    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
241    ; GFX8: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8
242    ; GFX8: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
243    ; GFX9-LABEL: name: global_sextload_i8_alig4
244    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
245    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
246    ; GFX9: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8
247    ; GFX9: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
248    ; GFX10-LABEL: name: global_sextload_i8_alig4
249    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
250    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
251    ; GFX10: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[LOAD]], 8
252    ; GFX10: S_ENDPGM 0, implicit [[SEXT_INREG]](s32)
253   %0:_(p1) = COPY $sgpr0_sgpr1
254   %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 4, addrspace 1)
255   S_ENDPGM 0, implicit %1
256...
257---
258name: global_zextload_i16_align4
259legalized: true
260
261body: |
262 bb.0:
263   liveins: $sgpr0_sgpr1
264    ; GFX8-LABEL: name: global_zextload_i16_align4
265    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
266    ; GFX8: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
267    ; GFX8: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
268    ; GFX8: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
269    ; GFX8: S_ENDPGM 0, implicit [[AND]](s32)
270    ; GFX9-LABEL: name: global_zextload_i16_align4
271    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
272    ; GFX9: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
273    ; GFX9: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
274    ; GFX9: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
275    ; GFX9: S_ENDPGM 0, implicit [[AND]](s32)
276    ; GFX10-LABEL: name: global_zextload_i16_align4
277    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
278    ; GFX10: [[LOAD:%[0-9]+]]:sgpr(s32) = G_LOAD [[COPY]](p1) :: (invariant load (s32), addrspace 1)
279    ; GFX10: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535
280    ; GFX10: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[LOAD]], [[C]]
281    ; GFX10: S_ENDPGM 0, implicit [[AND]](s32)
282   %0:_(p1) = COPY $sgpr0_sgpr1
283   %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 4, addrspace 1)
284   S_ENDPGM 0, implicit %1
285...
286# Some negative test cases
287---
288name: constant_load_i8_align2
289legalized: true
290body: |
291  bb.0:
292    liveins: $sgpr0_sgpr1
293    ; GFX8-LABEL: name: constant_load_i8_align2
294    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
295    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
296    ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
297    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
298    ; GFX9-LABEL: name: constant_load_i8_align2
299    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
300    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
301    ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
302    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
303    ; GFX10-LABEL: name: constant_load_i8_align2
304    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
305    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
306    ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
307    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
308    %0:_(p1) = COPY $sgpr0_sgpr1
309    %1:_(s32) = G_LOAD %0 :: (invariant load (s8), align 2, addrspace 4)
310    S_ENDPGM 0, implicit %1
311...
312---
313name: constant_load_i16_align2
314legalized: true
315
316body: |
317  bb.0:
318    liveins: $sgpr0_sgpr1
319    ; GFX8-LABEL: name: constant_load_i16_align2
320    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
321    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
322    ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
323    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
324    ; GFX9-LABEL: name: constant_load_i16_align2
325    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
326    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
327    ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
328    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
329    ; GFX10-LABEL: name: constant_load_i16_align2
330    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
331    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
332    ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
333    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
334    %0:_(p1) = COPY $sgpr0_sgpr1
335    %1:_(s32) = G_LOAD %0 :: (invariant load (s16), align 2, addrspace 4)
336    S_ENDPGM 0, implicit %1
337...
338---
339name: constant_sextload_i8_align2
340legalized: true
341
342body: |
343  bb.0:
344    liveins: $sgpr0_sgpr1
345    ; GFX8-LABEL: name: constant_sextload_i8_align2
346    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
347    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
348    ; GFX8: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
349    ; GFX8: S_ENDPGM 0, implicit [[SEXTLOAD]](s32)
350    ; GFX9-LABEL: name: constant_sextload_i8_align2
351    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
352    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
353    ; GFX9: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
354    ; GFX9: S_ENDPGM 0, implicit [[SEXTLOAD]](s32)
355    ; GFX10-LABEL: name: constant_sextload_i8_align2
356    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
357    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
358    ; GFX10: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
359    ; GFX10: S_ENDPGM 0, implicit [[SEXTLOAD]](s32)
360    %0:_(p1) = COPY $sgpr0_sgpr1
361    %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s8), align 2, addrspace 4)
362    S_ENDPGM 0, implicit %1
363...
364---
365name: constant_sextload_i16_align2
366legalized: true
367
368body: |
369  bb.0:
370    liveins: $sgpr0_sgpr1
371    ; GFX8-LABEL: name: constant_sextload_i16_align2
372    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
373    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
374    ; GFX8: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
375    ; GFX8: S_ENDPGM 0, implicit [[SEXTLOAD]](s32)
376    ; GFX9-LABEL: name: constant_sextload_i16_align2
377    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
378    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
379    ; GFX9: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
380    ; GFX9: S_ENDPGM 0, implicit [[SEXTLOAD]](s32)
381    ; GFX10-LABEL: name: constant_sextload_i16_align2
382    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
383    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
384    ; GFX10: [[SEXTLOAD:%[0-9]+]]:vgpr(s32) = G_SEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
385    ; GFX10: S_ENDPGM 0, implicit [[SEXTLOAD]](s32)
386    %0:_(p1) = COPY $sgpr0_sgpr1
387    %1:_(s32) = G_SEXTLOAD %0 :: (invariant load (s16), align 2, addrspace 4)
388    S_ENDPGM 0, implicit %1
389...
390---
391name: constant_zextload_i8_align2
392legalized: true
393
394body: |
395  bb.0:
396    liveins: $sgpr0_sgpr1
397    ; GFX8-LABEL: name: constant_zextload_i8_align2
398    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
399    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
400    ; GFX8: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
401    ; GFX8: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32)
402    ; GFX9-LABEL: name: constant_zextload_i8_align2
403    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
404    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
405    ; GFX9: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
406    ; GFX9: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32)
407    ; GFX10-LABEL: name: constant_zextload_i8_align2
408    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
409    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
410    ; GFX10: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s8), align 2, addrspace 4)
411    ; GFX10: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32)
412    %0:_(p1) = COPY $sgpr0_sgpr1
413    %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s8), align 2, addrspace 4)
414    S_ENDPGM 0, implicit %1
415...
416---
417name: constant_zextload_i16_align2
418legalized: true
419
420body: |
421  bb.0:
422    liveins: $sgpr0_sgpr1
423    ; GFX8-LABEL: name: constant_zextload_i16_align2
424    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
425    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
426    ; GFX8: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
427    ; GFX8: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32)
428    ; GFX9-LABEL: name: constant_zextload_i16_align2
429    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
430    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
431    ; GFX9: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
432    ; GFX9: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32)
433    ; GFX10-LABEL: name: constant_zextload_i16_align2
434    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
435    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
436    ; GFX10: [[ZEXTLOAD:%[0-9]+]]:vgpr(s32) = G_ZEXTLOAD [[COPY1]](p1) :: (invariant load (s16), addrspace 4)
437    ; GFX10: S_ENDPGM 0, implicit [[ZEXTLOAD]](s32)
438    %0:_(p1) = COPY $sgpr0_sgpr1
439    %1:_(s32) = G_ZEXTLOAD %0 :: (invariant load (s16), align 2, addrspace 4)
440    S_ENDPGM 0, implicit %1
441...
442---
443name: local_load_i8_align4
444legalized: true
445
446body: |
447  bb.0:
448    liveins: $sgpr0_sgpr1
449    ; GFX8-LABEL: name: local_load_i8_align4
450    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
451    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
452    ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 3)
453    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
454    ; GFX9-LABEL: name: local_load_i8_align4
455    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
456    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
457    ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 3)
458    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
459    ; GFX10-LABEL: name: local_load_i8_align4
460    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
461    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
462    ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 3)
463    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
464    %0:_(p1) = COPY $sgpr0_sgpr1
465    %1:_(s32) = G_LOAD %0 :: (load (s8), align 4, addrspace 3)
466    S_ENDPGM 0, implicit %1
467...
468---
469name: private_load_i8_align4
470legalized: true
471
472body: |
473  bb.0:
474    liveins: $sgpr0_sgpr1
475    ; GFX8-LABEL: name: private_load_i8_align4
476    ; GFX8: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
477    ; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
478    ; GFX8: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5)
479    ; GFX8: S_ENDPGM 0, implicit [[LOAD]](s32)
480    ; GFX9-LABEL: name: private_load_i8_align4
481    ; GFX9: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
482    ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
483    ; GFX9: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5)
484    ; GFX9: S_ENDPGM 0, implicit [[LOAD]](s32)
485    ; GFX10-LABEL: name: private_load_i8_align4
486    ; GFX10: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1
487    ; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY [[COPY]](p1)
488    ; GFX10: [[LOAD:%[0-9]+]]:vgpr(s32) = G_LOAD [[COPY1]](p1) :: (load (s8), align 4, addrspace 5)
489    ; GFX10: S_ENDPGM 0, implicit [[LOAD]](s32)
490    %0:_(p1) = COPY $sgpr0_sgpr1
491    %1:_(s32) = G_LOAD %0 :: (load (s8), align 4, addrspace 5)
492    S_ENDPGM 0, implicit %1
493...
494