xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/combine-amdgpu-cvt-f32-ubyte.mir (revision b309bc04eebc9c736b6c34d73d520a6ef7baf302)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
3
4---
5name: cvt_f32_ubyte0_lshr_0
6tracksRegLiveness: true
7body:             |
8  bb.0:
9    liveins: $vgpr0
10
11    ; CHECK-LABEL: name: cvt_f32_ubyte0_lshr_0
12    ; CHECK: liveins: $vgpr0
13    ; CHECK-NEXT: {{  $}}
14    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
15    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %arg
16    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
17    %arg:_(s32) = COPY $vgpr0
18    %shiftamt:_(s32) = G_CONSTANT i32 0
19    %shift:_(s32) = G_LSHR %arg, %shiftamt
20    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
21    $vgpr0 = COPY %result
22...
23
24---
25name: cvt_f32_ubyte0_lshr_8
26tracksRegLiveness: true
27body:             |
28  bb.0:
29    liveins: $vgpr0
30
31    ; CHECK-LABEL: name: cvt_f32_ubyte0_lshr_8
32    ; CHECK: liveins: $vgpr0
33    ; CHECK-NEXT: {{  $}}
34    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
35    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %arg
36    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
37    %arg:_(s32) = COPY $vgpr0
38    %shiftamt:_(s32) = G_CONSTANT i32 8
39    %shift:_(s32) = G_LSHR %arg, %shiftamt
40    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
41    $vgpr0 = COPY %result
42...
43
44---
45name: cvt_f32_ubyte0_lshr_16
46tracksRegLiveness: true
47body:             |
48  bb.0:
49    liveins: $vgpr0
50
51    ; CHECK-LABEL: name: cvt_f32_ubyte0_lshr_16
52    ; CHECK: liveins: $vgpr0
53    ; CHECK-NEXT: {{  $}}
54    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
55    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %arg
56    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
57    %arg:_(s32) = COPY $vgpr0
58    %shiftamt:_(s32) = G_CONSTANT i32 16
59    %shift:_(s32) = G_LSHR %arg, %shiftamt
60    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
61    $vgpr0 = COPY %result
62...
63
64---
65name: cvt_f32_ubyte0_lshr_24
66tracksRegLiveness: true
67body:             |
68  bb.0:
69    liveins: $vgpr0
70
71    ; CHECK-LABEL: name: cvt_f32_ubyte0_lshr_24
72    ; CHECK: liveins: $vgpr0
73    ; CHECK-NEXT: {{  $}}
74    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
75    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %arg
76    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
77    %arg:_(s32) = COPY $vgpr0
78    %shiftamt:_(s32) = G_CONSTANT i32 24
79    %shift:_(s32) = G_LSHR %arg, %shiftamt
80    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
81    $vgpr0 = COPY %result
82...
83
84---
85name: cvt_f32_ubyte1_lshr_8
86tracksRegLiveness: true
87body:             |
88  bb.0:
89    liveins: $vgpr0
90
91    ; CHECK-LABEL: name: cvt_f32_ubyte1_lshr_8
92    ; CHECK: liveins: $vgpr0
93    ; CHECK-NEXT: {{  $}}
94    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
95    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %arg
96    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
97    %arg:_(s32) = COPY $vgpr0
98    %shiftamt:_(s32) = G_CONSTANT i32 8
99    %shift:_(s32) = G_LSHR %arg, %shiftamt
100    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
101    $vgpr0 = COPY %result
102...
103
104---
105name: cvt_f32_ubyte1_lshr_16
106tracksRegLiveness: true
107body:             |
108  bb.0:
109    liveins: $vgpr0
110
111    ; CHECK-LABEL: name: cvt_f32_ubyte1_lshr_16
112    ; CHECK: liveins: $vgpr0
113    ; CHECK-NEXT: {{  $}}
114    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
115    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %arg
116    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
117    %arg:_(s32) = COPY $vgpr0
118    %shiftamt:_(s32) = G_CONSTANT i32 16
119    %shift:_(s32) = G_LSHR %arg, %shiftamt
120    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
121    $vgpr0 = COPY %result
122...
123
124---
125name: cvt_f32_ubyte1_lshr_24
126tracksRegLiveness: true
127body:             |
128  bb.0:
129    liveins: $vgpr0
130
131    ; CHECK-LABEL: name: cvt_f32_ubyte1_lshr_24
132    ; CHECK: liveins: $vgpr0
133    ; CHECK-NEXT: {{  $}}
134    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
135    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 24
136    ; CHECK-NEXT: %shift:_(s32) = G_LSHR %arg, %shiftamt(s32)
137    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
138    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
139    %arg:_(s32) = COPY $vgpr0
140    %shiftamt:_(s32) = G_CONSTANT i32 24
141    %shift:_(s32) = G_LSHR %arg, %shiftamt
142    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
143    $vgpr0 = COPY %result
144...
145
146---
147name: cvt_f32_ubyte2_lshr_8
148tracksRegLiveness: true
149body:             |
150  bb.0:
151    liveins: $vgpr0
152
153    ; CHECK-LABEL: name: cvt_f32_ubyte2_lshr_8
154    ; CHECK: liveins: $vgpr0
155    ; CHECK-NEXT: {{  $}}
156    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
157    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %arg
158    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
159    %arg:_(s32) = COPY $vgpr0
160    %shiftamt:_(s32) = G_CONSTANT i32 8
161    %shift:_(s32) = G_LSHR %arg, %shiftamt
162    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
163    $vgpr0 = COPY %result
164...
165
166---
167name: cvt_f32_ubyte2_lshr_16
168tracksRegLiveness: true
169body:             |
170  bb.0:
171    liveins: $vgpr0
172
173    ; CHECK-LABEL: name: cvt_f32_ubyte2_lshr_16
174    ; CHECK: liveins: $vgpr0
175    ; CHECK-NEXT: {{  $}}
176    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
177    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 16
178    ; CHECK-NEXT: %shift:_(s32) = G_LSHR %arg, %shiftamt(s32)
179    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
180    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
181    %arg:_(s32) = COPY $vgpr0
182    %shiftamt:_(s32) = G_CONSTANT i32 16
183    %shift:_(s32) = G_LSHR %arg, %shiftamt
184    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
185    $vgpr0 = COPY %result
186...
187
188---
189name: cvt_f32_ubyte2_lshr_24
190tracksRegLiveness: true
191body:             |
192  bb.0:
193    liveins: $vgpr0
194
195    ; CHECK-LABEL: name: cvt_f32_ubyte2_lshr_24
196    ; CHECK: liveins: $vgpr0
197    ; CHECK-NEXT: {{  $}}
198    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
199    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 24
200    ; CHECK-NEXT: %shift:_(s32) = G_LSHR %arg, %shiftamt(s32)
201    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
202    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
203    %arg:_(s32) = COPY $vgpr0
204    %shiftamt:_(s32) = G_CONSTANT i32 24
205    %shift:_(s32) = G_LSHR %arg, %shiftamt
206    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
207    $vgpr0 = COPY %result
208...
209
210---
211name: cvt_f32_ubyte3_lshr_8
212tracksRegLiveness: true
213body:             |
214  bb.0:
215    liveins: $vgpr0
216
217    ; CHECK-LABEL: name: cvt_f32_ubyte3_lshr_8
218    ; CHECK: liveins: $vgpr0
219    ; CHECK-NEXT: {{  $}}
220    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
221    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 8
222    ; CHECK-NEXT: %shift:_(s32) = G_LSHR %arg, %shiftamt(s32)
223    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
224    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
225    %arg:_(s32) = COPY $vgpr0
226    %shiftamt:_(s32) = G_CONSTANT i32 8
227    %shift:_(s32) = G_LSHR %arg, %shiftamt
228    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
229    $vgpr0 = COPY %result
230...
231
232---
233name: cvt_f32_ubyte0_zext_lshr_8
234tracksRegLiveness: true
235body:             |
236  bb.0:
237    liveins: $vgpr0
238
239    ; CHECK-LABEL: name: cvt_f32_ubyte0_zext_lshr_8
240    ; CHECK: liveins: $vgpr0
241    ; CHECK-NEXT: {{  $}}
242    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
243    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %arg
244    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
245    %arg:_(s32) = COPY $vgpr0
246    %trunc:_(s16) = G_TRUNC %arg
247    %shiftamt:_(s32) = G_CONSTANT i32 8
248    %shift:_(s16) = G_LSHR %trunc, %shiftamt
249    %zext:_(s32) = G_ZEXT %shift
250    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %zext
251    $vgpr0 = COPY %result
252...
253
254---
255name: cvt_f32_ubyte0_zext_lshr_16
256tracksRegLiveness: true
257body:             |
258  bb.0:
259    liveins: $vgpr0
260
261    ; CHECK-LABEL: name: cvt_f32_ubyte0_zext_lshr_16
262    ; CHECK: liveins: $vgpr0
263    ; CHECK-NEXT: {{  $}}
264    ; CHECK-NEXT: %shift:_(s16) = G_IMPLICIT_DEF
265    ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %shift(s16)
266    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %zext
267    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
268    %arg:_(s32) = COPY $vgpr0
269    %trunc:_(s16) = G_TRUNC %arg
270    %shiftamt:_(s32) = G_CONSTANT i32 16
271    %shift:_(s16) = G_LSHR %trunc, %shiftamt
272    %zext:_(s32) = G_ZEXT %shift
273    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %zext
274    $vgpr0 = COPY %result
275...
276
277---
278name: cvt_f32_ubyte0_zext_lshr_24
279tracksRegLiveness: true
280body:             |
281  bb.0:
282    liveins: $vgpr0
283
284    ; CHECK-LABEL: name: cvt_f32_ubyte0_zext_lshr_24
285    ; CHECK: liveins: $vgpr0
286    ; CHECK-NEXT: {{  $}}
287    ; CHECK-NEXT: %shift:_(s16) = G_IMPLICIT_DEF
288    ; CHECK-NEXT: %zext:_(s32) = G_ZEXT %shift(s16)
289    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %zext
290    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
291    %arg:_(s32) = COPY $vgpr0
292    %trunc:_(s16) = G_TRUNC %arg
293    %shiftamt:_(s32) = G_CONSTANT i32 24
294    %shift:_(s16) = G_LSHR %trunc, %shiftamt
295    %zext:_(s32) = G_ZEXT %shift
296    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %zext
297    $vgpr0 = COPY %result
298...
299
300---
301name: cvt_f32_ubyte1_zext_lshr_8
302tracksRegLiveness: true
303body:             |
304  bb.0:
305    liveins: $vgpr0
306
307    ; CHECK-LABEL: name: cvt_f32_ubyte1_zext_lshr_8
308    ; CHECK: liveins: $vgpr0
309    ; CHECK-NEXT: {{  $}}
310    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
311    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %arg
312    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
313    %arg:_(s32) = COPY $vgpr0
314    %trunc:_(s16) = G_TRUNC %arg
315    %shiftamt:_(s32) = G_CONSTANT i32 8
316    %shift:_(s16) = G_LSHR %trunc, %shiftamt
317    %zext:_(s32) = G_ZEXT %shift
318    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %zext
319    $vgpr0 = COPY %result
320...
321
322---
323name: cvt_f32_ubyte0_shl_8
324tracksRegLiveness: true
325body:             |
326  bb.0:
327    liveins: $vgpr0
328
329    ; CHECK-LABEL: name: cvt_f32_ubyte0_shl_8
330    ; CHECK: liveins: $vgpr0
331    ; CHECK-NEXT: {{  $}}
332    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
333    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 8
334    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
335    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
336    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
337    %arg:_(s32) = COPY $vgpr0
338    %shiftamt:_(s32) = G_CONSTANT i32 8
339    %shift:_(s32) = G_SHL %arg, %shiftamt
340    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
341    $vgpr0 = COPY %result
342...
343
344---
345name: cvt_f32_ubyte1_shl_8
346tracksRegLiveness: true
347body:             |
348  bb.0:
349    liveins: $vgpr0
350
351    ; CHECK-LABEL: name: cvt_f32_ubyte1_shl_8
352    ; CHECK: liveins: $vgpr0
353    ; CHECK-NEXT: {{  $}}
354    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
355    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 8
356    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
357    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
358    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
359    %arg:_(s32) = COPY $vgpr0
360    %shiftamt:_(s32) = G_CONSTANT i32 8
361    %shift:_(s32) = G_SHL %arg, %shiftamt
362    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
363    $vgpr0 = COPY %result
364...
365
366---
367name: cvt_f32_ubyte2_shl_8
368tracksRegLiveness: true
369body:             |
370  bb.0:
371    liveins: $vgpr0
372
373    ; CHECK-LABEL: name: cvt_f32_ubyte2_shl_8
374    ; CHECK: liveins: $vgpr0
375    ; CHECK-NEXT: {{  $}}
376    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
377    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %arg
378    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
379    %arg:_(s32) = COPY $vgpr0
380    %shiftamt:_(s32) = G_CONSTANT i32 8
381    %shift:_(s32) = G_SHL %arg, %shiftamt
382    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
383    $vgpr0 = COPY %result
384...
385
386---
387name: cvt_f32_ubyte3_shl_8
388tracksRegLiveness: true
389body:             |
390  bb.0:
391    liveins: $vgpr0
392
393    ; CHECK-LABEL: name: cvt_f32_ubyte3_shl_8
394    ; CHECK: liveins: $vgpr0
395    ; CHECK-NEXT: {{  $}}
396    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
397    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %arg
398    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
399    %arg:_(s32) = COPY $vgpr0
400    %shiftamt:_(s32) = G_CONSTANT i32 8
401    %shift:_(s32) = G_SHL %arg, %shiftamt
402    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
403    $vgpr0 = COPY %result
404...
405
406---
407name: cvt_f32_ubyte0_shl_16
408tracksRegLiveness: true
409body:             |
410  bb.0:
411    liveins: $vgpr0
412
413    ; CHECK-LABEL: name: cvt_f32_ubyte0_shl_16
414    ; CHECK: liveins: $vgpr0
415    ; CHECK-NEXT: {{  $}}
416    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
417    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 16
418    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
419    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
420    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
421    %arg:_(s32) = COPY $vgpr0
422    %shiftamt:_(s32) = G_CONSTANT i32 16
423    %shift:_(s32) = G_SHL %arg, %shiftamt
424    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
425    $vgpr0 = COPY %result
426...
427
428---
429name: cvt_f32_ubyte1_shl_16
430tracksRegLiveness: true
431body:             |
432  bb.0:
433    liveins: $vgpr0
434
435    ; CHECK-LABEL: name: cvt_f32_ubyte1_shl_16
436    ; CHECK: liveins: $vgpr0
437    ; CHECK-NEXT: {{  $}}
438    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
439    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 16
440    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
441    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
442    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
443    %arg:_(s32) = COPY $vgpr0
444    %shiftamt:_(s32) = G_CONSTANT i32 16
445    %shift:_(s32) = G_SHL %arg, %shiftamt
446    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
447    $vgpr0 = COPY %result
448...
449
450---
451name: cvt_f32_ubyte2_shl_16
452tracksRegLiveness: true
453body:             |
454  bb.0:
455    liveins: $vgpr0
456
457    ; CHECK-LABEL: name: cvt_f32_ubyte2_shl_16
458    ; CHECK: liveins: $vgpr0
459    ; CHECK-NEXT: {{  $}}
460    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
461    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 16
462    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
463    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
464    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
465    %arg:_(s32) = COPY $vgpr0
466    %shiftamt:_(s32) = G_CONSTANT i32 16
467    %shift:_(s32) = G_SHL %arg, %shiftamt
468    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
469    $vgpr0 = COPY %result
470...
471
472---
473name: cvt_f32_ubyte3_shl_16
474tracksRegLiveness: true
475body:             |
476  bb.0:
477    liveins: $vgpr0
478
479    ; CHECK-LABEL: name: cvt_f32_ubyte3_shl_16
480    ; CHECK: liveins: $vgpr0
481    ; CHECK-NEXT: {{  $}}
482    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
483    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %arg
484    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
485    %arg:_(s32) = COPY $vgpr0
486    %shiftamt:_(s32) = G_CONSTANT i32 16
487    %shift:_(s32) = G_SHL %arg, %shiftamt
488    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
489    $vgpr0 = COPY %result
490...
491
492---
493name: cvt_f32_ubyte0_shl_24
494tracksRegLiveness: true
495body:             |
496  bb.0:
497    liveins: $vgpr0
498
499    ; CHECK-LABEL: name: cvt_f32_ubyte0_shl_24
500    ; CHECK: liveins: $vgpr0
501    ; CHECK-NEXT: {{  $}}
502    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
503    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 24
504    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
505    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
506    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
507    %arg:_(s32) = COPY $vgpr0
508    %shiftamt:_(s32) = G_CONSTANT i32 24
509    %shift:_(s32) = G_SHL %arg, %shiftamt
510    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE0 %shift
511    $vgpr0 = COPY %result
512...
513
514---
515name: cvt_f32_ubyte1_shl_24
516tracksRegLiveness: true
517body:             |
518  bb.0:
519    liveins: $vgpr0
520
521    ; CHECK-LABEL: name: cvt_f32_ubyte1_shl_24
522    ; CHECK: liveins: $vgpr0
523    ; CHECK-NEXT: {{  $}}
524    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
525    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 24
526    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
527    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
528    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
529    %arg:_(s32) = COPY $vgpr0
530    %shiftamt:_(s32) = G_CONSTANT i32 24
531    %shift:_(s32) = G_SHL %arg, %shiftamt
532    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
533    $vgpr0 = COPY %result
534...
535
536---
537name: cvt_f32_ubyte2_shl_24
538tracksRegLiveness: true
539body:             |
540  bb.0:
541    liveins: $vgpr0
542
543    ; CHECK-LABEL: name: cvt_f32_ubyte2_shl_24
544    ; CHECK: liveins: $vgpr0
545    ; CHECK-NEXT: {{  $}}
546    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
547    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 24
548    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
549    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
550    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
551    %arg:_(s32) = COPY $vgpr0
552    %shiftamt:_(s32) = G_CONSTANT i32 24
553    %shift:_(s32) = G_SHL %arg, %shiftamt
554    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE2 %shift
555    $vgpr0 = COPY %result
556...
557
558---
559name: cvt_f32_ubyte3_shl_24
560tracksRegLiveness: true
561body:             |
562  bb.0:
563    liveins: $vgpr0
564
565    ; CHECK-LABEL: name: cvt_f32_ubyte3_shl_24
566    ; CHECK: liveins: $vgpr0
567    ; CHECK-NEXT: {{  $}}
568    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
569    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 24
570    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
571    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
572    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
573    %arg:_(s32) = COPY $vgpr0
574    %shiftamt:_(s32) = G_CONSTANT i32 24
575    %shift:_(s32) = G_SHL %arg, %shiftamt
576    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
577    $vgpr0 = COPY %result
578...
579
580# Shift amount is wrong
581---
582name: cvt_f32_ubyte1_shl_7
583tracksRegLiveness: true
584body:             |
585  bb.0:
586    liveins: $vgpr0
587
588    ; CHECK-LABEL: name: cvt_f32_ubyte1_shl_7
589    ; CHECK: liveins: $vgpr0
590    ; CHECK-NEXT: {{  $}}
591    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
592    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 7
593    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
594    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
595    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
596    %arg:_(s32) = COPY $vgpr0
597    %shiftamt:_(s32) = G_CONSTANT i32 7
598    %shift:_(s32) = G_SHL %arg, %shiftamt
599    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE1 %shift
600    $vgpr0 = COPY %result
601...
602
603---
604name: cvt_f32_ubyte3_shl_17
605tracksRegLiveness: true
606body:             |
607  bb.0:
608    liveins: $vgpr0
609
610    ; CHECK-LABEL: name: cvt_f32_ubyte3_shl_17
611    ; CHECK: liveins: $vgpr0
612    ; CHECK-NEXT: {{  $}}
613    ; CHECK-NEXT: %arg:_(s32) = COPY $vgpr0
614    ; CHECK-NEXT: %shiftamt:_(s32) = G_CONSTANT i32 17
615    ; CHECK-NEXT: %shift:_(s32) = G_SHL %arg, %shiftamt(s32)
616    ; CHECK-NEXT: %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
617    ; CHECK-NEXT: $vgpr0 = COPY %result(s32)
618    %arg:_(s32) = COPY $vgpr0
619    %shiftamt:_(s32) = G_CONSTANT i32 17
620    %shift:_(s32) = G_SHL %arg, %shiftamt
621    %result:_(s32) = G_AMDGPU_CVT_F32_UBYTE3 %shift
622    $vgpr0 = COPY %result
623...
624