[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / legalize-uitofp.mir
blob4af74abb5dfe776b98456276711002a0085c14a0
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=GFX6 %s
3 # RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX8 %s
5 ---
6 name: test_uitofp_s32_to_s32
7 body: |
8   bb.0:
9     liveins: $vgpr0
11     ; GFX6-LABEL: name: test_uitofp_s32_to_s32
12     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
13     ; GFX6: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)
14     ; GFX6: $vgpr0 = COPY [[UITOFP]](s32)
15     ; GFX8-LABEL: name: test_uitofp_s32_to_s32
16     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
17     ; GFX8: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)
18     ; GFX8: $vgpr0 = COPY [[UITOFP]](s32)
19     %0:_(s32) = COPY $vgpr0
20     %1:_(s32) = G_UITOFP %0
21     $vgpr0 = COPY %1
22 ...
24 ---
25 name: test_uitofp_s32_to_s64
26 body: |
27   bb.0:
28     liveins: $vgpr0
30     ; GFX6-LABEL: name: test_uitofp_s32_to_s64
31     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
32     ; GFX6: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)
33     ; GFX6: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)
34     ; GFX8-LABEL: name: test_uitofp_s32_to_s64
35     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
36     ; GFX8: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)
37     ; GFX8: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)
38     %0:_(s32) = COPY $vgpr0
39     %1:_(s64) = G_UITOFP %0
40     $vgpr0_vgpr1 = COPY %1
41 ...
43 ---
44 name: test_uitofp_v2s32_to_v2s32
45 body: |
46   bb.0:
47     liveins: $vgpr0_vgpr1
49     ; GFX6-LABEL: name: test_uitofp_v2s32_to_v2s32
50     ; GFX6: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
51     ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
52     ; GFX6: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[UV]](s32)
53     ; GFX6: [[UITOFP1:%[0-9]+]]:_(s32) = G_UITOFP [[UV1]](s32)
54     ; GFX6: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UITOFP]](s32), [[UITOFP1]](s32)
55     ; GFX6: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
56     ; GFX8-LABEL: name: test_uitofp_v2s32_to_v2s32
57     ; GFX8: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
58     ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
59     ; GFX8: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[UV]](s32)
60     ; GFX8: [[UITOFP1:%[0-9]+]]:_(s32) = G_UITOFP [[UV1]](s32)
61     ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UITOFP]](s32), [[UITOFP1]](s32)
62     ; GFX8: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
63     %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
64     %1:_(<2 x s32>) = G_UITOFP %0
65     $vgpr0_vgpr1 = COPY %1
66 ...
68 ---
69 name: test_uitofp_s64_to_s32
70 body: |
71   bb.0:
72     liveins: $vgpr0_vgpr1
74     ; GFX6-LABEL: name: test_uitofp_s64_to_s32
75     ; GFX6: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
76     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
77     ; GFX6: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
78     ; GFX6: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[COPY]](s64)
79     ; GFX6: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 190
80     ; GFX6: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C2]], [[CTLZ_ZERO_UNDEF]]
81     ; GFX6: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[C1]]
82     ; GFX6: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C]]
83     ; GFX6: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807
84     ; GFX6: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[CTLZ_ZERO_UNDEF]](s32)
85     ; GFX6: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C3]]
86     ; GFX6: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775
87     ; GFX6: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C4]]
88     ; GFX6: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 40
89     ; GFX6: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C5]](s64)
90     ; GFX6: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[TRUNC]](s32)
91     ; GFX6: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 23
92     ; GFX6: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C6]](s32)
93     ; GFX6: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)
94     ; GFX6: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC1]]
95     ; GFX6: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888
96     ; GFX6: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C7]]
97     ; GFX6: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C7]]
98     ; GFX6: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
99     ; GFX6: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C8]]
100     ; GFX6: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C]]
101     ; GFX6: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C8]], [[SELECT1]]
102     ; GFX6: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]]
103     ; GFX6: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s64)
104     ; GFX6: $vgpr0 = COPY [[UITOFP]](s32)
105     ; GFX8-LABEL: name: test_uitofp_s64_to_s32
106     ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
107     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
108     ; GFX8: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
109     ; GFX8: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[COPY]](s64)
110     ; GFX8: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 190
111     ; GFX8: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C2]], [[CTLZ_ZERO_UNDEF]]
112     ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](s64), [[C1]]
113     ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C]]
114     ; GFX8: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807
115     ; GFX8: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[CTLZ_ZERO_UNDEF]](s32)
116     ; GFX8: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C3]]
117     ; GFX8: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775
118     ; GFX8: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C4]]
119     ; GFX8: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 40
120     ; GFX8: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C5]](s64)
121     ; GFX8: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[TRUNC]](s32)
122     ; GFX8: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 23
123     ; GFX8: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C6]](s32)
124     ; GFX8: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)
125     ; GFX8: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC1]]
126     ; GFX8: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888
127     ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C7]]
128     ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C7]]
129     ; GFX8: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
130     ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C8]]
131     ; GFX8: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C]]
132     ; GFX8: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C8]], [[SELECT1]]
133     ; GFX8: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]]
134     ; GFX8: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s64)
135     ; GFX8: $vgpr0 = COPY [[UITOFP]](s32)
136     %0:_(s64) = COPY $vgpr0_vgpr1
137     %1:_(s32) = G_UITOFP %0
138     $vgpr0 = COPY %1
142 name: test_uitofp_s64_to_s64
143 body: |
144   bb.0:
145     liveins: $vgpr0_vgpr1
147     ; GFX6-LABEL: name: test_uitofp_s64_to_s64
148     ; GFX6: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
149     ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
150     ; GFX6: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV1]](s32)
151     ; GFX6: [[UITOFP1:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32)
152     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
153     ; GFX6: [[INT:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), [[UITOFP]](s64), [[C]](s32)
154     ; GFX6: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[INT]], [[UITOFP1]]
155     ; GFX6: $vgpr0_vgpr1 = COPY [[FADD]](s64)
156     ; GFX8-LABEL: name: test_uitofp_s64_to_s64
157     ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
158     ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)
159     ; GFX8: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV1]](s32)
160     ; GFX8: [[UITOFP1:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32)
161     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32
162     ; GFX8: [[INT:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), [[UITOFP]](s64), [[C]](s32)
163     ; GFX8: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[INT]], [[UITOFP1]]
164     ; GFX8: $vgpr0_vgpr1 = COPY [[FADD]](s64)
165     %0:_(s64) = COPY $vgpr0_vgpr1
166     %1:_(s64) = G_UITOFP %0
167     $vgpr0_vgpr1 = COPY %1
171 name: test_uitofp_s16_to_s16
172 body: |
173   bb.0:
174     liveins: $vgpr0
176     ; GFX6-LABEL: name: test_uitofp_s16_to_s16
177     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
178     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
179     ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
180     ; GFX6: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
181     ; GFX6: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[AND]](s32)
182     ; GFX6: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)
183     ; GFX6: $vgpr0 = COPY [[ANYEXT]](s32)
184     ; GFX8-LABEL: name: test_uitofp_s16_to_s16
185     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
186     ; GFX8: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
187     ; GFX8: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[TRUNC]](s16)
188     ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)
189     ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32)
190     %0:_(s32) = COPY $vgpr0
191     %1:_(s16) = G_TRUNC %0
192     %2:_(s16) = G_UITOFP %1
193     %3:_(s32) = G_ANYEXT %2
194     $vgpr0 = COPY %3
198 name: test_uitofp_s16_to_s32
199 body: |
200   bb.0:
201     liveins: $vgpr0
203     ; GFX6-LABEL: name: test_uitofp_s16_to_s32
204     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
205     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
206     ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
207     ; GFX6: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
208     ; GFX6: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
209     ; GFX6: $vgpr0 = COPY [[UITOFP]](s32)
210     ; GFX8-LABEL: name: test_uitofp_s16_to_s32
211     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
212     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
213     ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
214     ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
215     ; GFX8: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
216     ; GFX8: $vgpr0 = COPY [[UITOFP]](s32)
217     %0:_(s32) = COPY $vgpr0
218     %1:_(s16) = G_TRUNC %0
219     %2:_(s32) = G_UITOFP %1
220     $vgpr0 = COPY %2
224 name: test_uitofp_s16_to_s64
225 body: |
226   bb.0:
227     liveins: $vgpr0
229     ; GFX6-LABEL: name: test_uitofp_s16_to_s64
230     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
231     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
232     ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
233     ; GFX6: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
234     ; GFX6: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
235     ; GFX6: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)
236     ; GFX8-LABEL: name: test_uitofp_s16_to_s64
237     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
238     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
239     ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
240     ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
241     ; GFX8: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
242     ; GFX8: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)
243     %0:_(s32) = COPY $vgpr0
244     %1:_(s16) = G_TRUNC %0
245     %2:_(s64) = G_UITOFP %1
246     $vgpr0_vgpr1 = COPY %2
250 name: test_uitofp_s8_to_s16
251 body: |
252   bb.0:
253     liveins: $vgpr0
255     ; GFX6-LABEL: name: test_uitofp_s8_to_s16
256     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
257     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
258     ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
259     ; GFX6: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
260     ; GFX6: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[AND]](s32)
261     ; GFX6: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)
262     ; GFX6: $vgpr0 = COPY [[ANYEXT]](s32)
263     ; GFX8-LABEL: name: test_uitofp_s8_to_s16
264     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
265     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
266     ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
267     ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
268     ; GFX8: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[AND]](s32)
269     ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)
270     ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32)
271     %0:_(s32) = COPY $vgpr0
272     %1:_(s8) = G_TRUNC %0
273     %2:_(s16) = G_UITOFP %1
274     %3:_(s32) = G_ANYEXT %2
275     $vgpr0 = COPY %3
279 name: test_uitofp_s8_to_s32
280 body: |
281   bb.0:
282     liveins: $vgpr0
284     ; GFX6-LABEL: name: test_uitofp_s8_to_s32
285     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
286     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
287     ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
288     ; GFX6: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
289     ; GFX6: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
290     ; GFX6: $vgpr0 = COPY [[UITOFP]](s32)
291     ; GFX8-LABEL: name: test_uitofp_s8_to_s32
292     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
293     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
294     ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
295     ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
296     ; GFX8: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)
297     ; GFX8: $vgpr0 = COPY [[UITOFP]](s32)
298     %0:_(s32) = COPY $vgpr0
299     %1:_(s8) = G_TRUNC %0
300     %2:_(s32) = G_UITOFP %1
301     $vgpr0 = COPY %2
305 name: test_uitofp_s8_to_s64
306 body: |
307   bb.0:
308     liveins: $vgpr0
310     ; GFX6-LABEL: name: test_uitofp_s8_to_s64
311     ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
312     ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
313     ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
314     ; GFX6: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
315     ; GFX6: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
316     ; GFX6: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)
317     ; GFX8-LABEL: name: test_uitofp_s8_to_s64
318     ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
319     ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
320     ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)
321     ; GFX8: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
322     ; GFX8: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)
323     ; GFX8: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)
324     %0:_(s32) = COPY $vgpr0
325     %1:_(s8) = G_TRUNC %0
326     %2:_(s64) = G_UITOFP %1
327     $vgpr0_vgpr1 = COPY %2