Lines Matching +full:0 +full:x2f7

2 ; RUN:  llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx704 < %s  | FileCheck --check-prefixes=GFX7CHECK,GFX7SELDAG %s
4 ; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx803 < %s | FileCheck --check-prefixes=GFX8CHECK,GFX8SELDAG %s
6 ; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx908 < %s | FileCheck --check-prefixes=GFX9CHECK,GFX9SELDAG %s
8 ; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1031 < %s | FileCheck --check-prefixes=GFX10CHECK,GFX10SELDAG %s
10 ; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 < %s | FileCheck --check-prefixes=GFX11CHECK,GFX11SELDAG %s
11 ; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 < %s | FileCheck --check-prefixes=GFX11CHECK,GFX11GLISEL %s
15 ; GFX7SELDAG: ; %bb.0:
16 ; GFX7SELDAG-NEXT: s_load_dword s6, s[4:5], 0xb
17 ; GFX7SELDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9
18 ; GFX7SELDAG-NEXT: s_mov_b32 s3, 0xf000
20 ; GFX7SELDAG-NEXT: s_waitcnt lgkmcnt(0)
21 ; GFX7SELDAG-NEXT: s_and_b32 s4, s6, 0x7fff
22 ; GFX7SELDAG-NEXT: s_cmpk_gt_i32 s4, 0x7c00
23 ; GFX7SELDAG-NEXT: s_cselect_b64 s[4:5], -1, 0
24 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[4:5]
25 ; GFX7SELDAG-NEXT: buffer_store_dword v0, off, s[0:3], 0
29 ; GFX7GLISEL: ; %bb.0:
30 ; GFX7GLISEL-NEXT: s_load_dword s3, s[4:5], 0xb
31 ; GFX7GLISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9
33 ; GFX7GLISEL-NEXT: s_waitcnt lgkmcnt(0)
34 ; GFX7GLISEL-NEXT: s_and_b32 s3, s3, 0x7fff
35 ; GFX7GLISEL-NEXT: s_and_b32 s3, 0xffff, s3
36 ; GFX7GLISEL-NEXT: s_cmpk_gt_u32 s3, 0x7c00
37 ; GFX7GLISEL-NEXT: s_cselect_b32 s3, 1, 0
38 ; GFX7GLISEL-NEXT: s_bfe_i32 s3, s3, 0x10000
40 ; GFX7GLISEL-NEXT: s_mov_b32 s3, 0xf000
41 ; GFX7GLISEL-NEXT: buffer_store_dword v0, off, s[0:3], 0
45 ; GFX8CHECK: ; %bb.0:
46 ; GFX8CHECK-NEXT: s_load_dword s2, s[4:5], 0x2c
47 ; GFX8CHECK-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
48 ; GFX8CHECK-NEXT: s_waitcnt lgkmcnt(0)
51 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, -1, s[2:3]
53 ; GFX8CHECK-NEXT: flat_store_dword v[0:1], v2
57 ; GFX9CHECK: ; %bb.0:
58 ; GFX9CHECK-NEXT: s_load_dword s2, s[4:5], 0x2c
59 ; GFX9CHECK-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
60 ; GFX9CHECK-NEXT: v_mov_b32_e32 v0, 0
61 ; GFX9CHECK-NEXT: s_waitcnt lgkmcnt(0)
63 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[2:3]
64 ; GFX9CHECK-NEXT: global_store_dword v0, v1, s[0:1]
68 ; GFX10CHECK: ; %bb.0:
69 ; GFX10CHECK-NEXT: s_clause 0x1
70 ; GFX10CHECK-NEXT: s_load_dword s2, s[4:5], 0x2c
71 ; GFX10CHECK-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24
72 ; GFX10CHECK-NEXT: v_mov_b32_e32 v0, 0
73 ; GFX10CHECK-NEXT: s_waitcnt lgkmcnt(0)
75 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s2
76 ; GFX10CHECK-NEXT: global_store_dword v0, v1, s[0:1]
80 ; GFX11CHECK: ; %bb.0:
81 ; GFX11CHECK-NEXT: s_clause 0x1
82 ; GFX11CHECK-NEXT: s_load_b32 s2, s[4:5], 0x2c
83 ; GFX11CHECK-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
84 ; GFX11CHECK-NEXT: v_mov_b32_e32 v0, 0
85 ; GFX11CHECK-NEXT: s_waitcnt lgkmcnt(0)
87 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s2
88 ; GFX11CHECK-NEXT: global_store_b32 v0, v1, s[0:1]
98 ; GFX7CHECK: ; %bb.0:
99 ; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
100 ; GFX7CHECK-NEXT: v_mov_b32_e32 v0, 0
104 ; GFX8CHECK: ; %bb.0:
105 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
106 ; GFX8CHECK-NEXT: v_mov_b32_e32 v0, 0
110 ; GFX9CHECK: ; %bb.0:
111 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
112 ; GFX9CHECK-NEXT: v_mov_b32_e32 v0, 0
116 ; GFX10CHECK: ; %bb.0:
117 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
118 ; GFX10CHECK-NEXT: v_mov_b32_e32 v0, 0
122 ; GFX11CHECK: ; %bb.0:
123 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
124 ; GFX11CHECK-NEXT: v_mov_b32_e32 v0, 0
126 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 0)
133 ; GFX7CHECK: ; %bb.0:
134 ; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
139 ; GFX8CHECK: ; %bb.0:
140 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
145 ; GFX9CHECK: ; %bb.0:
146 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
151 ; GFX10CHECK: ; %bb.0:
152 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
157 ; GFX11CHECK: ; %bb.0:
158 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
161 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 1023) ; 0x3ff
167 ; GFX7SELDAG: ; %bb.0:
168 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
170 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7e00
171 ; GFX7SELDAG-NEXT: s_movk_i32 s5, 0x7c00
172 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
176 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
180 ; GFX7GLISEL: ; %bb.0:
181 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
182 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
183 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
184 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xffff83ff, v0
185 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x1ff
187 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
191 ; GFX8CHECK: ; %bb.0:
192 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
194 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
198 ; GFX9CHECK: ; %bb.0:
199 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
201 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
205 ; GFX10CHECK: ; %bb.0:
206 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
208 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
212 ; GFX11CHECK: ; %bb.0:
213 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
215 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
217 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 1) ; 0x001
223 ; GFX7SELDAG: ; %bb.0:
224 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
226 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7dff
227 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
229 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
233 ; GFX7GLISEL: ; %bb.0:
234 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
235 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
236 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
237 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7e00
239 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
243 ; GFX8CHECK: ; %bb.0:
244 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
246 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
250 ; GFX9CHECK: ; %bb.0:
251 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
253 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
257 ; GFX10CHECK: ; %bb.0:
258 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
260 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
264 ; GFX11CHECK: ; %bb.0:
265 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
267 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
269 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 2) ; 0x002
275 ; GFX7SELDAG: ; %bb.0:
276 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
278 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
280 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
284 ; GFX7GLISEL: ; %bb.0:
285 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
286 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
287 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
289 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
293 ; GFX8CHECK: ; %bb.0:
294 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
295 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x200
297 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
301 ; GFX9CHECK: ; %bb.0:
302 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
303 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x200
305 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
309 ; GFX10CHECK: ; %bb.0:
310 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
311 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x200
312 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
316 ; GFX11CHECK: ; %bb.0:
317 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
318 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x200
319 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
321 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 512) ; 0x200
327 ; GFX7SELDAG: ; %bb.0:
328 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
330 ; GFX7SELDAG-NEXT: s_mov_b32 s4, 0xfc00
332 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
336 ; GFX7GLISEL: ; %bb.0:
337 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
338 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
339 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0xfc00
341 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
345 ; GFX8CHECK: ; %bb.0:
346 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
348 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
352 ; GFX9CHECK: ; %bb.0:
353 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
355 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
359 ; GFX10CHECK: ; %bb.0:
360 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
362 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
366 ; GFX11CHECK: ; %bb.0:
367 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
369 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
371 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 4) ; 0x004
377 ; GFX7SELDAG: ; %bb.0:
378 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
380 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x7800
381 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
382 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
383 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
384 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
388 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
392 ; GFX7GLISEL: ; %bb.0:
393 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
394 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
395 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
396 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v1
398 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v1
399 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
400 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
403 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
407 ; GFX8CHECK: ; %bb.0:
408 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
409 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x100
411 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
415 ; GFX9CHECK: ; %bb.0:
416 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
417 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x100
419 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
423 ; GFX10CHECK: ; %bb.0:
424 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
425 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x100
426 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
430 ; GFX11CHECK: ; %bb.0:
431 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
432 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x100
433 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
435 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 256) ; 0x100
441 ; GFX7SELDAG: ; %bb.0:
442 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
444 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x7800
445 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
446 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
447 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
448 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
449 ; GFX7SELDAG-NEXT: v_cmp_gt_i32_e64 s[4:5], 0, v1
452 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
456 ; GFX7GLISEL: ; %bb.0:
457 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
458 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
459 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
460 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v1
462 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v1
463 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
464 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
467 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
471 ; GFX8CHECK: ; %bb.0:
472 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
474 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
478 ; GFX9CHECK: ; %bb.0:
479 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
481 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
485 ; GFX10CHECK: ; %bb.0:
486 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
488 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
492 ; GFX11CHECK: ; %bb.0:
493 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
495 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
497 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 8) ; 0x008
503 ; GFX7SELDAG: ; %bb.0:
504 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
506 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x3ff
508 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
510 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
514 ; GFX7GLISEL: ; %bb.0:
515 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
517 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
518 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x3ff
520 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
524 ; GFX8CHECK: ; %bb.0:
525 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
526 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x80
528 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
532 ; GFX9CHECK: ; %bb.0:
533 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
534 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x80
536 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
540 ; GFX10CHECK: ; %bb.0:
541 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
542 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x80
543 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
547 ; GFX11CHECK: ; %bb.0:
548 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
549 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x80
550 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
552 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 128) ; 0x080
558 ; GFX7SELDAG: ; %bb.0:
559 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
561 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
562 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
564 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x3ff
565 ; GFX7SELDAG-NEXT: v_cmp_gt_i32_e32 vcc, 0, v1
568 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
572 ; GFX7GLISEL: ; %bb.0:
573 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
574 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
575 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
576 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v1
579 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
580 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x3ff
583 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
587 ; GFX8CHECK: ; %bb.0:
588 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
590 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
594 ; GFX9CHECK: ; %bb.0:
595 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
597 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
601 ; GFX10CHECK: ; %bb.0:
602 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
604 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
608 ; GFX11CHECK: ; %bb.0:
609 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
611 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
613 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 16) ; 0x010
619 ; GFX7SELDAG: ; %bb.0:
620 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
622 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
623 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
627 ; GFX7GLISEL: ; %bb.0:
628 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
629 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
630 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
631 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
635 ; GFX8CHECK: ; %bb.0:
636 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
638 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
642 ; GFX9CHECK: ; %bb.0:
643 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
645 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
649 ; GFX10CHECK: ; %bb.0:
650 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
652 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
656 ; GFX11CHECK: ; %bb.0:
657 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
659 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
661 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 64) ; 0x040
667 ; GFX7SELDAG: ; %bb.0:
668 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
670 ; GFX7SELDAG-NEXT: s_mov_b32 s4, 0x8000
672 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
676 ; GFX7GLISEL: ; %bb.0:
677 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
678 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
679 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x8000
681 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
685 ; GFX8CHECK: ; %bb.0:
686 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
688 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
692 ; GFX9CHECK: ; %bb.0:
693 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
695 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
699 ; GFX10CHECK: ; %bb.0:
700 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
702 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
706 ; GFX11CHECK: ; %bb.0:
707 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
709 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
711 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 32) ; 0x020
717 ; GFX7SELDAG: ; %bb.0:
718 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
720 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
722 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
726 ; GFX7GLISEL: ; %bb.0:
727 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
728 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
729 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
731 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
735 ; GFX8CHECK: ; %bb.0:
736 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
737 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x1c0
739 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
743 ; GFX9CHECK: ; %bb.0:
744 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
745 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x1c0
747 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
751 ; GFX10CHECK: ; %bb.0:
752 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
753 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x1c0
754 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
758 ; GFX11CHECK: ; %bb.0:
759 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
760 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x1c0
761 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
763 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 448) ; 0x1c0
769 ; GFX7SELDAG: ; %bb.0:
770 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
772 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
773 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
774 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
775 ; GFX7SELDAG-NEXT: v_cmp_gt_i32_e32 vcc, 0, v1
778 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
782 ; GFX7GLISEL: ; %bb.0:
783 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
784 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
785 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
786 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
788 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v0, 0x7c00
791 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
795 ; GFX8CHECK: ; %bb.0:
796 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
798 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
802 ; GFX9CHECK: ; %bb.0:
803 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
805 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
809 ; GFX10CHECK: ; %bb.0:
810 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
812 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
816 ; GFX11CHECK: ; %bb.0:
817 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
819 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
821 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 56) ; 0x038
827 ; GFX7SELDAG: ; %bb.0:
828 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
830 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
831 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
833 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
837 ; GFX7GLISEL: ; %bb.0:
838 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
839 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
840 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
841 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
843 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
847 ; GFX8CHECK: ; %bb.0:
848 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
850 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
854 ; GFX9CHECK: ; %bb.0:
855 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
857 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
861 ; GFX10CHECK: ; %bb.0:
862 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
864 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
868 ; GFX11CHECK: ; %bb.0:
869 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
871 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
879 ; GFX7SELDAG: ; %bb.0:
880 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
882 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c01
883 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
885 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
889 ; GFX7GLISEL: ; %bb.0:
890 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
891 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
892 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
893 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c01
895 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
899 ; GFX8CHECK: ; %bb.0:
900 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
901 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x3fc
903 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
907 ; GFX9CHECK: ; %bb.0:
908 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
909 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x3fc
911 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
915 ; GFX10CHECK: ; %bb.0:
916 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
917 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x3fc
918 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
922 ; GFX11CHECK: ; %bb.0:
923 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
924 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x3fc
925 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
933 ; GFX7SELDAG: ; %bb.0:
934 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
937 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
938 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
939 ; GFX7SELDAG-NEXT: v_and_b32_e32 v1, 0x7fff, v1
941 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
943 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
947 ; GFX7GLISEL: ; %bb.0:
948 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
949 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
950 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
951 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
952 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v1
953 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
955 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
957 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
961 ; GFX8SELDAG: ; %bb.0:
962 ; GFX8SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
965 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
967 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
971 ; GFX8GLISEL: ; %bb.0:
972 ; GFX8GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
975 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
977 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]
981 ; GFX9SELDAG: ; %bb.0:
982 ; GFX9SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
985 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]
986 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
990 ; GFX9GLISEL: ; %bb.0:
991 ; GFX9GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
994 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5]
996 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]
1001 ; GFX10SELDAG: ; %bb.0:
1002 ; GFX10SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1005 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc_lo
1006 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4
1011 ; GFX10GLISEL: ; %bb.0:
1012 ; GFX10GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1015 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4
1018 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4
1022 ; GFX11SELDAG: ; %bb.0:
1023 ; GFX11SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1026 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
1028 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo
1032 ; GFX11GLISEL: ; %bb.0:
1033 ; GFX11GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1036 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1038 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0
1046 ; GFX7SELDAG: ; %bb.0:
1047 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1051 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
1052 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1053 ; GFX7SELDAG-NEXT: v_and_b32_e32 v1, 0x7fff, v1
1055 ; GFX7SELDAG-NEXT: v_and_b32_e32 v2, 0x7fff, v2
1056 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1058 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1060 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1064 ; GFX7GLISEL: ; %bb.0:
1065 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1066 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1067 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1068 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v3, 0x7c00
1069 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v1
1070 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
1071 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0x7fff, v2
1073 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v2
1074 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1076 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1078 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1082 ; GFX8SELDAG: ; %bb.0:
1083 ; GFX8SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1086 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
1088 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1090 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1095 ; GFX8GLISEL: ; %bb.0:
1096 ; GFX8GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1099 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1101 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5]
1103 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5]
1108 ; GFX9SELDAG: ; %bb.0:
1109 ; GFX9SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1112 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5]
1113 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1115 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1120 ; GFX9GLISEL: ; %bb.0:
1121 ; GFX9GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1124 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5]
1126 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5]
1128 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5]
1134 ; GFX10SELDAG: ; %bb.0:
1135 ; GFX10SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1138 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4
1139 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
1142 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc_lo
1146 ; GFX10GLISEL: ; %bb.0:
1147 ; GFX10GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1150 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4
1153 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4
1156 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4
1160 ; GFX11SELDAG: ; %bb.0:
1161 ; GFX11SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1164 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
1166 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc_lo
1169 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc_lo
1173 ; GFX11GLISEL: ; %bb.0:
1174 ; GFX11GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1177 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1179 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0
1182 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0
1190 ; GFX7SELDAG: ; %bb.0:
1191 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1196 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
1197 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1198 ; GFX7SELDAG-NEXT: v_and_b32_e32 v1, 0x7fff, v1
1200 ; GFX7SELDAG-NEXT: v_and_b32_e32 v2, 0x7fff, v2
1201 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1203 ; GFX7SELDAG-NEXT: v_and_b32_e32 v3, 0x7fff, v3
1204 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1206 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1208 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
1212 ; GFX7GLISEL: ; %bb.0:
1213 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1214 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1215 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1216 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v4, 0x7c00
1217 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v1
1218 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
1219 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0x7fff, v2
1221 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v2
1222 ; GFX7GLISEL-NEXT: v_and_b32_e32 v3, 0x7fff, v3
1223 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1225 ; GFX7GLISEL-NEXT: v_and_b32_e32 v3, 0xffff, v3
1226 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc
1228 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1230 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
1234 ; GFX8SELDAG: ; %bb.0:
1235 ; GFX8SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1239 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc
1241 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc
1243 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1245 ; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1250 ; GFX8GLISEL: ; %bb.0:
1251 ; GFX8GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1254 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1257 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5]
1259 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5]
1261 ; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5]
1266 ; GFX9SELDAG: ; %bb.0:
1267 ; GFX9SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1270 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5]
1272 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1274 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5]
1275 ; GFX9SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc
1280 ; GFX9GLISEL: ; %bb.0:
1281 ; GFX9GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1284 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5]
1286 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5]
1288 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5]
1290 ; GFX9GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5]
1296 ; GFX10SELDAG: ; %bb.0:
1297 ; GFX10SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1300 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4
1301 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
1305 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc_lo
1306 ; GFX10SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4
1310 ; GFX10GLISEL: ; %bb.0:
1311 ; GFX10GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1314 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4
1317 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, s4
1319 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4
1322 ; GFX10GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4
1326 ; GFX11SELDAG: ; %bb.0:
1327 ; GFX11SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1331 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc_lo
1333 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc_lo
1335 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc_lo
1337 ; GFX11SELDAG-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc_lo
1341 ; GFX11GLISEL: ; %bb.0:
1342 ; GFX11GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1346 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1348 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0
1350 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0
1352 ; GFX11GLISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0
1360 ; GFX7SELDAG: ; %bb.0:
1361 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1363 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
1364 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
1367 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1369 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1373 ; GFX7GLISEL: ; %bb.0:
1374 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1375 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1376 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1377 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
1379 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1383 ; GFX8CHECK: ; %bb.0:
1384 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1386 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1390 ; GFX9CHECK: ; %bb.0:
1391 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1393 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1397 ; GFX10CHECK: ; %bb.0:
1398 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1400 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1404 ; GFX11CHECK: ; %bb.0:
1405 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1407 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1415 ; GFX7SELDAG: ; %bb.0:
1416 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1418 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
1419 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1421 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1425 ; GFX7GLISEL: ; %bb.0:
1426 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1427 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1428 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1429 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
1431 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1435 ; GFX8CHECK: ; %bb.0:
1436 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1437 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x204
1439 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1443 ; GFX9CHECK: ; %bb.0:
1444 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1445 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x204
1447 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1451 ; GFX10CHECK: ; %bb.0:
1452 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1453 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x204
1454 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1458 ; GFX11CHECK: ; %bb.0:
1459 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1460 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x204
1461 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1463 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 516) ; 0x204 = "inf"
1469 ; GFX7SELDAG: ; %bb.0:
1470 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1472 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
1473 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1475 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1479 ; GFX7GLISEL: ; %bb.0:
1480 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1481 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1482 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1483 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
1485 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1489 ; GFX8CHECK: ; %bb.0:
1490 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1491 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8
1493 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1497 ; GFX9CHECK: ; %bb.0:
1498 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1499 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8
1501 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1505 ; GFX10CHECK: ; %bb.0:
1506 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1507 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x1f8
1508 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1512 ; GFX11CHECK: ; %bb.0:
1513 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1514 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x1f8
1515 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1517 %1 = call i1 @llvm.is.fpclass.f16(half %x, i32 504) ; 0x1f8 = "finite"
1523 ; GFX7SELDAG: ; %bb.0: ; %entry
1524 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1526 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7c00, v0
1527 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
1528 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1532 ; GFX7GLISEL: ; %bb.0: ; %entry
1533 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1534 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7c00, v0
1535 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1536 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
1537 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1541 ; GFX8CHECK: ; %bb.0: ; %entry
1542 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1543 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0xf0
1545 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1549 ; GFX9CHECK: ; %bb.0: ; %entry
1550 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1551 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0xf0
1553 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1557 ; GFX10CHECK: ; %bb.0: ; %entry
1558 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1559 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0xf0
1560 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1564 ; GFX11CHECK: ; %bb.0: ; %entry
1565 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1566 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0xf0
1567 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1570 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 240) ; 0xf0 = "subnormal|zero"
1576 ; GFX7SELDAG: ; %bb.0: ; %entry
1577 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1579 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7c00, v0
1580 ; GFX7SELDAG-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0
1581 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1585 ; GFX7GLISEL: ; %bb.0: ; %entry
1586 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1587 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1588 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
1589 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
1590 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1592 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1593 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
1596 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1600 ; GFX8CHECK: ; %bb.0: ; %entry
1601 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1602 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x30f
1604 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1608 ; GFX9CHECK: ; %bb.0: ; %entry
1609 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1610 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x30f
1612 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1616 ; GFX10CHECK: ; %bb.0: ; %entry
1617 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1618 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x30f
1619 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1623 ; GFX11CHECK: ; %bb.0: ; %entry
1624 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1625 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x30f
1626 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1629 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 783) ; ~0xf0 = "~(subnormal|zero)"
1635 ; GFX7SELDAG: ; %bb.0:
1636 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1638 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7800
1639 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1640 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1641 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
1643 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1647 ; GFX7GLISEL: ; %bb.0:
1648 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1649 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1650 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1651 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1652 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
1654 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1658 ; GFX8CHECK: ; %bb.0:
1659 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1660 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x108
1662 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1666 ; GFX9CHECK: ; %bb.0:
1667 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1668 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x108
1670 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1674 ; GFX10CHECK: ; %bb.0:
1675 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1676 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x108
1677 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1681 ; GFX11CHECK: ; %bb.0:
1682 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1683 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x108
1684 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1686 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 264) ; 0x108 = "normal"
1692 ; GFX7SELDAG: ; %bb.0:
1693 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1695 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x77ff
1696 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1697 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1698 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
1700 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1704 ; GFX7GLISEL: ; %bb.0:
1705 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1706 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
1707 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7c00, v0
1708 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1709 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
1710 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
1711 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v1
1716 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1720 ; GFX8CHECK: ; %bb.0:
1721 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1722 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x2f7
1724 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1728 ; GFX9CHECK: ; %bb.0:
1729 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1730 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x2f7
1732 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1736 ; GFX10CHECK: ; %bb.0:
1737 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1738 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x2f7
1739 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1743 ; GFX11CHECK: ; %bb.0:
1744 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1745 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x2f7
1746 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1748 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 759) ; ~0x108 = "~normal"
1754 ; GFX7SELDAG: ; %bb.0:
1755 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1757 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x77ff
1758 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
1759 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1760 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1761 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
1762 ; GFX7SELDAG-NEXT: v_cmp_gt_i32_e64 s[4:5], 0, v1
1765 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1769 ; GFX7GLISEL: ; %bb.0:
1770 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1771 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
1772 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v0
1773 ; GFX7GLISEL-NEXT: v_and_b32_e32 v3, 0xffff, v1
1774 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7c00, v0
1776 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
1777 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1778 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
1783 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v1
1784 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1785 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
1789 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1793 ; GFX8CHECK: ; %bb.0:
1794 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1795 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x2ff
1797 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1801 ; GFX9CHECK: ; %bb.0:
1802 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1803 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x2ff
1805 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1809 ; GFX10CHECK: ; %bb.0:
1810 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1811 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x2ff
1812 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1816 ; GFX11CHECK: ; %bb.0:
1817 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1818 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x2ff
1819 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1821 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 767) ; ~0x100 = ~"+normal"
1827 ; GFX7SELDAG: ; %bb.0:
1828 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1830 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x77ff
1831 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
1832 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1833 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1834 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
1838 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1842 ; GFX7GLISEL: ; %bb.0:
1843 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1844 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
1845 ; GFX7GLISEL-NEXT: v_and_b32_e32 v2, 0xffff, v0
1846 ; GFX7GLISEL-NEXT: v_and_b32_e32 v3, 0xffff, v1
1847 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7c00, v0
1849 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
1850 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1851 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
1856 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v1
1857 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1858 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
1862 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1866 ; GFX8CHECK: ; %bb.0:
1867 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1868 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x3f7
1870 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1874 ; GFX9CHECK: ; %bb.0:
1875 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1876 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x3f7
1878 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1882 ; GFX10CHECK: ; %bb.0:
1883 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1884 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x3f7
1885 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1889 ; GFX11CHECK: ; %bb.0:
1890 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1891 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x3f7
1892 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1894 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 1015) ; ~0x008 = ~"-normal"
1900 ; GFX7SELDAG: ; %bb.0:
1901 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1903 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x3ff
1904 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1907 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1911 ; GFX7GLISEL: ; %bb.0:
1912 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1913 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1915 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1916 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x3ff
1918 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1922 ; GFX8CHECK: ; %bb.0:
1923 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1924 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x90
1926 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1930 ; GFX9CHECK: ; %bb.0:
1931 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1932 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x90
1934 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1938 ; GFX10CHECK: ; %bb.0:
1939 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1940 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x90
1941 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
1945 ; GFX11CHECK: ; %bb.0:
1946 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1947 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x90
1948 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
1950 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 144) ; 0x90 = "subnormal"
1956 ; GFX7SELDAG: ; %bb.0:
1957 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1959 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x3fe
1960 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1963 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1967 ; GFX7GLISEL: ; %bb.0:
1968 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1969 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
1970 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
1971 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
1972 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1
1977 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
1978 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
1979 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
1982 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
1986 ; GFX8CHECK: ; %bb.0:
1987 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1988 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x36f
1990 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
1994 ; GFX9CHECK: ; %bb.0:
1995 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1996 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x36f
1998 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2002 ; GFX10CHECK: ; %bb.0:
2003 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2004 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x36f
2005 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2009 ; GFX11CHECK: ; %bb.0:
2010 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2011 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x36f
2012 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2014 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 879) ; ~0x90 = ~"subnormal"
2020 ; GFX7SELDAG: ; %bb.0:
2021 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2023 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2024 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
2025 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2029 ; GFX7GLISEL: ; %bb.0:
2030 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2031 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2032 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2033 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
2034 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2038 ; GFX8CHECK: ; %bb.0:
2039 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2040 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x60
2042 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2046 ; GFX9CHECK: ; %bb.0:
2047 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2048 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x60
2050 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2054 ; GFX10CHECK: ; %bb.0:
2055 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2056 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x60
2057 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2061 ; GFX11CHECK: ; %bb.0:
2062 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2063 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x60
2064 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2066 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 96) ; 0x60 = "zero"
2072 ; GFX7SELDAG: ; %bb.0:
2073 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2075 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2076 ; GFX7SELDAG-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0
2077 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2081 ; GFX7GLISEL: ; %bb.0:
2082 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2083 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2085 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2086 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x3ff
2088 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
2089 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2094 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2095 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2096 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
2099 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2103 ; GFX8CHECK: ; %bb.0:
2104 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2105 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x39f
2107 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2111 ; GFX9CHECK: ; %bb.0:
2112 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2113 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x39f
2115 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2119 ; GFX10CHECK: ; %bb.0:
2120 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2121 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x39f
2122 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2126 ; GFX11CHECK: ; %bb.0:
2127 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2128 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x39f
2129 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2131 %class = tail call i1 @llvm.is.fpclass.f16(half %x, i32 927) ; ~0x60 = ~"zero"
2137 ; GFX7SELDAG: ; %bb.0:
2138 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2140 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c01
2142 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2146 ; GFX7GLISEL: ; %bb.0:
2147 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2148 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2149 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c01
2151 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2155 ; GFX8CHECK: ; %bb.0:
2156 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2157 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x3c0
2159 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2163 ; GFX9CHECK: ; %bb.0:
2164 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2165 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x3c0
2167 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2171 ; GFX10CHECK: ; %bb.0:
2172 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2173 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x3c0
2174 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2178 ; GFX11CHECK: ; %bb.0:
2179 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2180 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x3c0
2181 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2189 ; GFX7SELDAG: ; %bb.0:
2190 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2192 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x7c00
2193 ; GFX7SELDAG-NEXT: s_mov_b32 s7, 0xfc00
2194 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
2195 ; GFX7SELDAG-NEXT: v_and_b32_e32 v2, 0x7fff, v0
2196 ; GFX7SELDAG-NEXT: v_cmp_gt_i32_e32 vcc, 0, v1
2203 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2207 ; GFX7GLISEL: ; %bb.0:
2208 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2209 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
2210 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2211 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2212 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2215 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v3, 0xfc00
2221 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2225 ; GFX8CHECK: ; %bb.0:
2226 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2228 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2232 ; GFX9CHECK: ; %bb.0:
2233 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2235 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2239 ; GFX10CHECK: ; %bb.0:
2240 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2242 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2246 ; GFX11CHECK: ; %bb.0:
2247 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2249 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2257 ; GFX7SELDAG: ; %bb.0:
2258 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2260 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
2261 ; GFX7SELDAG-NEXT: s_mov_b32 s6, 0xfc00
2262 ; GFX7SELDAG-NEXT: v_bfe_i32 v1, v0, 0, 16
2263 ; GFX7SELDAG-NEXT: v_and_b32_e32 v2, 0x7fff, v0
2264 ; GFX7SELDAG-NEXT: v_cmp_gt_i32_e32 vcc, 0, v1
2269 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2273 ; GFX7GLISEL: ; %bb.0:
2274 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2275 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
2276 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2277 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2278 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2281 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0xfc00
2285 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2289 ; GFX8CHECK: ; %bb.0:
2290 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2292 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2296 ; GFX9CHECK: ; %bb.0:
2297 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2299 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2303 ; GFX10CHECK: ; %bb.0:
2304 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2306 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2310 ; GFX11CHECK: ; %bb.0:
2311 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2313 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2321 ; GFX7SELDAG: ; %bb.0:
2322 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2324 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c01
2325 ; GFX7SELDAG-NEXT: s_movk_i32 s5, 0x7c00
2327 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2330 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2334 ; GFX7GLISEL: ; %bb.0:
2335 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2336 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0x7fff, v0
2337 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2338 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c01
2340 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v1
2341 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
2344 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2348 ; GFX8CHECK: ; %bb.0:
2349 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2350 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x3c3
2352 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2356 ; GFX9CHECK: ; %bb.0:
2357 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2358 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x3c3
2360 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2364 ; GFX10CHECK: ; %bb.0:
2365 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2366 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x3c3
2367 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2371 ; GFX11CHECK: ; %bb.0:
2372 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2373 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x3c3
2374 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2382 ; GFX7SELDAG: ; %bb.0: ; %entry
2383 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2385 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
2386 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2388 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v0
2390 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2394 ; GFX7GLISEL: ; %bb.0: ; %entry
2395 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2396 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2397 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2398 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xffff83ff, v0
2399 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0xffff8400
2401 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2405 ; GFX8CHECK: ; %bb.0: ; %entry
2406 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2407 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x63
2409 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2413 ; GFX9CHECK: ; %bb.0: ; %entry
2414 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2415 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x63
2417 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2421 ; GFX10CHECK: ; %bb.0: ; %entry
2422 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2423 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x63
2424 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2428 ; GFX11CHECK: ; %bb.0: ; %entry
2429 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2430 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x63
2431 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2434 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 99) ; 0x60|0x3 = "zero|nan"
2435 ret i1 %0
2438 define i1 @iszero_or_nan_f_daz(half %x) #0 {
2440 ; GFX7SELDAG: ; %bb.0: ; %entry
2441 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2443 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
2444 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2446 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v0
2448 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2452 ; GFX7GLISEL: ; %bb.0: ; %entry
2453 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2454 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2455 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2456 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xffff83ff, v0
2457 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0xffff8400
2459 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2463 ; GFX8CHECK: ; %bb.0: ; %entry
2464 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2465 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x63
2467 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2471 ; GFX9CHECK: ; %bb.0: ; %entry
2472 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2473 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x63
2475 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2479 ; GFX10CHECK: ; %bb.0: ; %entry
2480 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2481 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x63
2482 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2486 ; GFX11CHECK: ; %bb.0: ; %entry
2487 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2488 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x63
2489 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2492 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 99) ; 0x60|0x3 = "zero|nan"
2493 ret i1 %0
2498 ; GFX7SELDAG: ; %bb.0: ; %entry
2499 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2501 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
2502 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2504 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v0
2506 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2510 ; GFX7GLISEL: ; %bb.0: ; %entry
2511 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2512 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2513 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2514 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xffff83ff, v0
2515 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0xffff8400
2517 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2521 ; GFX8CHECK: ; %bb.0: ; %entry
2522 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2523 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x63
2525 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2529 ; GFX9CHECK: ; %bb.0: ; %entry
2530 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2531 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x63
2533 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2537 ; GFX10CHECK: ; %bb.0: ; %entry
2538 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2539 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x63
2540 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2544 ; GFX11CHECK: ; %bb.0: ; %entry
2545 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2546 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x63
2547 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2550 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 99) ; 0x60|0x3 = "zero|nan"
2551 ret i1 %0
2556 ; GFX7SELDAG: ; %bb.0: ; %entry
2557 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2559 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c01
2560 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2562 ; GFX7SELDAG-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v0
2564 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2568 ; GFX7GLISEL: ; %bb.0: ; %entry
2569 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2570 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2572 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2573 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x3ff
2575 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
2576 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2579 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2580 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2581 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
2584 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2588 ; GFX8CHECK: ; %bb.0: ; %entry
2589 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2590 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x39c
2592 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2596 ; GFX9CHECK: ; %bb.0: ; %entry
2597 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2598 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x39c
2600 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2604 ; GFX10CHECK: ; %bb.0: ; %entry
2605 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2606 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x39c
2607 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2611 ; GFX11CHECK: ; %bb.0: ; %entry
2612 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2613 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x39c
2614 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2617 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 924) ; ~0x60 = "~(zero|nan)"
2618 ret i1 %0
2621 define i1 @not_iszero_or_nan_f_daz(half %x) #0 {
2623 ; GFX7SELDAG: ; %bb.0: ; %entry
2624 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2626 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c01
2627 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2629 ; GFX7SELDAG-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v0
2631 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2635 ; GFX7GLISEL: ; %bb.0: ; %entry
2636 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2637 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2639 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2640 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x3ff
2642 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
2643 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2646 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2647 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2648 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
2651 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2655 ; GFX8CHECK: ; %bb.0: ; %entry
2656 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2657 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x39c
2659 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2663 ; GFX9CHECK: ; %bb.0: ; %entry
2664 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2665 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x39c
2667 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2671 ; GFX10CHECK: ; %bb.0: ; %entry
2672 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2673 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x39c
2674 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2678 ; GFX11CHECK: ; %bb.0: ; %entry
2679 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2680 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x39c
2681 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2684 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 924) ; ~(0x60|0x3) = "~(zero|nan)"
2685 ret i1 %0
2690 ; GFX7SELDAG: ; %bb.0: ; %entry
2691 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2693 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c01
2694 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2696 ; GFX7SELDAG-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v0
2698 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2702 ; GFX7GLISEL: ; %bb.0: ; %entry
2703 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2704 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2706 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2707 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x3ff
2709 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
2710 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2713 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2714 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2715 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
2718 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2722 ; GFX8CHECK: ; %bb.0: ; %entry
2723 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2724 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x39c
2726 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2730 ; GFX9CHECK: ; %bb.0: ; %entry
2731 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2732 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x39c
2734 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2738 ; GFX10CHECK: ; %bb.0: ; %entry
2739 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2740 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x39c
2741 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2745 ; GFX11CHECK: ; %bb.0: ; %entry
2746 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2747 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x39c
2748 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2751 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 924) ; ~(0x60|0x3) = "~(zero|nan)"
2752 ret i1 %0
2757 ; GFX7SELDAG: ; %bb.0: ; %entry
2758 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2760 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7dff
2761 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2763 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v0
2765 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2769 ; GFX7GLISEL: ; %bb.0: ; %entry
2770 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2771 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2772 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2773 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xffff8200, v0
2774 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0xffff8201
2776 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2780 ; GFX8CHECK: ; %bb.0: ; %entry
2781 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2782 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x62
2784 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2788 ; GFX9CHECK: ; %bb.0: ; %entry
2789 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2790 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x62
2792 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2796 ; GFX10CHECK: ; %bb.0: ; %entry
2797 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2798 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x62
2799 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2803 ; GFX11CHECK: ; %bb.0: ; %entry
2804 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2805 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x62
2806 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2809 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 98) ; 0x60|0x2 = "zero|qnan"
2810 ret i1 %0
2815 ; GFX7SELDAG: ; %bb.0: ; %entry
2816 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2818 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7e00
2819 ; GFX7SELDAG-NEXT: s_movk_i32 s5, 0x7c00
2820 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2824 ; GFX7SELDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0
2826 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2830 ; GFX7GLISEL: ; %bb.0: ; %entry
2831 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2832 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2833 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2834 ; GFX7GLISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v0
2835 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xffff83ff, v0
2836 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x1ff
2839 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2843 ; GFX8CHECK: ; %bb.0: ; %entry
2844 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2845 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x61
2847 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2851 ; GFX9CHECK: ; %bb.0: ; %entry
2852 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2853 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x61
2855 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2859 ; GFX10CHECK: ; %bb.0: ; %entry
2860 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2861 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x61
2862 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2866 ; GFX11CHECK: ; %bb.0: ; %entry
2867 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2868 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x61
2869 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2872 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 97) ; 0x60|0x1 = "zero|snan"
2873 ret i1 %0
2878 ; GFX7SELDAG: ; %bb.0: ; %entry
2879 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2881 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7e00
2882 ; GFX7SELDAG-NEXT: s_movk_i32 s8, 0x7c00
2883 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2888 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x3ff
2892 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2894 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
2895 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x7800
2898 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2902 ; GFX7GLISEL: ; %bb.0: ; %entry
2903 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2904 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2906 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2907 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x3ff
2909 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
2910 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2913 ; GFX7GLISEL-NEXT: v_add_i32_e32 v1, vcc, 0xffff83ff, v1
2914 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x1ff
2917 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2918 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2919 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
2922 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2926 ; GFX8CHECK: ; %bb.0: ; %entry
2927 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2928 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x39d
2930 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2934 ; GFX9CHECK: ; %bb.0: ; %entry
2935 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2936 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x39d
2938 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
2942 ; GFX10CHECK: ; %bb.0: ; %entry
2943 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2944 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x39d
2945 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
2949 ; GFX11CHECK: ; %bb.0: ; %entry
2950 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2951 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x39d
2952 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
2955 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 925) ; ~(0x60|0x2) = "~(zero|qnan)"
2956 ret i1 %0
2961 ; GFX7SELDAG: ; %bb.0: ; %entry
2962 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2964 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
2965 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x7dff
2966 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2969 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x3ff
2974 ; GFX7SELDAG-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2975 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0xffff, v0
2976 ; GFX7SELDAG-NEXT: s_movk_i32 s6, 0x7800
2979 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
2983 ; GFX7GLISEL: ; %bb.0: ; %entry
2984 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2985 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
2987 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1
2988 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x3ff
2990 ; GFX7GLISEL-NEXT: v_and_b32_e32 v1, 0xffff, v0
2991 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7c00
2993 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v2, 0x7e00
2997 ; GFX7GLISEL-NEXT: v_add_i32_e32 v0, vcc, 0xfffffc00, v0
2998 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
2999 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7800
3002 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
3006 ; GFX8CHECK: ; %bb.0: ; %entry
3007 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3008 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x39e
3010 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3014 ; GFX9CHECK: ; %bb.0: ; %entry
3015 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3016 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x39e
3018 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3022 ; GFX10CHECK: ; %bb.0: ; %entry
3023 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3024 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x39e
3025 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
3029 ; GFX11CHECK: ; %bb.0: ; %entry
3030 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3031 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x39e
3032 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
3035 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 926) ; ~(0x60|0x1) = "~(zero|snan)"
3036 ret i1 %0
3041 ; GFX7SELDAG: ; %bb.0: ; %entry
3042 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3044 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7bff
3045 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3047 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3051 ; GFX7GLISEL: ; %bb.0: ; %entry
3052 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3053 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3054 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
3055 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
3057 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3061 ; GFX8CHECK: ; %bb.0: ; %entry
3062 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3063 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x207
3065 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3069 ; GFX9CHECK: ; %bb.0: ; %entry
3070 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3071 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x207
3073 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3077 ; GFX10CHECK: ; %bb.0: ; %entry
3078 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3079 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x207
3080 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
3084 ; GFX11CHECK: ; %bb.0: ; %entry
3085 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3086 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x207
3087 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
3090 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 519) ; 0x204|0x3 = "inf|nan"
3091 ret i1 %0
3096 ; GFX7SELDAG: ; %bb.0: ; %entry
3097 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3099 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
3100 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3102 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3106 ; GFX7GLISEL: ; %bb.0: ; %entry
3107 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3108 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3109 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
3110 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
3112 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3116 ; GFX8CHECK: ; %bb.0: ; %entry
3117 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3118 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8
3120 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3124 ; GFX9CHECK: ; %bb.0: ; %entry
3125 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3126 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8
3128 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3132 ; GFX10CHECK: ; %bb.0: ; %entry
3133 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3134 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x1f8
3135 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
3139 ; GFX11CHECK: ; %bb.0: ; %entry
3140 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3141 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x1f8
3142 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
3145 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 504) ; ~(0x204|0x3) = "~(inf|nan)"
3146 ret i1 %0
3151 ; GFX7SELDAG: ; %bb.0: ; %entry
3152 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3154 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
3155 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3157 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3161 ; GFX7GLISEL: ; %bb.0: ; %entry
3162 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3163 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3164 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
3165 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
3167 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3171 ; GFX8CHECK: ; %bb.0: ; %entry
3172 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3173 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x1fb
3175 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3179 ; GFX9CHECK: ; %bb.0: ; %entry
3180 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3181 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x1fb
3183 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3187 ; GFX10CHECK: ; %bb.0: ; %entry
3188 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3189 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x1fb
3190 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
3194 ; GFX11CHECK: ; %bb.0: ; %entry
3195 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3196 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x1fb
3197 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
3200 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 507) ; 0x1f8|0x3 = "finite|nan"
3201 ret i1 %0
3206 ; GFX7SELDAG: ; %bb.0: ; %entry
3207 ; GFX7SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3209 ; GFX7SELDAG-NEXT: s_movk_i32 s4, 0x7c00
3210 ; GFX7SELDAG-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3212 ; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3216 ; GFX7GLISEL: ; %bb.0: ; %entry
3217 ; GFX7GLISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3218 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0x7fff, v0
3219 ; GFX7GLISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0
3220 ; GFX7GLISEL-NEXT: v_mov_b32_e32 v1, 0x7c00
3222 ; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3226 ; GFX8CHECK: ; %bb.0: ; %entry
3227 ; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3228 ; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x204
3230 ; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3234 ; GFX9CHECK: ; %bb.0: ; %entry
3235 ; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3236 ; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x204
3238 ; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc
3242 ; GFX10CHECK: ; %bb.0: ; %entry
3243 ; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3244 ; GFX10CHECK-NEXT: v_cmp_class_f16_e64 s4, v0, 0x204
3245 ; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4
3249 ; GFX11CHECK: ; %bb.0: ; %entry
3250 ; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
3251 ; GFX11CHECK-NEXT: v_cmp_class_f16_e64 s0, v0, 0x204
3252 ; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0
3255 %0 = tail call i1 @llvm.is.fpclass.f16(half %x, i32 516) ; ~(0x1f8|0x3) = "~(finite|nan)"
3256 ret i1 %0
3265 attributes #0 = { "denormal-fp-math"="ieee,preserve-sign" }