brintos

brintos / llvm-project-archived public Read only

0
0
Text · 71.3 KiB · 0a9fe10 Raw
1602 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN:  llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx704 < %s  | FileCheck --check-prefixes=GFX7CHECK,GFX7SELDAG %s3; RUN:  llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx704 < %s  | FileCheck --check-prefixes=GFX7CHECK,GFX7GLISEL %s4; RUN:  llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx803 < %s  | FileCheck --check-prefixes=GFX8CHECK,GFX8SELDAG %s5; RUN:  llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx803 < %s  | FileCheck --check-prefixes=GFX8CHECK,GFX8GLISEL %s6; RUN:  llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx908 < %s  | FileCheck --check-prefixes=GFX9CHECK,GFX9SELDAG %s7; RUN:  llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx908 < %s  | FileCheck --check-prefixes=GFX9CHECK,GFX9GLISEL %s8; RUN:  llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1031 < %s | FileCheck --check-prefixes=GFX10CHECK,GFX10SELDAG %s9; RUN:  llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1031 < %s | FileCheck --check-prefixes=GFX10CHECK,GFX10GLISEL %s10; RUN:  llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11CHECK,GFX11SELDAG %s11; RUN:  llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11CHECK,GFX11GLISEL %s12 13; FIXME: There are code size regressions in GlobalISel due to use of SGPRs and14; moving those SGPRs into VGPRs.15 16define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) {17; GFX7SELDAG-LABEL: sgpr_isnan_f32:18; GFX7SELDAG:       ; %bb.0:19; GFX7SELDAG-NEXT:    s_load_dword s6, s[4:5], 0xb20; GFX7SELDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x921; GFX7SELDAG-NEXT:    s_mov_b32 s3, 0xf00022; GFX7SELDAG-NEXT:    s_mov_b32 s2, -123; GFX7SELDAG-NEXT:    s_waitcnt lgkmcnt(0)24; GFX7SELDAG-NEXT:    v_cmp_class_f32_e64 s[4:5], s6, 325; GFX7SELDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[4:5]26; GFX7SELDAG-NEXT:    buffer_store_dword v0, off, s[0:3], 027; GFX7SELDAG-NEXT:    s_endpgm28;29; GFX7GLISEL-LABEL: sgpr_isnan_f32:30; GFX7GLISEL:       ; %bb.0:31; GFX7GLISEL-NEXT:    s_load_dword s3, s[4:5], 0xb32; GFX7GLISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x933; GFX7GLISEL-NEXT:    s_mov_b32 s2, -134; GFX7GLISEL-NEXT:    s_waitcnt lgkmcnt(0)35; GFX7GLISEL-NEXT:    v_cmp_class_f32_e64 s[4:5], s3, 336; GFX7GLISEL-NEXT:    s_or_b64 s[4:5], s[4:5], s[4:5]37; GFX7GLISEL-NEXT:    s_cselect_b32 s3, 1, 038; GFX7GLISEL-NEXT:    s_and_b32 s3, s3, 139; GFX7GLISEL-NEXT:    s_cmp_lg_u32 s3, 040; GFX7GLISEL-NEXT:    s_cselect_b32 s3, -1, 041; GFX7GLISEL-NEXT:    v_mov_b32_e32 v0, s342; GFX7GLISEL-NEXT:    s_mov_b32 s3, 0xf00043; GFX7GLISEL-NEXT:    buffer_store_dword v0, off, s[0:3], 044; GFX7GLISEL-NEXT:    s_endpgm45;46; GFX8SELDAG-LABEL: sgpr_isnan_f32:47; GFX8SELDAG:       ; %bb.0:48; GFX8SELDAG-NEXT:    s_load_dword s2, s[4:5], 0x2c49; GFX8SELDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2450; GFX8SELDAG-NEXT:    s_waitcnt lgkmcnt(0)51; GFX8SELDAG-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 352; GFX8SELDAG-NEXT:    v_mov_b32_e32 v0, s053; GFX8SELDAG-NEXT:    v_cndmask_b32_e64 v2, 0, -1, s[2:3]54; GFX8SELDAG-NEXT:    v_mov_b32_e32 v1, s155; GFX8SELDAG-NEXT:    flat_store_dword v[0:1], v256; GFX8SELDAG-NEXT:    s_endpgm57;58; GFX8GLISEL-LABEL: sgpr_isnan_f32:59; GFX8GLISEL:       ; %bb.0:60; GFX8GLISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c61; GFX8GLISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2462; GFX8GLISEL-NEXT:    s_waitcnt lgkmcnt(0)63; GFX8GLISEL-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 364; GFX8GLISEL-NEXT:    s_cmp_lg_u64 s[2:3], 065; GFX8GLISEL-NEXT:    s_cselect_b32 s2, 1, 066; GFX8GLISEL-NEXT:    s_and_b32 s2, s2, 167; GFX8GLISEL-NEXT:    s_cmp_lg_u32 s2, 068; GFX8GLISEL-NEXT:    s_cselect_b32 s2, -1, 069; GFX8GLISEL-NEXT:    v_mov_b32_e32 v0, s070; GFX8GLISEL-NEXT:    v_mov_b32_e32 v2, s271; GFX8GLISEL-NEXT:    v_mov_b32_e32 v1, s172; GFX8GLISEL-NEXT:    flat_store_dword v[0:1], v273; GFX8GLISEL-NEXT:    s_endpgm74;75; GFX9SELDAG-LABEL: sgpr_isnan_f32:76; GFX9SELDAG:       ; %bb.0:77; GFX9SELDAG-NEXT:    s_load_dword s2, s[4:5], 0x2c78; GFX9SELDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2479; GFX9SELDAG-NEXT:    v_mov_b32_e32 v0, 080; GFX9SELDAG-NEXT:    s_waitcnt lgkmcnt(0)81; GFX9SELDAG-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 382; GFX9SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[2:3]83; GFX9SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]84; GFX9SELDAG-NEXT:    s_endpgm85;86; GFX9GLISEL-LABEL: sgpr_isnan_f32:87; GFX9GLISEL:       ; %bb.0:88; GFX9GLISEL-NEXT:    s_load_dword s2, s[4:5], 0x2c89; GFX9GLISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2490; GFX9GLISEL-NEXT:    v_mov_b32_e32 v1, 091; GFX9GLISEL-NEXT:    s_waitcnt lgkmcnt(0)92; GFX9GLISEL-NEXT:    v_cmp_class_f32_e64 s[2:3], s2, 393; GFX9GLISEL-NEXT:    s_cmp_lg_u64 s[2:3], 094; GFX9GLISEL-NEXT:    s_cselect_b32 s2, 1, 095; GFX9GLISEL-NEXT:    s_and_b32 s2, s2, 196; GFX9GLISEL-NEXT:    s_cmp_lg_u32 s2, 097; GFX9GLISEL-NEXT:    s_cselect_b32 s2, -1, 098; GFX9GLISEL-NEXT:    v_mov_b32_e32 v0, s299; GFX9GLISEL-NEXT:    global_store_dword v1, v0, s[0:1]100; GFX9GLISEL-NEXT:    s_endpgm101;102; GFX10SELDAG-LABEL: sgpr_isnan_f32:103; GFX10SELDAG:       ; %bb.0:104; GFX10SELDAG-NEXT:    s_clause 0x1105; GFX10SELDAG-NEXT:    s_load_dword s2, s[4:5], 0x2c106; GFX10SELDAG-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24107; GFX10SELDAG-NEXT:    v_mov_b32_e32 v0, 0108; GFX10SELDAG-NEXT:    s_waitcnt lgkmcnt(0)109; GFX10SELDAG-NEXT:    v_cmp_class_f32_e64 s2, s2, 3110; GFX10SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2111; GFX10SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]112; GFX10SELDAG-NEXT:    s_endpgm113;114; GFX10GLISEL-LABEL: sgpr_isnan_f32:115; GFX10GLISEL:       ; %bb.0:116; GFX10GLISEL-NEXT:    s_load_dword s0, s[4:5], 0x2c117; GFX10GLISEL-NEXT:    v_mov_b32_e32 v1, 0118; GFX10GLISEL-NEXT:    s_waitcnt lgkmcnt(0)119; GFX10GLISEL-NEXT:    v_cmp_class_f32_e64 s2, s0, 3120; GFX10GLISEL-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24121; GFX10GLISEL-NEXT:    s_cmp_lg_u32 s2, 0122; GFX10GLISEL-NEXT:    s_cselect_b32 s2, 1, 0123; GFX10GLISEL-NEXT:    s_and_b32 s2, s2, 1124; GFX10GLISEL-NEXT:    s_cmp_lg_u32 s2, 0125; GFX10GLISEL-NEXT:    s_cselect_b32 s2, -1, 0126; GFX10GLISEL-NEXT:    v_mov_b32_e32 v0, s2127; GFX10GLISEL-NEXT:    s_waitcnt lgkmcnt(0)128; GFX10GLISEL-NEXT:    global_store_dword v1, v0, s[0:1]129; GFX10GLISEL-NEXT:    s_endpgm130;131; GFX11SELDAG-LABEL: sgpr_isnan_f32:132; GFX11SELDAG:       ; %bb.0:133; GFX11SELDAG-NEXT:    s_clause 0x1134; GFX11SELDAG-NEXT:    s_load_b32 s2, s[4:5], 0x2c135; GFX11SELDAG-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24136; GFX11SELDAG-NEXT:    v_mov_b32_e32 v0, 0137; GFX11SELDAG-NEXT:    s_waitcnt lgkmcnt(0)138; GFX11SELDAG-NEXT:    v_cmp_class_f32_e64 s2, s2, 3139; GFX11SELDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)140; GFX11SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2141; GFX11SELDAG-NEXT:    global_store_b32 v0, v1, s[0:1]142; GFX11SELDAG-NEXT:    s_endpgm143;144; GFX11GLISEL-LABEL: sgpr_isnan_f32:145; GFX11GLISEL:       ; %bb.0:146; GFX11GLISEL-NEXT:    s_load_b32 s0, s[4:5], 0x2c147; GFX11GLISEL-NEXT:    v_mov_b32_e32 v1, 0148; GFX11GLISEL-NEXT:    s_waitcnt lgkmcnt(0)149; GFX11GLISEL-NEXT:    v_cmp_class_f32_e64 s2, s0, 3150; GFX11GLISEL-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24151; GFX11GLISEL-NEXT:    s_cmp_lg_u32 s2, 0152; GFX11GLISEL-NEXT:    s_cselect_b32 s2, 1, 0153; GFX11GLISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)154; GFX11GLISEL-NEXT:    s_and_b32 s2, s2, 1155; GFX11GLISEL-NEXT:    s_cmp_lg_u32 s2, 0156; GFX11GLISEL-NEXT:    s_cselect_b32 s2, -1, 0157; GFX11GLISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)158; GFX11GLISEL-NEXT:    v_mov_b32_e32 v0, s2159; GFX11GLISEL-NEXT:    s_waitcnt lgkmcnt(0)160; GFX11GLISEL-NEXT:    global_store_b32 v1, v0, s[0:1]161; GFX11GLISEL-NEXT:    s_endpgm162  %result = call i1 @llvm.is.fpclass.f32(float %x, i32 3)  ; nan163  %sext = sext i1 %result to i32164  store i32 %sext, ptr addrspace(1) %out, align 4165  ret void166}167 168define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) {169; GFX7SELDAG-LABEL: sgpr_isnan_f64:170; GFX7SELDAG:       ; %bb.0:171; GFX7SELDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9172; GFX7SELDAG-NEXT:    s_mov_b32 s7, 0xf000173; GFX7SELDAG-NEXT:    s_mov_b32 s6, -1174; GFX7SELDAG-NEXT:    s_waitcnt lgkmcnt(0)175; GFX7SELDAG-NEXT:    s_mov_b32 s4, s0176; GFX7SELDAG-NEXT:    s_mov_b32 s5, s1177; GFX7SELDAG-NEXT:    v_cmp_class_f64_e64 s[0:1], s[2:3], 3178; GFX7SELDAG-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]179; GFX7SELDAG-NEXT:    buffer_store_dword v0, off, s[4:7], 0180; GFX7SELDAG-NEXT:    s_endpgm181;182; GFX7GLISEL-LABEL: sgpr_isnan_f64:183; GFX7GLISEL:       ; %bb.0:184; GFX7GLISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9185; GFX7GLISEL-NEXT:    s_waitcnt lgkmcnt(0)186; GFX7GLISEL-NEXT:    v_cmp_class_f64_e64 s[4:5], s[2:3], 3187; GFX7GLISEL-NEXT:    s_mov_b32 s2, -1188; GFX7GLISEL-NEXT:    s_or_b64 s[4:5], s[4:5], s[4:5]189; GFX7GLISEL-NEXT:    s_cselect_b32 s3, 1, 0190; GFX7GLISEL-NEXT:    s_and_b32 s3, s3, 1191; GFX7GLISEL-NEXT:    s_cmp_lg_u32 s3, 0192; GFX7GLISEL-NEXT:    s_cselect_b32 s3, -1, 0193; GFX7GLISEL-NEXT:    v_mov_b32_e32 v0, s3194; GFX7GLISEL-NEXT:    s_mov_b32 s3, 0xf000195; GFX7GLISEL-NEXT:    buffer_store_dword v0, off, s[0:3], 0196; GFX7GLISEL-NEXT:    s_endpgm197;198; GFX8SELDAG-LABEL: sgpr_isnan_f64:199; GFX8SELDAG:       ; %bb.0:200; GFX8SELDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24201; GFX8SELDAG-NEXT:    s_waitcnt lgkmcnt(0)202; GFX8SELDAG-NEXT:    v_mov_b32_e32 v0, s0203; GFX8SELDAG-NEXT:    v_mov_b32_e32 v1, s1204; GFX8SELDAG-NEXT:    v_cmp_class_f64_e64 s[0:1], s[2:3], 3205; GFX8SELDAG-NEXT:    v_cndmask_b32_e64 v2, 0, -1, s[0:1]206; GFX8SELDAG-NEXT:    flat_store_dword v[0:1], v2207; GFX8SELDAG-NEXT:    s_endpgm208;209; GFX8GLISEL-LABEL: sgpr_isnan_f64:210; GFX8GLISEL:       ; %bb.0:211; GFX8GLISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24212; GFX8GLISEL-NEXT:    s_waitcnt lgkmcnt(0)213; GFX8GLISEL-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 3214; GFX8GLISEL-NEXT:    v_mov_b32_e32 v0, s0215; GFX8GLISEL-NEXT:    v_mov_b32_e32 v1, s1216; GFX8GLISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0217; GFX8GLISEL-NEXT:    s_cselect_b32 s2, 1, 0218; GFX8GLISEL-NEXT:    s_and_b32 s2, s2, 1219; GFX8GLISEL-NEXT:    s_cmp_lg_u32 s2, 0220; GFX8GLISEL-NEXT:    s_cselect_b32 s2, -1, 0221; GFX8GLISEL-NEXT:    v_mov_b32_e32 v2, s2222; GFX8GLISEL-NEXT:    flat_store_dword v[0:1], v2223; GFX8GLISEL-NEXT:    s_endpgm224;225; GFX9SELDAG-LABEL: sgpr_isnan_f64:226; GFX9SELDAG:       ; %bb.0:227; GFX9SELDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24228; GFX9SELDAG-NEXT:    v_mov_b32_e32 v0, 0229; GFX9SELDAG-NEXT:    s_waitcnt lgkmcnt(0)230; GFX9SELDAG-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 3231; GFX9SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[2:3]232; GFX9SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]233; GFX9SELDAG-NEXT:    s_endpgm234;235; GFX9GLISEL-LABEL: sgpr_isnan_f64:236; GFX9GLISEL:       ; %bb.0:237; GFX9GLISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24238; GFX9GLISEL-NEXT:    v_mov_b32_e32 v1, 0239; GFX9GLISEL-NEXT:    s_waitcnt lgkmcnt(0)240; GFX9GLISEL-NEXT:    v_cmp_class_f64_e64 s[2:3], s[2:3], 3241; GFX9GLISEL-NEXT:    s_cmp_lg_u64 s[2:3], 0242; GFX9GLISEL-NEXT:    s_cselect_b32 s2, 1, 0243; GFX9GLISEL-NEXT:    s_and_b32 s2, s2, 1244; GFX9GLISEL-NEXT:    s_cmp_lg_u32 s2, 0245; GFX9GLISEL-NEXT:    s_cselect_b32 s2, -1, 0246; GFX9GLISEL-NEXT:    v_mov_b32_e32 v0, s2247; GFX9GLISEL-NEXT:    global_store_dword v1, v0, s[0:1]248; GFX9GLISEL-NEXT:    s_endpgm249;250; GFX10SELDAG-LABEL: sgpr_isnan_f64:251; GFX10SELDAG:       ; %bb.0:252; GFX10SELDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24253; GFX10SELDAG-NEXT:    v_mov_b32_e32 v0, 0254; GFX10SELDAG-NEXT:    s_waitcnt lgkmcnt(0)255; GFX10SELDAG-NEXT:    v_cmp_class_f64_e64 s2, s[2:3], 3256; GFX10SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2257; GFX10SELDAG-NEXT:    global_store_dword v0, v1, s[0:1]258; GFX10SELDAG-NEXT:    s_endpgm259;260; GFX10GLISEL-LABEL: sgpr_isnan_f64:261; GFX10GLISEL:       ; %bb.0:262; GFX10GLISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24263; GFX10GLISEL-NEXT:    v_mov_b32_e32 v1, 0264; GFX10GLISEL-NEXT:    s_waitcnt lgkmcnt(0)265; GFX10GLISEL-NEXT:    v_cmp_class_f64_e64 s2, s[2:3], 3266; GFX10GLISEL-NEXT:    s_cmp_lg_u32 s2, 0267; GFX10GLISEL-NEXT:    s_cselect_b32 s2, 1, 0268; GFX10GLISEL-NEXT:    s_and_b32 s2, s2, 1269; GFX10GLISEL-NEXT:    s_cmp_lg_u32 s2, 0270; GFX10GLISEL-NEXT:    s_cselect_b32 s2, -1, 0271; GFX10GLISEL-NEXT:    v_mov_b32_e32 v0, s2272; GFX10GLISEL-NEXT:    global_store_dword v1, v0, s[0:1]273; GFX10GLISEL-NEXT:    s_endpgm274;275; GFX11SELDAG-LABEL: sgpr_isnan_f64:276; GFX11SELDAG:       ; %bb.0:277; GFX11SELDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24278; GFX11SELDAG-NEXT:    v_mov_b32_e32 v0, 0279; GFX11SELDAG-NEXT:    s_waitcnt lgkmcnt(0)280; GFX11SELDAG-NEXT:    v_cmp_class_f64_e64 s2, s[2:3], 3281; GFX11SELDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)282; GFX11SELDAG-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s2283; GFX11SELDAG-NEXT:    global_store_b32 v0, v1, s[0:1]284; GFX11SELDAG-NEXT:    s_endpgm285;286; GFX11GLISEL-LABEL: sgpr_isnan_f64:287; GFX11GLISEL:       ; %bb.0:288; GFX11GLISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24289; GFX11GLISEL-NEXT:    v_mov_b32_e32 v1, 0290; GFX11GLISEL-NEXT:    s_waitcnt lgkmcnt(0)291; GFX11GLISEL-NEXT:    v_cmp_class_f64_e64 s2, s[2:3], 3292; GFX11GLISEL-NEXT:    s_cmp_lg_u32 s2, 0293; GFX11GLISEL-NEXT:    s_cselect_b32 s2, 1, 0294; GFX11GLISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)295; GFX11GLISEL-NEXT:    s_and_b32 s2, s2, 1296; GFX11GLISEL-NEXT:    s_cmp_lg_u32 s2, 0297; GFX11GLISEL-NEXT:    s_cselect_b32 s2, -1, 0298; GFX11GLISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)299; GFX11GLISEL-NEXT:    v_mov_b32_e32 v0, s2300; GFX11GLISEL-NEXT:    global_store_b32 v1, v0, s[0:1]301; GFX11GLISEL-NEXT:    s_endpgm302  %result = call i1 @llvm.is.fpclass.f64(double %x, i32 3)  ; nan303  %sext = sext i1 %result to i32304  store i32 %sext, ptr addrspace(1) %out, align 4305  ret void306}307 308define i1 @isnan_f32(float %x) nounwind {309; GFX7CHECK-LABEL: isnan_f32:310; GFX7CHECK:       ; %bb.0:311; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)312; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3313; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]314; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]315;316; GFX8CHECK-LABEL: isnan_f32:317; GFX8CHECK:       ; %bb.0:318; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)319; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3320; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]321; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]322;323; GFX9CHECK-LABEL: isnan_f32:324; GFX9CHECK:       ; %bb.0:325; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)326; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3327; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]328; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]329;330; GFX10CHECK-LABEL: isnan_f32:331; GFX10CHECK:       ; %bb.0:332; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)333; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3334; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4335; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]336;337; GFX11CHECK-LABEL: isnan_f32:338; GFX11CHECK:       ; %bb.0:339; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)340; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3341; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)342; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0343; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]344  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 3)  ; nan345  ret i1 %1346}347 348define <2 x i1> @isnan_v2f32(<2 x float> %x) nounwind {349; GFX7CHECK-LABEL: isnan_v2f32:350; GFX7CHECK:       ; %bb.0:351; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)352; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3353; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]354; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3355; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]356; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]357;358; GFX8CHECK-LABEL: isnan_v2f32:359; GFX8CHECK:       ; %bb.0:360; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)361; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3362; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]363; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3364; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]365; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]366;367; GFX9CHECK-LABEL: isnan_v2f32:368; GFX9CHECK:       ; %bb.0:369; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)370; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3371; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]372; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3373; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]374; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]375;376; GFX10CHECK-LABEL: isnan_v2f32:377; GFX10CHECK:       ; %bb.0:378; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)379; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3380; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4381; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3382; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4383; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]384;385; GFX11CHECK-LABEL: isnan_v2f32:386; GFX11CHECK:       ; %bb.0:387; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)388; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3389; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)390; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0391; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3392; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0393; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]394  %1 = call <2 x i1> @llvm.is.fpclass.v2f32(<2 x float> %x, i32 3)  ; nan395  ret <2 x i1> %1396}397 398define <3 x i1> @isnan_v3f32(<3 x float> %x) nounwind {399; GFX7CHECK-LABEL: isnan_v3f32:400; GFX7CHECK:       ; %bb.0:401; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)402; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3403; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]404; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3405; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]406; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3407; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]408; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]409;410; GFX8CHECK-LABEL: isnan_v3f32:411; GFX8CHECK:       ; %bb.0:412; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)413; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3414; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]415; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3416; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]417; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3418; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]419; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]420;421; GFX9CHECK-LABEL: isnan_v3f32:422; GFX9CHECK:       ; %bb.0:423; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)424; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3425; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]426; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3427; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]428; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3429; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]430; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]431;432; GFX10CHECK-LABEL: isnan_v3f32:433; GFX10CHECK:       ; %bb.0:434; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)435; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3436; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4437; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3438; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4439; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 3440; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4441; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]442;443; GFX11CHECK-LABEL: isnan_v3f32:444; GFX11CHECK:       ; %bb.0:445; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)446; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3447; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)448; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0449; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3450; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0451; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 3452; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)453; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0454; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]455  %1 = call <3 x i1> @llvm.is.fpclass.v3f32(<3 x float> %x, i32 3)  ; nan456  ret <3 x i1> %1457}458 459define <4 x i1> @isnan_v4f32(<4 x float> %x) nounwind {460; GFX7CHECK-LABEL: isnan_v4f32:461; GFX7CHECK:       ; %bb.0:462; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3464; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]465; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3466; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]467; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3468; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]469; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3470; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]471; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]472;473; GFX8CHECK-LABEL: isnan_v4f32:474; GFX8CHECK:       ; %bb.0:475; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3477; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]478; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3479; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]480; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3481; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]482; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3483; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]484; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]485;486; GFX9CHECK-LABEL: isnan_v4f32:487; GFX9CHECK:       ; %bb.0:488; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)489; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3490; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]491; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3492; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]493; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3494; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]495; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3496; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]497; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]498;499; GFX10CHECK-LABEL: isnan_v4f32:500; GFX10CHECK:       ; %bb.0:501; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3503; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4504; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3505; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4506; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 3507; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4508; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v3, 3509; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4510; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]511;512; GFX11CHECK-LABEL: isnan_v4f32:513; GFX11CHECK:       ; %bb.0:514; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)515; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3516; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)517; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0518; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3519; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0520; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 3521; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)522; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0523; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v3, 3524; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0525; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]526  %1 = call <4 x i1> @llvm.is.fpclass.v4f32(<4 x float> %x, i32 3)  ; nan527  ret <4 x i1> %1528}529 530define <5 x i1> @isnan_v5f32(<5 x float> %x) nounwind {531; GFX7CHECK-LABEL: isnan_v5f32:532; GFX7CHECK:       ; %bb.0:533; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3535; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]536; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3537; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]538; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3539; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]540; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3541; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]542; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3543; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]544; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]545;546; GFX8CHECK-LABEL: isnan_v5f32:547; GFX8CHECK:       ; %bb.0:548; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)549; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3550; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]551; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3552; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]553; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3554; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]555; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3556; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]557; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3558; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]559; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]560;561; GFX9CHECK-LABEL: isnan_v5f32:562; GFX9CHECK:       ; %bb.0:563; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)564; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3565; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]566; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3567; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]568; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3569; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]570; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3571; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]572; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3573; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]574; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]575;576; GFX10CHECK-LABEL: isnan_v5f32:577; GFX10CHECK:       ; %bb.0:578; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)579; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3580; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4581; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3582; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4583; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 3584; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4585; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v3, 3586; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4587; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v4, 3588; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s4589; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]590;591; GFX11CHECK-LABEL: isnan_v5f32:592; GFX11CHECK:       ; %bb.0:593; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)594; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3595; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)596; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0597; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3598; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0599; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 3600; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)601; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0602; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v3, 3603; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0604; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v4, 3605; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)606; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s0607; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]608  %1 = call <5 x i1> @llvm.is.fpclass.v5f32(<5 x float> %x, i32 3)  ; nan609  ret <5 x i1> %1610}611 612define <6 x i1> @isnan_v6f32(<6 x float> %x) nounwind {613; GFX7CHECK-LABEL: isnan_v6f32:614; GFX7CHECK:       ; %bb.0:615; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)616; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3617; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]618; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3619; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]620; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3621; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]622; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3623; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]624; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3625; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]626; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3627; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]628; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]629;630; GFX8CHECK-LABEL: isnan_v6f32:631; GFX8CHECK:       ; %bb.0:632; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)633; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3634; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]635; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3636; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]637; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3638; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]639; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3640; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]641; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3642; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]643; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3644; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]645; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]646;647; GFX9CHECK-LABEL: isnan_v6f32:648; GFX9CHECK:       ; %bb.0:649; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)650; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3651; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]652; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3653; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]654; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3655; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]656; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3657; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]658; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3659; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]660; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3661; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]662; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]663;664; GFX10CHECK-LABEL: isnan_v6f32:665; GFX10CHECK:       ; %bb.0:666; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)667; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3668; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4669; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3670; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4671; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 3672; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4673; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v3, 3674; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4675; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v4, 3676; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s4677; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v5, 3678; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s4679; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]680;681; GFX11CHECK-LABEL: isnan_v6f32:682; GFX11CHECK:       ; %bb.0:683; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)684; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3685; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)686; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0687; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3688; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0689; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 3690; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)691; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0692; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v3, 3693; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0694; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v4, 3695; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)696; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s0697; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v5, 3698; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s0699; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]700  %1 = call <6 x i1> @llvm.is.fpclass.v6f32(<6 x float> %x, i32 3)  ; nan701  ret <6 x i1> %1702}703 704define <7 x i1> @isnan_v7f32(<7 x float> %x) nounwind {705; GFX7CHECK-LABEL: isnan_v7f32:706; GFX7CHECK:       ; %bb.0:707; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)708; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3709; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]710; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3711; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]712; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3713; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]714; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3715; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]716; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3717; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]718; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3719; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]720; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3721; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]722; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]723;724; GFX8CHECK-LABEL: isnan_v7f32:725; GFX8CHECK:       ; %bb.0:726; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)727; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3728; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]729; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3730; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]731; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3732; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]733; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3734; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]735; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3736; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]737; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3738; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]739; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3740; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]741; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]742;743; GFX9CHECK-LABEL: isnan_v7f32:744; GFX9CHECK:       ; %bb.0:745; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)746; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3747; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]748; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3749; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]750; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3751; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]752; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3753; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]754; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3755; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]756; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3757; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]758; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3759; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]760; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]761;762; GFX10CHECK-LABEL: isnan_v7f32:763; GFX10CHECK:       ; %bb.0:764; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)765; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3766; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4767; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3768; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4769; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 3770; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4771; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v3, 3772; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4773; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v4, 3774; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s4775; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v5, 3776; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s4777; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v6, 3778; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s4779; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]780;781; GFX11CHECK-LABEL: isnan_v7f32:782; GFX11CHECK:       ; %bb.0:783; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)784; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3785; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)786; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0787; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3788; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0789; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 3790; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)791; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0792; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v3, 3793; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0794; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v4, 3795; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)796; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s0797; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v5, 3798; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s0799; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v6, 3800; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)801; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s0802; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]803  %1 = call <7 x i1> @llvm.is.fpclass.v7f32(<7 x float> %x, i32 3)  ; nan804  ret <7 x i1> %1805}806 807define <8 x i1> @isnan_v8f32(<8 x float> %x) nounwind {808; GFX7CHECK-LABEL: isnan_v8f32:809; GFX7CHECK:       ; %bb.0:810; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)811; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3812; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]813; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3814; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]815; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3816; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]817; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3818; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]819; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3820; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]821; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3822; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]823; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3824; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]825; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v7, 3826; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]827; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]828;829; GFX8CHECK-LABEL: isnan_v8f32:830; GFX8CHECK:       ; %bb.0:831; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)832; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3833; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]834; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3835; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]836; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3837; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]838; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3839; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]840; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3841; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]842; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3843; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]844; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3845; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]846; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v7, 3847; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]848; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]849;850; GFX9CHECK-LABEL: isnan_v8f32:851; GFX9CHECK:       ; %bb.0:852; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)853; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3854; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]855; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3856; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]857; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3858; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]859; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3860; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]861; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3862; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]863; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3864; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]865; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3866; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]867; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v7, 3868; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]869; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]870;871; GFX10CHECK-LABEL: isnan_v8f32:872; GFX10CHECK:       ; %bb.0:873; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)874; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 3875; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s4876; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 3877; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s4878; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 3879; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s4880; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v3, 3881; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s4882; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v4, 3883; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s4884; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v5, 3885; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s4886; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v6, 3887; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s4888; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v7, 3889; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s4890; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]891;892; GFX11CHECK-LABEL: isnan_v8f32:893; GFX11CHECK:       ; %bb.0:894; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)895; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 3896; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)897; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s0898; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 3899; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s0900; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 3901; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)902; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s0903; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v3, 3904; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s0905; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v4, 3906; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)907; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s0908; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v5, 3909; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s0910; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v6, 3911; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)912; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s0913; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v7, 3914; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s0915; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]916  %1 = call <8 x i1> @llvm.is.fpclass.v8f32(<8 x float> %x, i32 3)  ; nan917  ret <8 x i1> %1918}919 920define <16 x i1> @isnan_v16f32(<16 x float> %x) nounwind {921; GFX7CHECK-LABEL: isnan_v16f32:922; GFX7CHECK:       ; %bb.0:923; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)924; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3925; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]926; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3927; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]928; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3929; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]930; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3931; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]932; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3933; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]934; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3935; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]936; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3937; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]938; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v7, 3939; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]940; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v8, 3941; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, s[4:5]942; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v9, 3943; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]944; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v10, 3945; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[4:5]946; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v11, 3947; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, s[4:5]948; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v12, 3949; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, s[4:5]950; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v13, 3951; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, s[4:5]952; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v14, 3953; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v14, 0, 1, s[4:5]954; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v15, 3955; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v15, 0, 1, s[4:5]956; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]957;958; GFX8CHECK-LABEL: isnan_v16f32:959; GFX8CHECK:       ; %bb.0:960; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)961; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3962; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]963; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 3964; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]965; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 3966; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]967; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 3968; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]969; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 3970; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]971; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 3972; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]973; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 3974; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]975; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v7, 3976; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]977; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v8, 3978; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, s[4:5]979; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v9, 3980; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]981; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v10, 3982; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[4:5]983; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v11, 3984; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, s[4:5]985; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v12, 3986; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, s[4:5]987; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v13, 3988; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, s[4:5]989; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v14, 3990; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v14, 0, 1, s[4:5]991; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v15, 3992; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v15, 0, 1, s[4:5]993; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]994;995; GFX9CHECK-LABEL: isnan_v16f32:996; GFX9CHECK:       ; %bb.0:997; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 3999; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1000; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v1, 31001; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]1002; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v2, 31003; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]1004; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v3, 31005; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[4:5]1006; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v4, 31007; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]1008; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v5, 31009; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]1010; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v6, 31011; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]1012; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v7, 31013; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]1014; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v8, 31015; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, s[4:5]1016; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v9, 31017; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]1018; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v10, 31019; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[4:5]1020; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v11, 31021; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, s[4:5]1022; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v12, 31023; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, s[4:5]1024; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v13, 31025; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, s[4:5]1026; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v14, 31027; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v14, 0, 1, s[4:5]1028; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v15, 31029; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v15, 0, 1, s[4:5]1030; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1031;1032; GFX10CHECK-LABEL: isnan_v16f32:1033; GFX10CHECK:       ; %bb.0:1034; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1035; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 31036; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41037; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v1, 31038; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s41039; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v2, 31040; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s41041; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v3, 31042; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s41043; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v4, 31044; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s41045; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v5, 31046; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s41047; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v6, 31048; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s41049; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v7, 31050; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s41051; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v8, 31052; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, s41053; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v9, 31054; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s41055; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v10, 31056; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s41057; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v11, 31058; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, s41059; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v12, 31060; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, s41061; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v13, 31062; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, s41063; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v14, 31064; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v14, 0, 1, s41065; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v15, 31066; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v15, 0, 1, s41067; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1068;1069; GFX11CHECK-LABEL: isnan_v16f32:1070; GFX11CHECK:       ; %bb.0:1071; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 31073; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1074; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01075; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v1, 31076; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s01077; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v2, 31078; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1079; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s01080; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v3, 31081; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s01082; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v4, 31083; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1084; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s01085; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v5, 31086; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s01087; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v6, 31088; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1089; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s01090; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v7, 31091; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s01092; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v8, 31093; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1094; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, s01095; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v9, 31096; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s01097; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v10, 31098; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1099; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s01100; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v11, 31101; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, s01102; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v12, 31103; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1104; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, s01105; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v13, 31106; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, s01107; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v14, 31108; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1109; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v14, 0, 1, s01110; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v15, 31111; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v15, 0, 1, s01112; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1113  %1 = call <16 x i1> @llvm.is.fpclass.v16f32(<16 x float> %x, i32 3)  ; nan1114  ret <16 x i1> %11115}1116 1117define i1 @isnan_f64(double %x) nounwind {1118; GFX7CHECK-LABEL: isnan_f64:1119; GFX7CHECK:       ; %bb.0:1120; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1121; GFX7CHECK-NEXT:    v_cmp_class_f64_e64 s[4:5], v[0:1], 31122; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1123; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1124;1125; GFX8CHECK-LABEL: isnan_f64:1126; GFX8CHECK:       ; %bb.0:1127; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1128; GFX8CHECK-NEXT:    v_cmp_class_f64_e64 s[4:5], v[0:1], 31129; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1130; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1131;1132; GFX9CHECK-LABEL: isnan_f64:1133; GFX9CHECK:       ; %bb.0:1134; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1135; GFX9CHECK-NEXT:    v_cmp_class_f64_e64 s[4:5], v[0:1], 31136; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1137; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1138;1139; GFX10CHECK-LABEL: isnan_f64:1140; GFX10CHECK:       ; %bb.0:1141; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1142; GFX10CHECK-NEXT:    v_cmp_class_f64_e64 s4, v[0:1], 31143; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41144; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1145;1146; GFX11CHECK-LABEL: isnan_f64:1147; GFX11CHECK:       ; %bb.0:1148; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX11CHECK-NEXT:    v_cmp_class_f64_e64 s0, v[0:1], 31150; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1151; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01152; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1153  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 3)  ; nan1154  ret i1 %11155}1156 1157define i1 @isnan_f32_strictfp(float %x) strictfp nounwind {1158; GFX7CHECK-LABEL: isnan_f32_strictfp:1159; GFX7CHECK:       ; %bb.0:1160; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1161; GFX7CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 31162; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1163; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX8CHECK-LABEL: isnan_f32_strictfp:1166; GFX8CHECK:       ; %bb.0:1167; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX8CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 31169; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1170; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1171;1172; GFX9CHECK-LABEL: isnan_f32_strictfp:1173; GFX9CHECK:       ; %bb.0:1174; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1175; GFX9CHECK-NEXT:    v_cmp_class_f32_e64 s[4:5], v0, 31176; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1177; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1178;1179; GFX10CHECK-LABEL: isnan_f32_strictfp:1180; GFX10CHECK:       ; %bb.0:1181; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1182; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 31183; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41184; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1185;1186; GFX11CHECK-LABEL: isnan_f32_strictfp:1187; GFX11CHECK:       ; %bb.0:1188; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1189; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 31190; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1191; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01192; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1193  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 3) strictfp ; nan1194  ret i1 %11195}1196 1197define i1 @isnan_f64_strictfp(double %x) strictfp nounwind {1198; GFX7CHECK-LABEL: isnan_f64_strictfp:1199; GFX7CHECK:       ; %bb.0:1200; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; GFX7CHECK-NEXT:    v_cmp_class_f64_e64 s[4:5], v[0:1], 31202; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1203; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1204;1205; GFX8CHECK-LABEL: isnan_f64_strictfp:1206; GFX8CHECK:       ; %bb.0:1207; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1208; GFX8CHECK-NEXT:    v_cmp_class_f64_e64 s[4:5], v[0:1], 31209; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1210; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1211;1212; GFX9CHECK-LABEL: isnan_f64_strictfp:1213; GFX9CHECK:       ; %bb.0:1214; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1215; GFX9CHECK-NEXT:    v_cmp_class_f64_e64 s[4:5], v[0:1], 31216; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1217; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1218;1219; GFX10CHECK-LABEL: isnan_f64_strictfp:1220; GFX10CHECK:       ; %bb.0:1221; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1222; GFX10CHECK-NEXT:    v_cmp_class_f64_e64 s4, v[0:1], 31223; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41224; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1225;1226; GFX11CHECK-LABEL: isnan_f64_strictfp:1227; GFX11CHECK:       ; %bb.0:1228; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1229; GFX11CHECK-NEXT:    v_cmp_class_f64_e64 s0, v[0:1], 31230; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1231; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01232; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1233  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 3) strictfp ; nan1234  ret i1 %11235}1236 1237define i1 @isinf_f32(float %x) nounwind {1238; GFX7CHECK-LABEL: isinf_f32:1239; GFX7CHECK:       ; %bb.0:1240; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1241; GFX7CHECK-NEXT:    v_mov_b32_e32 v1, 0x2041242; GFX7CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11243; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1244; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1245;1246; GFX8CHECK-LABEL: isinf_f32:1247; GFX8CHECK:       ; %bb.0:1248; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1249; GFX8CHECK-NEXT:    v_mov_b32_e32 v1, 0x2041250; GFX8CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11251; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1252; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1253;1254; GFX9CHECK-LABEL: isinf_f32:1255; GFX9CHECK:       ; %bb.0:1256; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1257; GFX9CHECK-NEXT:    v_mov_b32_e32 v1, 0x2041258; GFX9CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11259; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1260; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1261;1262; GFX10CHECK-LABEL: isinf_f32:1263; GFX10CHECK:       ; %bb.0:1264; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1265; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 0x2041266; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41267; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1268;1269; GFX11CHECK-LABEL: isinf_f32:1270; GFX11CHECK:       ; %bb.0:1271; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1272; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 0x2041273; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1274; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01275; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1276  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 516)  ; 0x204 = "inf"1277  ret i1 %11278}1279 1280define i1 @isinf_f64(double %x) nounwind {1281; GFX7CHECK-LABEL: isinf_f64:1282; GFX7CHECK:       ; %bb.0:1283; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1284; GFX7CHECK-NEXT:    v_mov_b32_e32 v2, 0x2041285; GFX7CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v21286; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1287; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1288;1289; GFX8CHECK-LABEL: isinf_f64:1290; GFX8CHECK:       ; %bb.0:1291; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1292; GFX8CHECK-NEXT:    v_mov_b32_e32 v2, 0x2041293; GFX8CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v21294; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1295; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1296;1297; GFX9CHECK-LABEL: isinf_f64:1298; GFX9CHECK:       ; %bb.0:1299; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1300; GFX9CHECK-NEXT:    v_mov_b32_e32 v2, 0x2041301; GFX9CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v21302; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1303; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1304;1305; GFX10CHECK-LABEL: isinf_f64:1306; GFX10CHECK:       ; %bb.0:1307; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1308; GFX10CHECK-NEXT:    v_cmp_class_f64_e64 s4, v[0:1], 0x2041309; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41310; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1311;1312; GFX11CHECK-LABEL: isinf_f64:1313; GFX11CHECK:       ; %bb.0:1314; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1315; GFX11CHECK-NEXT:    v_cmp_class_f64_e64 s0, v[0:1], 0x2041316; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1317; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01318; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1319  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 516)  ; 0x204 = "inf"1320  ret i1 %11321}1322 1323define i1 @isfinite_f32(float %x) nounwind {1324; GFX7CHECK-LABEL: isfinite_f32:1325; GFX7CHECK:       ; %bb.0:1326; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1327; GFX7CHECK-NEXT:    v_mov_b32_e32 v1, 0x1f81328; GFX7CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11329; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1330; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1331;1332; GFX8CHECK-LABEL: isfinite_f32:1333; GFX8CHECK:       ; %bb.0:1334; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1335; GFX8CHECK-NEXT:    v_mov_b32_e32 v1, 0x1f81336; GFX8CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11337; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1338; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1339;1340; GFX9CHECK-LABEL: isfinite_f32:1341; GFX9CHECK:       ; %bb.0:1342; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX9CHECK-NEXT:    v_mov_b32_e32 v1, 0x1f81344; GFX9CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11345; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1346; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1347;1348; GFX10CHECK-LABEL: isfinite_f32:1349; GFX10CHECK:       ; %bb.0:1350; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1351; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 0x1f81352; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41353; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1354;1355; GFX11CHECK-LABEL: isfinite_f32:1356; GFX11CHECK:       ; %bb.0:1357; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1358; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 0x1f81359; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1360; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01361; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1362  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 504)  ; 0x1f8 = "finite"1363  ret i1 %11364}1365 1366define i1 @isfinite_f64(double %x) nounwind {1367; GFX7CHECK-LABEL: isfinite_f64:1368; GFX7CHECK:       ; %bb.0:1369; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1370; GFX7CHECK-NEXT:    v_mov_b32_e32 v2, 0x1f81371; GFX7CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v21372; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1373; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1374;1375; GFX8CHECK-LABEL: isfinite_f64:1376; GFX8CHECK:       ; %bb.0:1377; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1378; GFX8CHECK-NEXT:    v_mov_b32_e32 v2, 0x1f81379; GFX8CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v21380; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1381; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1382;1383; GFX9CHECK-LABEL: isfinite_f64:1384; GFX9CHECK:       ; %bb.0:1385; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1386; GFX9CHECK-NEXT:    v_mov_b32_e32 v2, 0x1f81387; GFX9CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v21388; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1389; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1390;1391; GFX10CHECK-LABEL: isfinite_f64:1392; GFX10CHECK:       ; %bb.0:1393; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1394; GFX10CHECK-NEXT:    v_cmp_class_f64_e64 s4, v[0:1], 0x1f81395; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41396; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1397;1398; GFX11CHECK-LABEL: isfinite_f64:1399; GFX11CHECK:       ; %bb.0:1400; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1401; GFX11CHECK-NEXT:    v_cmp_class_f64_e64 s0, v[0:1], 0x1f81402; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1403; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01404; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1405  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 504)  ; 0x1f8 = "finite"1406  ret i1 %11407}1408 1409define i1 @isnormal_f32(float %x) nounwind {1410; GFX7CHECK-LABEL: isnormal_f32:1411; GFX7CHECK:       ; %bb.0:1412; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1413; GFX7CHECK-NEXT:    v_mov_b32_e32 v1, 0x1081414; GFX7CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11415; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1416; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1417;1418; GFX8CHECK-LABEL: isnormal_f32:1419; GFX8CHECK:       ; %bb.0:1420; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1421; GFX8CHECK-NEXT:    v_mov_b32_e32 v1, 0x1081422; GFX8CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11423; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1424; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1425;1426; GFX9CHECK-LABEL: isnormal_f32:1427; GFX9CHECK:       ; %bb.0:1428; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1429; GFX9CHECK-NEXT:    v_mov_b32_e32 v1, 0x1081430; GFX9CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11431; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1432; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1433;1434; GFX10CHECK-LABEL: isnormal_f32:1435; GFX10CHECK:       ; %bb.0:1436; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1437; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 0x1081438; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41439; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1440;1441; GFX11CHECK-LABEL: isnormal_f32:1442; GFX11CHECK:       ; %bb.0:1443; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1444; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 0x1081445; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1446; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01447; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1448  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 264)  ; 0x108 = "normal"1449  ret i1 %11450}1451 1452define <2 x i1> @isnormal_v2f64(<2 x double> %x) nounwind {1453; GFX7CHECK-LABEL: isnormal_v2f64:1454; GFX7CHECK:       ; %bb.0:1455; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1456; GFX7CHECK-NEXT:    v_mov_b32_e32 v4, 0x1081457; GFX7CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v41458; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1459; GFX7CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[2:3], v41460; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1461; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1462;1463; GFX8CHECK-LABEL: isnormal_v2f64:1464; GFX8CHECK:       ; %bb.0:1465; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1466; GFX8CHECK-NEXT:    v_mov_b32_e32 v4, 0x1081467; GFX8CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v41468; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1469; GFX8CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[2:3], v41470; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1471; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1472;1473; GFX9CHECK-LABEL: isnormal_v2f64:1474; GFX9CHECK:       ; %bb.0:1475; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1476; GFX9CHECK-NEXT:    v_mov_b32_e32 v4, 0x1081477; GFX9CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[0:1], v41478; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1479; GFX9CHECK-NEXT:    v_cmp_class_f64_e32 vcc, v[2:3], v41480; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1481; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1482;1483; GFX10CHECK-LABEL: isnormal_v2f64:1484; GFX10CHECK:       ; %bb.0:1485; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1486; GFX10CHECK-NEXT:    v_cmp_class_f64_e64 s4, v[0:1], 0x1081487; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41488; GFX10CHECK-NEXT:    v_cmp_class_f64_e64 s4, v[2:3], 0x1081489; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s41490; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1491;1492; GFX11CHECK-LABEL: isnormal_v2f64:1493; GFX11CHECK:       ; %bb.0:1494; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1495; GFX11CHECK-NEXT:    v_cmp_class_f64_e64 s0, v[0:1], 0x1081496; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)1497; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01498; GFX11CHECK-NEXT:    v_cmp_class_f64_e64 s0, v[2:3], 0x1081499; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s01500; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1501  %1 = call <2 x i1> @llvm.is.fpclass.v2f64(<2 x double> %x, i32 264)  ; 0x108 = "normal"1502  ret <2 x i1> %11503}1504 1505define i1 @issubnormal_f32(float %x) nounwind {1506; GFX7CHECK-LABEL: issubnormal_f32:1507; GFX7CHECK:       ; %bb.0:1508; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1509; GFX7CHECK-NEXT:    v_mov_b32_e32 v1, 0x901510; GFX7CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11511; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1512; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1513;1514; GFX8CHECK-LABEL: issubnormal_f32:1515; GFX8CHECK:       ; %bb.0:1516; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1517; GFX8CHECK-NEXT:    v_mov_b32_e32 v1, 0x901518; GFX8CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11519; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1520; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX9CHECK-LABEL: issubnormal_f32:1523; GFX9CHECK:       ; %bb.0:1524; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX9CHECK-NEXT:    v_mov_b32_e32 v1, 0x901526; GFX9CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11527; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1528; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1529;1530; GFX10CHECK-LABEL: issubnormal_f32:1531; GFX10CHECK:       ; %bb.0:1532; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1533; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 0x901534; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41535; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1536;1537; GFX11CHECK-LABEL: issubnormal_f32:1538; GFX11CHECK:       ; %bb.0:1539; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1540; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 0x901541; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1542; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01543; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1544  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 144)  ; 0x90 = "subnormal"1545  ret i1 %11546}1547 1548define i1 @iszero_f32(float %x) nounwind {1549; GFX7CHECK-LABEL: iszero_f32:1550; GFX7CHECK:       ; %bb.0:1551; GFX7CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1552; GFX7CHECK-NEXT:    v_mov_b32_e32 v1, 0x601553; GFX7CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11554; GFX7CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1555; GFX7CHECK-NEXT:    s_setpc_b64 s[30:31]1556;1557; GFX8CHECK-LABEL: iszero_f32:1558; GFX8CHECK:       ; %bb.0:1559; GFX8CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1560; GFX8CHECK-NEXT:    v_mov_b32_e32 v1, 0x601561; GFX8CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11562; GFX8CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1563; GFX8CHECK-NEXT:    s_setpc_b64 s[30:31]1564;1565; GFX9CHECK-LABEL: iszero_f32:1566; GFX9CHECK:       ; %bb.0:1567; GFX9CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1568; GFX9CHECK-NEXT:    v_mov_b32_e32 v1, 0x601569; GFX9CHECK-NEXT:    v_cmp_class_f32_e32 vcc, v0, v11570; GFX9CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1571; GFX9CHECK-NEXT:    s_setpc_b64 s[30:31]1572;1573; GFX10CHECK-LABEL: iszero_f32:1574; GFX10CHECK:       ; %bb.0:1575; GFX10CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1576; GFX10CHECK-NEXT:    v_cmp_class_f32_e64 s4, v0, 0x601577; GFX10CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s41578; GFX10CHECK-NEXT:    s_setpc_b64 s[30:31]1579;1580; GFX11CHECK-LABEL: iszero_f32:1581; GFX11CHECK:       ; %bb.0:1582; GFX11CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1583; GFX11CHECK-NEXT:    v_cmp_class_f32_e64 s0, v0, 0x601584; GFX11CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)1585; GFX11CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s01586; GFX11CHECK-NEXT:    s_setpc_b64 s[30:31]1587  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 96)  ; 0x60 = "zero"1588  ret i1 %11589}1590 1591declare i1 @llvm.is.fpclass.f32(float, i32)1592declare i1 @llvm.is.fpclass.f64(double, i32)1593declare <2 x i1> @llvm.is.fpclass.v2f32(<2 x float>, i32)1594declare <3 x i1> @llvm.is.fpclass.v3f32(<3 x float>, i32)1595declare <4 x i1> @llvm.is.fpclass.v4f32(<4 x float>, i32)1596declare <5 x i1> @llvm.is.fpclass.v5f32(<5 x float>, i32)1597declare <6 x i1> @llvm.is.fpclass.v6f32(<6 x float>, i32)1598declare <7 x i1> @llvm.is.fpclass.v7f32(<7 x float>, i32)1599declare <8 x i1> @llvm.is.fpclass.v8f32(<8 x float>, i32)1600declare <16 x i1> @llvm.is.fpclass.v16f32(<16 x float>, i32)1601declare <2 x i1> @llvm.is.fpclass.v2f64(<2 x double>, i32)1602