[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / legalize-fptoui.mir
blob2eab791f2ba129442decbcd7045c70f2315cbf07
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
5 ---
6 name: test_fptoui_s32_s32
7 body: |
8   bb.0:
9     liveins: $vgpr0
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 ...
28 ---
29 name: test_fptoui_s32_s64
30 body: |
31   bb.0:
32     liveins: $vgpr0_vgpr1
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 ...
51 ---
52 name: test_fptoui_v2s32_to_v2s32
53 body: |
54   bb.0:
55     liveins: $vgpr0_vgpr1
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 ...
80 ---
81 name: test_fptoui_v2s64_to_v2s32
82 body: |
83   bb.0:
84     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
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
110 name: test_fptoui_s16_to_s16
111 body: |
112   bb.0:
113     liveins: $vgpr0
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
139 name: test_fptoui_s32_to_s16
140 body: |
141   bb.0:
142     liveins: $vgpr0
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
163 name: test_fptoui_s64_to_s16
164 body: |
165   bb.0:
166     liveins: $vgpr0_vgpr1
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
187 name: test_fptoui_s64_s64
188 body: |
189   bb.0:
190     liveins: $vgpr0_vgpr1
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
251 name: test_fptoui_s64_s64_flags
252 body: |
253   bb.0:
254     liveins: $vgpr0_vgpr1
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
313 name: test_fptoui_v2s64_to_v2s64
314 body: |
315   bb.0:
316     liveins: $vgpr0_vgpr1_vgpr2_vgpr3
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
411 name: test_fptoui_s32_to_s64
412 body: |
413   bb.0:
414     liveins: $vgpr0
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
450 name: test_fptoui_v2s32_to_v2s64
451 body: |
452   bb.0:
453     liveins: $vgpr0_vgpr1
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
507 name: test_fptoui_s16_to_s64
508 body: |
509   bb.0:
510     liveins: $vgpr0
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
535 name: test_fptoui_v2s16_to_v2s64
536 body: |
537   bb.0:
538     liveins: $vgpr0
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
576 name: test_fptoui_s16_to_s1
577 body: |
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
604 name: test_fptoui_s16_to_s15
605 body: |
606   bb.0:
607     liveins: $vgpr0
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
632 name: test_fptoui_s16_to_s17
633 body: |
634   bb.0:
635     liveins: $vgpr0
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
660 name: test_fptoui_s32_to_s33
661 body: |
662   bb.0:
663     liveins: $vgpr0
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
700 name: test_fptoui_s16_to_s7
701 body: |
702   bb.0:
703     liveins: $vgpr0
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
728 name: test_fptoui_s16_to_s8
729 body: |
730   bb.0:
731     liveins: $vgpr0
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
756 name: test_fptoui_s16_to_s9
757 body: |
758   bb.0:
759     liveins: $vgpr0
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
784 name: test_fptoui_s32_to_s15
785 body: |
786   bb.0:
787     liveins: $vgpr0
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
808 name: test_fptoui_s32_to_s17
809 body: |
810   bb.0:
811     liveins: $vgpr0
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