xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fptoui.mir (revision 8871c3c562690347d75190be758312d1f92a7db4)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer %s -o - | FileCheck -check-prefix=SI %s
3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=VI %s
4
5---
6name: test_fptoui_s32_s32
7body: |
8  bb.0:
9    liveins: $vgpr0
10
11    ; SI-LABEL: name: test_fptoui_s32_s32
12    ; SI: liveins: $vgpr0
13    ; SI-NEXT: {{  $}}
14    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
15    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
16    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
17    ; VI-LABEL: name: test_fptoui_s32_s32
18    ; VI: liveins: $vgpr0
19    ; VI-NEXT: {{  $}}
20    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
21    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
22    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
23    %0:_(s32) = COPY $vgpr0
24    %1:_(s32) = G_FPTOUI %0
25    $vgpr0 = COPY %1
26...
27
28---
29name: test_fptoui_s32_s64
30body: |
31  bb.0:
32    liveins: $vgpr0_vgpr1
33
34    ; SI-LABEL: name: test_fptoui_s32_s64
35    ; SI: liveins: $vgpr0_vgpr1
36    ; SI-NEXT: {{  $}}
37    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
38    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
39    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
40    ; VI-LABEL: name: test_fptoui_s32_s64
41    ; VI: liveins: $vgpr0_vgpr1
42    ; VI-NEXT: {{  $}}
43    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
44    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
45    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
46    %0:_(s64) = COPY $vgpr0_vgpr1
47    %1:_(s32) = G_FPTOUI %0
48    $vgpr0 = COPY %1
49...
50
51---
52name: test_fptoui_v2s32_to_v2s32
53body: |
54  bb.0:
55    liveins: $vgpr0_vgpr1
56
57    ; SI-LABEL: name: test_fptoui_v2s32_to_v2s32
58    ; SI: liveins: $vgpr0_vgpr1
59    ; SI-NEXT: {{  $}}
60    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
61    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
62    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s32)
63    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s32)
64    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)
65    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
66    ; VI-LABEL: name: test_fptoui_v2s32_to_v2s32
67    ; VI: liveins: $vgpr0_vgpr1
68    ; VI-NEXT: {{  $}}
69    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
70    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
71    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s32)
72    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s32)
73    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)
74    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
75    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
76    %1:_(<2 x s32>) = G_FPTOUI %0
77    $vgpr0_vgpr1 = COPY %1
78...
79
80---
81name: test_fptoui_v2s64_to_v2s32
82body: |
83  bb.0:
84    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
85
86    ; SI-LABEL: name: test_fptoui_v2s64_to_v2s32
87    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
88    ; SI-NEXT: {{  $}}
89    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
90    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
91    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s64)
92    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s64)
93    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)
94    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
95    ; VI-LABEL: name: test_fptoui_v2s64_to_v2s32
96    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
97    ; VI-NEXT: {{  $}}
98    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
99    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
100    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s64)
101    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s64)
102    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)
103    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
104    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
105    %1:_(<2 x s32>) = G_FPTOUI %0
106    $vgpr0_vgpr1 = COPY %1
107...
108
109---
110name: test_fptoui_s16_to_s16
111body: |
112  bb.0:
113    liveins: $vgpr0
114
115    ; SI-LABEL: name: test_fptoui_s16_to_s16
116    ; SI: liveins: $vgpr0
117    ; SI-NEXT: {{  $}}
118    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
119    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
120    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
121    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)
122    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
123    ; VI-LABEL: name: test_fptoui_s16_to_s16
124    ; VI: liveins: $vgpr0
125    ; VI-NEXT: {{  $}}
126    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
127    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
128    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s16) = G_FPTOUI [[TRUNC]](s16)
129    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTOUI]](s16)
130    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)
131    %0:_(s32) = COPY $vgpr0
132    %1:_(s16) = G_TRUNC %0
133    %2:_(s16) = G_FPTOUI %1
134    %3:_(s32) = G_ANYEXT %2
135    $vgpr0 = COPY %3
136...
137
138---
139name: test_fptoui_s32_to_s16
140body: |
141  bb.0:
142    liveins: $vgpr0
143
144    ; SI-LABEL: name: test_fptoui_s32_to_s16
145    ; SI: liveins: $vgpr0
146    ; SI-NEXT: {{  $}}
147    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
148    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
149    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
150    ; VI-LABEL: name: test_fptoui_s32_to_s16
151    ; VI: liveins: $vgpr0
152    ; VI-NEXT: {{  $}}
153    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
154    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
155    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
156    %0:_(s32) = COPY $vgpr0
157    %1:_(s16) = G_FPTOUI %0
158    %2:_(s32) = G_ANYEXT %1
159    $vgpr0 = COPY %2
160...
161
162---
163name: test_fptoui_s64_to_s16
164body: |
165  bb.0:
166    liveins: $vgpr0_vgpr1
167
168    ; SI-LABEL: name: test_fptoui_s64_to_s16
169    ; SI: liveins: $vgpr0_vgpr1
170    ; SI-NEXT: {{  $}}
171    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
172    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
173    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
174    ; VI-LABEL: name: test_fptoui_s64_to_s16
175    ; VI: liveins: $vgpr0_vgpr1
176    ; VI-NEXT: {{  $}}
177    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
178    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)
179    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
180    %0:_(s64) = COPY $vgpr0_vgpr1
181    %1:_(s16) = G_FPTOUI %0
182    %2:_(s32) = G_ANYEXT %1
183    $vgpr0 = COPY %2
184...
185
186---
187name: test_fptoui_s64_s64
188body: |
189  bb.0:
190    liveins: $vgpr0_vgpr1
191
192    ; SI-LABEL: name: test_fptoui_s64_s64
193    ; SI: liveins: $vgpr0_vgpr1
194    ; SI-NEXT: {{  $}}
195    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
196    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
197    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
198    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
199    ; SI-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV1]](s32), [[C]](s32), [[C1]](s32)
200    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1023
201    ; SI-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C2]]
202    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648
203    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C3]]
204    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503599627370495
205    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
206    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND]](s32)
207    ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB]](s32)
208    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
209    ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ASHR]], [[C6]]
210    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[XOR]]
211    ; SI-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 51
212    ; SI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB]](s32), [[C5]]
213    ; SI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB]](s32), [[C7]]
214    ; SI-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[MV]], [[AND1]]
215    ; SI-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[COPY]], [[SELECT]]
216    ; SI-NEXT: [[C8:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000
217    ; SI-NEXT: [[C9:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000
218    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[SELECT1]], [[C8]]
219    ; SI-NEXT: [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL]](s64)
220    ; SI-NEXT: [[C10:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3FEFFFFFFFFFFFFF
221    ; SI-NEXT: [[FMINNUM_IEEE:%[0-9]+]]:_(s64) = G_FMINNUM_IEEE [[INT1]], [[C10]]
222    ; SI-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ord), [[FMUL]](s64), [[FMUL]]
223    ; SI-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[FMUL]], [[FMINNUM_IEEE]]
224    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[SELECT2]]
225    ; SI-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[FNEG]]
226    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FADD]], [[C9]], [[SELECT1]]
227    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD]](s64)
228    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)
229    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
230    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV1]](s64)
231    ; VI-LABEL: name: test_fptoui_s64_s64
232    ; VI: liveins: $vgpr0_vgpr1
233    ; VI-NEXT: {{  $}}
234    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
235    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s64) = G_INTRINSIC_TRUNC [[COPY]]
236    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000
237    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000
238    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
239    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s64) = G_FFLOOR [[FMUL]]
240    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
241    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s64)
242    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)
243    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
244    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)
245    %0:_(s64) = COPY $vgpr0_vgpr1
246    %1:_(s64) = G_FPTOUI %0
247    $vgpr0_vgpr1 = COPY %1
248...
249
250---
251name: test_fptoui_s64_s64_flags
252body: |
253  bb.0:
254    liveins: $vgpr0_vgpr1
255
256    ; SI-LABEL: name: test_fptoui_s64_s64_flags
257    ; SI: liveins: $vgpr0_vgpr1
258    ; SI-NEXT: {{  $}}
259    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
260    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
261    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
262    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
263    ; SI-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV1]](s32), [[C]](s32), [[C1]](s32)
264    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1023
265    ; SI-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C2]]
266    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648
267    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C3]]
268    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503599627370495
269    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
270    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND]](s32)
271    ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB]](s32)
272    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
273    ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ASHR]], [[C6]]
274    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[XOR]]
275    ; SI-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 51
276    ; SI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB]](s32), [[C5]]
277    ; SI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB]](s32), [[C7]]
278    ; SI-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[MV]], [[AND1]]
279    ; SI-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[COPY]], [[SELECT]]
280    ; SI-NEXT: [[C8:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000
281    ; SI-NEXT: [[C9:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000
282    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = nnan G_FMUL [[SELECT1]], [[C8]]
283    ; SI-NEXT: [[INT1:%[0-9]+]]:_(s64) = nnan G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL]](s64)
284    ; SI-NEXT: [[C10:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3FEFFFFFFFFFFFFF
285    ; SI-NEXT: [[FMINNUM_IEEE:%[0-9]+]]:_(s64) = nnan G_FMINNUM_IEEE [[INT1]], [[C10]]
286    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = nnan G_FNEG [[FMINNUM_IEEE]]
287    ; SI-NEXT: [[FADD:%[0-9]+]]:_(s64) = nnan G_FADD [[FMUL]], [[FNEG]]
288    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s64) = nnan G_FMA [[FADD]], [[C9]], [[SELECT1]]
289    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD]](s64)
290    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)
291    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
292    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV1]](s64)
293    ; VI-LABEL: name: test_fptoui_s64_s64_flags
294    ; VI: liveins: $vgpr0_vgpr1
295    ; VI-NEXT: {{  $}}
296    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
297    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s64) = nnan G_INTRINSIC_TRUNC [[COPY]]
298    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000
299    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000
300    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = nnan G_FMUL [[INTRINSIC_TRUNC]], [[C]]
301    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s64) = nnan G_FFLOOR [[FMUL]]
302    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s64) = nnan G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
303    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s64)
304    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)
305    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
306    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)
307    %0:_(s64) = COPY $vgpr0_vgpr1
308    %1:_(s64) = nnan G_FPTOUI %0
309    $vgpr0_vgpr1 = COPY %1
310...
311
312---
313name: test_fptoui_v2s64_to_v2s64
314body: |
315  bb.0:
316    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
317
318    ; SI-LABEL: name: test_fptoui_v2s64_to_v2s64
319    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
320    ; SI-NEXT: {{  $}}
321    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
322    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
323    ; SI-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64)
324    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
325    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
326    ; SI-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV3]](s32), [[C]](s32), [[C1]](s32)
327    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1023
328    ; SI-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C2]]
329    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648
330    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C3]]
331    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503599627370495
332    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
333    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND]](s32)
334    ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB]](s32)
335    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1
336    ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ASHR]], [[C6]]
337    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV]], [[XOR]]
338    ; SI-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 51
339    ; SI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB]](s32), [[C5]]
340    ; SI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB]](s32), [[C7]]
341    ; SI-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[MV]], [[AND1]]
342    ; SI-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[UV]], [[SELECT]]
343    ; SI-NEXT: [[C8:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000
344    ; SI-NEXT: [[C9:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000
345    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[SELECT1]], [[C8]]
346    ; SI-NEXT: [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL]](s64)
347    ; SI-NEXT: [[C10:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3FEFFFFFFFFFFFFF
348    ; SI-NEXT: [[FMINNUM_IEEE:%[0-9]+]]:_(s64) = G_FMINNUM_IEEE [[INT1]], [[C10]]
349    ; SI-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ord), [[FMUL]](s64), [[FMUL]]
350    ; SI-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[FMUL]], [[FMINNUM_IEEE]]
351    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[SELECT2]]
352    ; SI-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[FNEG]]
353    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FADD]], [[C9]], [[SELECT1]]
354    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD]](s64)
355    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)
356    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
357    ; SI-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64)
358    ; SI-NEXT: [[INT2:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV5]](s32), [[C]](s32), [[C1]](s32)
359    ; SI-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[INT2]], [[C2]]
360    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV5]], [[C3]]
361    ; SI-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND2]](s32)
362    ; SI-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB1]](s32)
363    ; SI-NEXT: [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[ASHR1]], [[C6]]
364    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[XOR1]]
365    ; SI-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB1]](s32), [[C5]]
366    ; SI-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB1]](s32), [[C7]]
367    ; SI-NEXT: [[SELECT3:%[0-9]+]]:_(s64) = G_SELECT [[ICMP2]](s1), [[MV2]], [[AND3]]
368    ; SI-NEXT: [[SELECT4:%[0-9]+]]:_(s64) = G_SELECT [[ICMP3]](s1), [[UV1]], [[SELECT3]]
369    ; SI-NEXT: [[FMUL1:%[0-9]+]]:_(s64) = G_FMUL [[SELECT4]], [[C8]]
370    ; SI-NEXT: [[INT3:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL1]](s64)
371    ; SI-NEXT: [[FMINNUM_IEEE1:%[0-9]+]]:_(s64) = G_FMINNUM_IEEE [[INT3]], [[C10]]
372    ; SI-NEXT: [[FCMP1:%[0-9]+]]:_(s1) = G_FCMP floatpred(ord), [[FMUL1]](s64), [[FMUL1]]
373    ; SI-NEXT: [[SELECT5:%[0-9]+]]:_(s64) = G_SELECT [[FCMP1]](s1), [[FMUL1]], [[FMINNUM_IEEE1]]
374    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[SELECT5]]
375    ; SI-NEXT: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FMUL1]], [[FNEG1]]
376    ; SI-NEXT: [[FMA1:%[0-9]+]]:_(s64) = G_FMA [[FADD1]], [[C9]], [[SELECT4]]
377    ; SI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD1]](s64)
378    ; SI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s64)
379    ; SI-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)
380    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV1]](s64), [[MV3]](s64)
381    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
382    ; VI-LABEL: name: test_fptoui_v2s64_to_v2s64
383    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
384    ; VI-NEXT: {{  $}}
385    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
386    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)
387    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s64) = G_INTRINSIC_TRUNC [[UV]]
388    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000
389    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000
390    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
391    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s64) = G_FFLOOR [[FMUL]]
392    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
393    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s64)
394    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)
395    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
396    ; VI-NEXT: [[INTRINSIC_TRUNC1:%[0-9]+]]:_(s64) = G_INTRINSIC_TRUNC [[UV1]]
397    ; VI-NEXT: [[FMUL1:%[0-9]+]]:_(s64) = G_FMUL [[INTRINSIC_TRUNC1]], [[C]]
398    ; VI-NEXT: [[FFLOOR1:%[0-9]+]]:_(s64) = G_FFLOOR [[FMUL1]]
399    ; VI-NEXT: [[FMA1:%[0-9]+]]:_(s64) = G_FMA [[FFLOOR1]], [[C1]], [[INTRINSIC_TRUNC1]]
400    ; VI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR1]](s64)
401    ; VI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s64)
402    ; VI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)
403    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)
404    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
405    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
406    %1:_(<2 x s64>) = G_FPTOUI %0
407    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
408...
409
410---
411name: test_fptoui_s32_to_s64
412body: |
413  bb.0:
414    liveins: $vgpr0
415
416    ; SI-LABEL: name: test_fptoui_s32_to_s64
417    ; SI: liveins: $vgpr0
418    ; SI-NEXT: {{  $}}
419    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
420    ; SI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]
421    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
422    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000
423    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
424    ; SI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]
425    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
426    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)
427    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)
428    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
429    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)
430    ; VI-LABEL: name: test_fptoui_s32_to_s64
431    ; VI: liveins: $vgpr0
432    ; VI-NEXT: {{  $}}
433    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
434    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]
435    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
436    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000
437    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
438    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]
439    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
440    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)
441    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)
442    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
443    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)
444    %0:_(s32) = COPY $vgpr0
445    %1:_(s64) = G_FPTOUI %0
446    $vgpr0_vgpr1 = COPY %1
447...
448
449---
450name: test_fptoui_v2s32_to_v2s64
451body: |
452  bb.0:
453    liveins: $vgpr0_vgpr1
454
455    ; SI-LABEL: name: test_fptoui_v2s32_to_v2s64
456    ; SI: liveins: $vgpr0_vgpr1
457    ; SI-NEXT: {{  $}}
458    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
459    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
460    ; SI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV]]
461    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
462    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000
463    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
464    ; SI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]
465    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
466    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)
467    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)
468    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
469    ; SI-NEXT: [[INTRINSIC_TRUNC1:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV1]]
470    ; SI-NEXT: [[FMUL1:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC1]], [[C]]
471    ; SI-NEXT: [[FFLOOR1:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL1]]
472    ; SI-NEXT: [[FMA1:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR1]], [[C1]], [[INTRINSIC_TRUNC1]]
473    ; SI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR1]](s32)
474    ; SI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s32)
475    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)
476    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)
477    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
478    ; VI-LABEL: name: test_fptoui_v2s32_to_v2s64
479    ; VI: liveins: $vgpr0_vgpr1
480    ; VI-NEXT: {{  $}}
481    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
482    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
483    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV]]
484    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
485    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000
486    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
487    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]
488    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
489    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)
490    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)
491    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
492    ; VI-NEXT: [[INTRINSIC_TRUNC1:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV1]]
493    ; VI-NEXT: [[FMUL1:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC1]], [[C]]
494    ; VI-NEXT: [[FFLOOR1:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL1]]
495    ; VI-NEXT: [[FMA1:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR1]], [[C1]], [[INTRINSIC_TRUNC1]]
496    ; VI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR1]](s32)
497    ; VI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s32)
498    ; VI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)
499    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)
500    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
501    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
502    %1:_(<2 x s64>) = G_FPTOUI %0
503    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
504...
505
506---
507name: test_fptoui_s16_to_s64
508body: |
509  bb.0:
510    liveins: $vgpr0
511
512    ; SI-LABEL: name: test_fptoui_s16_to_s64
513    ; SI: liveins: $vgpr0
514    ; SI-NEXT: {{  $}}
515    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
516    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
517    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
518    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)
519    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
520    ; VI-LABEL: name: test_fptoui_s16_to_s64
521    ; VI: liveins: $vgpr0
522    ; VI-NEXT: {{  $}}
523    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
524    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
525    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
526    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)
527    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
528    %0:_(s32) = COPY $vgpr0
529    %1:_(s16) = G_TRUNC %0
530    %2:_(s64) = G_FPTOUI %1
531    $vgpr0_vgpr1 = COPY %2
532...
533
534---
535name: test_fptoui_v2s16_to_v2s64
536body: |
537  bb.0:
538    liveins: $vgpr0
539
540    ; SI-LABEL: name: test_fptoui_v2s16_to_v2s64
541    ; SI: liveins: $vgpr0
542    ; SI-NEXT: {{  $}}
543    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
544    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)
545    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)
546    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
547    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)
548    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)
549    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
550    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)
551    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC1]](s16)
552    ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI1]](s32)
553    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[ZEXT]](s64), [[ZEXT1]](s64)
554    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
555    ; VI-LABEL: name: test_fptoui_v2s16_to_v2s64
556    ; VI: liveins: $vgpr0
557    ; VI-NEXT: {{  $}}
558    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
559    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)
560    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)
561    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
562    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)
563    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)
564    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
565    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)
566    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC1]](s16)
567    ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI1]](s32)
568    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[ZEXT]](s64), [[ZEXT1]](s64)
569    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)
570    %0:_(<2 x s16>) = COPY $vgpr0
571    %1:_(<2 x s64>) = G_FPTOUI %0
572    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1
573...
574
575---
576name: test_fptoui_s16_to_s1
577body: |
578  bb.0:
579    liveins: $vgpr0
580    ; SI-LABEL: name: test_fptoui_s16_to_s1
581    ; SI: liveins: $vgpr0
582    ; SI-NEXT: {{  $}}
583    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
584    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
585    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
586    ; SI-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[FPEXT]](s32)
587    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[FPTOSI]](s32)
588    ; SI-NEXT: S_ENDPGM 0, implicit [[TRUNC1]](s1)
589    ; VI-LABEL: name: test_fptoui_s16_to_s1
590    ; VI: liveins: $vgpr0
591    ; VI-NEXT: {{  $}}
592    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
593    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
594    ; VI-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[TRUNC]](s16)
595    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[FPTOSI]](s32)
596    ; VI-NEXT: S_ENDPGM 0, implicit [[TRUNC1]](s1)
597    %0:_(s32) = COPY $vgpr0
598    %1:_(s16) = G_TRUNC %0
599    %2:_(s1)  = G_FPTOSI %1
600    S_ENDPGM 0, implicit %2
601...
602
603---
604name: test_fptoui_s16_to_s15
605body: |
606  bb.0:
607    liveins: $vgpr0
608
609    ; SI-LABEL: name: test_fptoui_s16_to_s15
610    ; SI: liveins: $vgpr0
611    ; SI-NEXT: {{  $}}
612    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
613    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
614    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
615    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)
616    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
617    ; VI-LABEL: name: test_fptoui_s16_to_s15
618    ; VI: liveins: $vgpr0
619    ; VI-NEXT: {{  $}}
620    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
621    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
622    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
623    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
624    %0:_(s32) = COPY $vgpr0
625    %1:_(s16) = G_TRUNC %0
626    %2:_(s15) = G_FPTOUI %1
627    %3:_(s32) = G_ANYEXT %2
628    $vgpr0 = COPY %3
629...
630
631---
632name: test_fptoui_s16_to_s17
633body: |
634  bb.0:
635    liveins: $vgpr0
636
637    ; SI-LABEL: name: test_fptoui_s16_to_s17
638    ; SI: liveins: $vgpr0
639    ; SI-NEXT: {{  $}}
640    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
641    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
642    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
643    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)
644    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
645    ; VI-LABEL: name: test_fptoui_s16_to_s17
646    ; VI: liveins: $vgpr0
647    ; VI-NEXT: {{  $}}
648    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
649    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
650    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
651    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
652    %0:_(s32) = COPY $vgpr0
653    %1:_(s16) = G_TRUNC %0
654    %2:_(s17) = G_FPTOUI %1
655    %3:_(s32) = G_ANYEXT %2
656    $vgpr0 = COPY %3
657...
658
659---
660name: test_fptoui_s32_to_s33
661body: |
662  bb.0:
663    liveins: $vgpr0
664
665    ; SI-LABEL: name: test_fptoui_s32_to_s33
666    ; SI: liveins: $vgpr0
667    ; SI-NEXT: {{  $}}
668    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
669    ; SI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]
670    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
671    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000
672    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
673    ; SI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]
674    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
675    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)
676    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)
677    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
678    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)
679    ; VI-LABEL: name: test_fptoui_s32_to_s33
680    ; VI: liveins: $vgpr0
681    ; VI-NEXT: {{  $}}
682    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
683    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]
684    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000
685    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000
686    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]
687    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]
688    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]
689    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)
690    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)
691    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)
692    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)
693    %0:_(s32) = COPY $vgpr0
694    %1:_(s33) = G_FPTOUI %0
695    %2:_(s64) = G_ANYEXT %1
696    $vgpr0_vgpr1 = COPY %2
697...
698
699---
700name: test_fptoui_s16_to_s7
701body: |
702  bb.0:
703    liveins: $vgpr0
704
705    ; SI-LABEL: name: test_fptoui_s16_to_s7
706    ; SI: liveins: $vgpr0
707    ; SI-NEXT: {{  $}}
708    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
709    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
710    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
711    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)
712    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
713    ; VI-LABEL: name: test_fptoui_s16_to_s7
714    ; VI: liveins: $vgpr0
715    ; VI-NEXT: {{  $}}
716    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
717    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
718    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
719    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
720    %0:_(s32) = COPY $vgpr0
721    %1:_(s16) = G_TRUNC %0
722    %2:_(s7) = G_FPTOUI %1
723    %3:_(s32) = G_ANYEXT %2
724    $vgpr0 = COPY %3
725...
726
727---
728name: test_fptoui_s16_to_s8
729body: |
730  bb.0:
731    liveins: $vgpr0
732
733    ; SI-LABEL: name: test_fptoui_s16_to_s8
734    ; SI: liveins: $vgpr0
735    ; SI-NEXT: {{  $}}
736    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
737    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
738    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
739    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)
740    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
741    ; VI-LABEL: name: test_fptoui_s16_to_s8
742    ; VI: liveins: $vgpr0
743    ; VI-NEXT: {{  $}}
744    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
745    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
746    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
747    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
748    %0:_(s32) = COPY $vgpr0
749    %1:_(s16) = G_TRUNC %0
750    %2:_(s8) = G_FPTOUI %1
751    %3:_(s32) = G_ANYEXT %2
752    $vgpr0 = COPY %3
753...
754
755---
756name: test_fptoui_s16_to_s9
757body: |
758  bb.0:
759    liveins: $vgpr0
760
761    ; SI-LABEL: name: test_fptoui_s16_to_s9
762    ; SI: liveins: $vgpr0
763    ; SI-NEXT: {{  $}}
764    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
765    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
766    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)
767    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)
768    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
769    ; VI-LABEL: name: test_fptoui_s16_to_s9
770    ; VI: liveins: $vgpr0
771    ; VI-NEXT: {{  $}}
772    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
773    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
774    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)
775    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
776    %0:_(s32) = COPY $vgpr0
777    %1:_(s16) = G_TRUNC %0
778    %2:_(s9) = G_FPTOUI %1
779    %3:_(s32) = G_ANYEXT %2
780    $vgpr0 = COPY %3
781...
782
783---
784name: test_fptoui_s32_to_s15
785body: |
786  bb.0:
787    liveins: $vgpr0
788
789    ; SI-LABEL: name: test_fptoui_s32_to_s15
790    ; SI: liveins: $vgpr0
791    ; SI-NEXT: {{  $}}
792    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
793    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
794    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
795    ; VI-LABEL: name: test_fptoui_s32_to_s15
796    ; VI: liveins: $vgpr0
797    ; VI-NEXT: {{  $}}
798    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
799    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
800    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
801    %0:_(s32) = COPY $vgpr0
802    %1:_(s15) = G_FPTOUI %0
803    %2:_(s32) = G_ANYEXT %1
804    $vgpr0 = COPY %2
805...
806
807---
808name: test_fptoui_s32_to_s17
809body: |
810  bb.0:
811    liveins: $vgpr0
812
813    ; SI-LABEL: name: test_fptoui_s32_to_s17
814    ; SI: liveins: $vgpr0
815    ; SI-NEXT: {{  $}}
816    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
817    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
818    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
819    ; VI-LABEL: name: test_fptoui_s32_to_s17
820    ; VI: liveins: $vgpr0
821    ; VI-NEXT: {{  $}}
822    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
823    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)
824    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)
825    %0:_(s32) = COPY $vgpr0
826    %1:_(s17) = G_FPTOUI %0
827    %2:_(s32) = G_ANYEXT %1
828    $vgpr0 = COPY %2
829...
830