1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx704 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX7CHECK,GFX7SELDAG %s 3; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx704 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX7CHECK,GFX7GLISEL %s 4; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx803 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX8CHECK,GFX8SELDAG %s 5; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx803 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX8CHECK,GFX8GLISEL %s 6; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx908 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX9CHECK %s 7; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx908 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX9CHECK %s 8; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1031 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10CHECK %s 9; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1031 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10CHECK %s 10; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck --check-prefix=GFX11CHECK %s 11; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck --check-prefix=GFX11CHECK %s 12 13define amdgpu_kernel void @sgpr_isnan_f32(ptr addrspace(1) %out, float %x) { 14; GFX7SELDAG-LABEL: sgpr_isnan_f32: 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 19; GFX7SELDAG-NEXT: s_mov_b32 s2, -1 20; GFX7SELDAG-NEXT: s_waitcnt lgkmcnt(0) 21; GFX7SELDAG-NEXT: v_cmp_class_f32_e64 s[4:5], s6, 3 22; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[4:5] 23; GFX7SELDAG-NEXT: buffer_store_dword v0, off, s[0:3], 0 24; GFX7SELDAG-NEXT: s_endpgm 25; 26; GFX7GLISEL-LABEL: sgpr_isnan_f32: 27; GFX7GLISEL: ; %bb.0: 28; GFX7GLISEL-NEXT: s_load_dword s3, s[4:5], 0xb 29; GFX7GLISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9 30; GFX7GLISEL-NEXT: s_mov_b32 s2, -1 31; GFX7GLISEL-NEXT: s_waitcnt lgkmcnt(0) 32; GFX7GLISEL-NEXT: v_cmp_class_f32_e64 s[4:5], s3, 3 33; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[4:5] 34; GFX7GLISEL-NEXT: s_mov_b32 s3, 0xf000 35; GFX7GLISEL-NEXT: buffer_store_dword v0, off, s[0:3], 0 36; GFX7GLISEL-NEXT: s_endpgm 37; 38; GFX8CHECK-LABEL: sgpr_isnan_f32: 39; GFX8CHECK: ; %bb.0: 40; GFX8CHECK-NEXT: s_load_dword s2, s[4:5], 0x2c 41; GFX8CHECK-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24 42; GFX8CHECK-NEXT: s_waitcnt lgkmcnt(0) 43; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[2:3], s2, 3 44; GFX8CHECK-NEXT: v_mov_b32_e32 v0, s0 45; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, -1, s[2:3] 46; GFX8CHECK-NEXT: v_mov_b32_e32 v1, s1 47; GFX8CHECK-NEXT: flat_store_dword v[0:1], v2 48; GFX8CHECK-NEXT: s_endpgm 49; 50; GFX9CHECK-LABEL: sgpr_isnan_f32: 51; GFX9CHECK: ; %bb.0: 52; GFX9CHECK-NEXT: s_load_dword s2, s[4:5], 0x2c 53; GFX9CHECK-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24 54; GFX9CHECK-NEXT: v_mov_b32_e32 v0, 0 55; GFX9CHECK-NEXT: s_waitcnt lgkmcnt(0) 56; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[2:3], s2, 3 57; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[2:3] 58; GFX9CHECK-NEXT: global_store_dword v0, v1, s[0:1] 59; GFX9CHECK-NEXT: s_endpgm 60; 61; GFX10CHECK-LABEL: sgpr_isnan_f32: 62; GFX10CHECK: ; %bb.0: 63; GFX10CHECK-NEXT: s_clause 0x1 64; GFX10CHECK-NEXT: s_load_dword s2, s[4:5], 0x2c 65; GFX10CHECK-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24 66; GFX10CHECK-NEXT: v_mov_b32_e32 v0, 0 67; GFX10CHECK-NEXT: s_waitcnt lgkmcnt(0) 68; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s2, s2, 3 69; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s2 70; GFX10CHECK-NEXT: global_store_dword v0, v1, s[0:1] 71; GFX10CHECK-NEXT: s_endpgm 72; 73; GFX11CHECK-LABEL: sgpr_isnan_f32: 74; GFX11CHECK: ; %bb.0: 75; GFX11CHECK-NEXT: s_clause 0x1 76; GFX11CHECK-NEXT: s_load_b32 s2, s[4:5], 0x2c 77; GFX11CHECK-NEXT: s_load_b64 s[0:1], s[4:5], 0x24 78; GFX11CHECK-NEXT: v_mov_b32_e32 v0, 0 79; GFX11CHECK-NEXT: s_waitcnt lgkmcnt(0) 80; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s2, s2, 3 81; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 82; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s2 83; GFX11CHECK-NEXT: global_store_b32 v0, v1, s[0:1] 84; GFX11CHECK-NEXT: s_endpgm 85 %result = call i1 @llvm.is.fpclass.f32(float %x, i32 3) ; nan 86 %sext = sext i1 %result to i32 87 store i32 %sext, ptr addrspace(1) %out, align 4 88 ret void 89} 90 91define amdgpu_kernel void @sgpr_isnan_f64(ptr addrspace(1) %out, double %x) { 92; GFX7SELDAG-LABEL: sgpr_isnan_f64: 93; GFX7SELDAG: ; %bb.0: 94; GFX7SELDAG-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9 95; GFX7SELDAG-NEXT: s_mov_b32 s7, 0xf000 96; GFX7SELDAG-NEXT: s_mov_b32 s6, -1 97; GFX7SELDAG-NEXT: s_waitcnt lgkmcnt(0) 98; GFX7SELDAG-NEXT: s_mov_b32 s4, s0 99; GFX7SELDAG-NEXT: s_mov_b32 s5, s1 100; GFX7SELDAG-NEXT: v_cmp_class_f64_e64 s[0:1], s[2:3], 3 101; GFX7SELDAG-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[0:1] 102; GFX7SELDAG-NEXT: buffer_store_dword v0, off, s[4:7], 0 103; GFX7SELDAG-NEXT: s_endpgm 104; 105; GFX7GLISEL-LABEL: sgpr_isnan_f64: 106; GFX7GLISEL: ; %bb.0: 107; GFX7GLISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9 108; GFX7GLISEL-NEXT: s_waitcnt lgkmcnt(0) 109; GFX7GLISEL-NEXT: v_cmp_class_f64_e64 s[2:3], s[2:3], 3 110; GFX7GLISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[2:3] 111; GFX7GLISEL-NEXT: s_mov_b32 s2, -1 112; GFX7GLISEL-NEXT: s_mov_b32 s3, 0xf000 113; GFX7GLISEL-NEXT: buffer_store_dword v0, off, s[0:3], 0 114; GFX7GLISEL-NEXT: s_endpgm 115; 116; GFX8SELDAG-LABEL: sgpr_isnan_f64: 117; GFX8SELDAG: ; %bb.0: 118; GFX8SELDAG-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24 119; GFX8SELDAG-NEXT: s_waitcnt lgkmcnt(0) 120; GFX8SELDAG-NEXT: v_mov_b32_e32 v0, s0 121; GFX8SELDAG-NEXT: v_mov_b32_e32 v1, s1 122; GFX8SELDAG-NEXT: v_cmp_class_f64_e64 s[0:1], s[2:3], 3 123; GFX8SELDAG-NEXT: v_cndmask_b32_e64 v2, 0, -1, s[0:1] 124; GFX8SELDAG-NEXT: flat_store_dword v[0:1], v2 125; GFX8SELDAG-NEXT: s_endpgm 126; 127; GFX8GLISEL-LABEL: sgpr_isnan_f64: 128; GFX8GLISEL: ; %bb.0: 129; GFX8GLISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24 130; GFX8GLISEL-NEXT: s_waitcnt lgkmcnt(0) 131; GFX8GLISEL-NEXT: v_cmp_class_f64_e64 s[2:3], s[2:3], 3 132; GFX8GLISEL-NEXT: v_mov_b32_e32 v0, s0 133; GFX8GLISEL-NEXT: v_mov_b32_e32 v1, s1 134; GFX8GLISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, s[2:3] 135; GFX8GLISEL-NEXT: flat_store_dword v[0:1], v2 136; GFX8GLISEL-NEXT: s_endpgm 137; 138; GFX9CHECK-LABEL: sgpr_isnan_f64: 139; GFX9CHECK: ; %bb.0: 140; GFX9CHECK-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24 141; GFX9CHECK-NEXT: v_mov_b32_e32 v0, 0 142; GFX9CHECK-NEXT: s_waitcnt lgkmcnt(0) 143; GFX9CHECK-NEXT: v_cmp_class_f64_e64 s[2:3], s[2:3], 3 144; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[2:3] 145; GFX9CHECK-NEXT: global_store_dword v0, v1, s[0:1] 146; GFX9CHECK-NEXT: s_endpgm 147; 148; GFX10CHECK-LABEL: sgpr_isnan_f64: 149; GFX10CHECK: ; %bb.0: 150; GFX10CHECK-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24 151; GFX10CHECK-NEXT: v_mov_b32_e32 v0, 0 152; GFX10CHECK-NEXT: s_waitcnt lgkmcnt(0) 153; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s2, s[2:3], 3 154; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s2 155; GFX10CHECK-NEXT: global_store_dword v0, v1, s[0:1] 156; GFX10CHECK-NEXT: s_endpgm 157; 158; GFX11CHECK-LABEL: sgpr_isnan_f64: 159; GFX11CHECK: ; %bb.0: 160; GFX11CHECK-NEXT: s_load_b128 s[0:3], s[4:5], 0x24 161; GFX11CHECK-NEXT: v_mov_b32_e32 v0, 0 162; GFX11CHECK-NEXT: s_waitcnt lgkmcnt(0) 163; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s2, s[2:3], 3 164; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 165; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, -1, s2 166; GFX11CHECK-NEXT: global_store_b32 v0, v1, s[0:1] 167; GFX11CHECK-NEXT: s_endpgm 168 %result = call i1 @llvm.is.fpclass.f64(double %x, i32 3) ; nan 169 %sext = sext i1 %result to i32 170 store i32 %sext, ptr addrspace(1) %out, align 4 171 ret void 172} 173 174define i1 @isnan_f32(float %x) nounwind { 175; GFX7CHECK-LABEL: isnan_f32: 176; GFX7CHECK: ; %bb.0: 177; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 178; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 179; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 180; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 181; 182; GFX8CHECK-LABEL: isnan_f32: 183; GFX8CHECK: ; %bb.0: 184; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 185; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 186; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 187; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 188; 189; GFX9CHECK-LABEL: isnan_f32: 190; GFX9CHECK: ; %bb.0: 191; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 192; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 193; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 194; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 195; 196; GFX10CHECK-LABEL: isnan_f32: 197; GFX10CHECK: ; %bb.0: 198; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 199; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 200; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 201; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 202; 203; GFX11CHECK-LABEL: isnan_f32: 204; GFX11CHECK: ; %bb.0: 205; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 206; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 207; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 208; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 209; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 210 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 3) ; nan 211 ret i1 %1 212} 213 214define <2 x i1> @isnan_v2f32(<2 x float> %x) nounwind { 215; GFX7CHECK-LABEL: isnan_v2f32: 216; GFX7CHECK: ; %bb.0: 217; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 218; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 219; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 220; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 221; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 222; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 223; 224; GFX8CHECK-LABEL: isnan_v2f32: 225; GFX8CHECK: ; %bb.0: 226; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 227; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 228; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 229; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 230; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 231; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 232; 233; GFX9CHECK-LABEL: isnan_v2f32: 234; GFX9CHECK: ; %bb.0: 235; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 236; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 237; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 238; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 239; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 240; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 241; 242; GFX10CHECK-LABEL: isnan_v2f32: 243; GFX10CHECK: ; %bb.0: 244; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 245; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 246; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 247; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 248; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 249; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 250; 251; GFX11CHECK-LABEL: isnan_v2f32: 252; GFX11CHECK: ; %bb.0: 253; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 254; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 255; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 256; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 257; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 258; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 259; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 260 %1 = call <2 x i1> @llvm.is.fpclass.v2f32(<2 x float> %x, i32 3) ; nan 261 ret <2 x i1> %1 262} 263 264define <3 x i1> @isnan_v3f32(<3 x float> %x) nounwind { 265; GFX7CHECK-LABEL: isnan_v3f32: 266; GFX7CHECK: ; %bb.0: 267; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 268; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 269; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 270; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 271; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 272; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 273; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 274; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 275; 276; GFX8CHECK-LABEL: isnan_v3f32: 277; GFX8CHECK: ; %bb.0: 278; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 279; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 280; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 281; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 282; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 283; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 284; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 285; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 286; 287; GFX9CHECK-LABEL: isnan_v3f32: 288; GFX9CHECK: ; %bb.0: 289; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 290; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 291; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 292; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 293; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 294; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 295; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 296; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 297; 298; GFX10CHECK-LABEL: isnan_v3f32: 299; GFX10CHECK: ; %bb.0: 300; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 301; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 302; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 303; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 304; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 305; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 306; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 307; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 308; 309; GFX11CHECK-LABEL: isnan_v3f32: 310; GFX11CHECK: ; %bb.0: 311; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 312; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 313; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 314; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 315; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 316; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 317; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 318; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 319; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 320; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 321 %1 = call <3 x i1> @llvm.is.fpclass.v3f32(<3 x float> %x, i32 3) ; nan 322 ret <3 x i1> %1 323} 324 325define <4 x i1> @isnan_v4f32(<4 x float> %x) nounwind { 326; GFX7CHECK-LABEL: isnan_v4f32: 327; GFX7CHECK: ; %bb.0: 328; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 329; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 330; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 331; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 332; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 333; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 334; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 335; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 336; GFX7CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 337; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 338; 339; GFX8CHECK-LABEL: isnan_v4f32: 340; GFX8CHECK: ; %bb.0: 341; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 342; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 343; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 344; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 345; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 346; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 347; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 348; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 349; GFX8CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 350; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 351; 352; GFX9CHECK-LABEL: isnan_v4f32: 353; GFX9CHECK: ; %bb.0: 354; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 355; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 356; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 357; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 358; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 359; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 360; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 361; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 362; GFX9CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 363; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 364; 365; GFX10CHECK-LABEL: isnan_v4f32: 366; GFX10CHECK: ; %bb.0: 367; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 368; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 369; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 370; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 371; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 372; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 373; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 374; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v3, 3 375; GFX10CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4 376; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 377; 378; GFX11CHECK-LABEL: isnan_v4f32: 379; GFX11CHECK: ; %bb.0: 380; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 381; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 382; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 383; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 384; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 385; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 386; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 387; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 388; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 389; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v3, 3 390; GFX11CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0 391; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 392 %1 = call <4 x i1> @llvm.is.fpclass.v4f32(<4 x float> %x, i32 3) ; nan 393 ret <4 x i1> %1 394} 395 396define <5 x i1> @isnan_v5f32(<5 x float> %x) nounwind { 397; GFX7CHECK-LABEL: isnan_v5f32: 398; GFX7CHECK: ; %bb.0: 399; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 400; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 401; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 402; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 403; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 404; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 405; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 406; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 407; GFX7CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 408; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 409; GFX7CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 410; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 411; 412; GFX8CHECK-LABEL: isnan_v5f32: 413; GFX8CHECK: ; %bb.0: 414; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 415; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 416; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 417; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 418; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 419; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 420; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 421; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 422; GFX8CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 423; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 424; GFX8CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 425; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 426; 427; GFX9CHECK-LABEL: isnan_v5f32: 428; GFX9CHECK: ; %bb.0: 429; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 430; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 431; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 432; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 433; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 434; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 435; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 436; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 437; GFX9CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 438; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 439; GFX9CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 440; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 441; 442; GFX10CHECK-LABEL: isnan_v5f32: 443; GFX10CHECK: ; %bb.0: 444; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 445; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 446; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 447; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 448; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 449; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 450; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 451; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v3, 3 452; GFX10CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4 453; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v4, 3 454; GFX10CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4 455; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 456; 457; GFX11CHECK-LABEL: isnan_v5f32: 458; GFX11CHECK: ; %bb.0: 459; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 460; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 461; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 462; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 463; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 464; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 465; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 466; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 467; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 468; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v3, 3 469; GFX11CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0 470; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v4, 3 471; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 472; GFX11CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s0 473; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 474 %1 = call <5 x i1> @llvm.is.fpclass.v5f32(<5 x float> %x, i32 3) ; nan 475 ret <5 x i1> %1 476} 477 478define <6 x i1> @isnan_v6f32(<6 x float> %x) nounwind { 479; GFX7CHECK-LABEL: isnan_v6f32: 480; GFX7CHECK: ; %bb.0: 481; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 482; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 483; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 484; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 485; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 486; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 487; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 488; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 489; GFX7CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 490; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 491; GFX7CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 492; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 493; GFX7CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 494; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 495; 496; GFX8CHECK-LABEL: isnan_v6f32: 497; GFX8CHECK: ; %bb.0: 498; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 499; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 500; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 501; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 502; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 503; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 504; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 505; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 506; GFX8CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 507; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 508; GFX8CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 509; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 510; GFX8CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 511; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 512; 513; GFX9CHECK-LABEL: isnan_v6f32: 514; GFX9CHECK: ; %bb.0: 515; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 516; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 517; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 518; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 519; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 520; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 521; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 522; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 523; GFX9CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 524; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 525; GFX9CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 526; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 527; GFX9CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 528; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 529; 530; GFX10CHECK-LABEL: isnan_v6f32: 531; GFX10CHECK: ; %bb.0: 532; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 533; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 534; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 535; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 536; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 537; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 538; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 539; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v3, 3 540; GFX10CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4 541; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v4, 3 542; GFX10CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4 543; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v5, 3 544; GFX10CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s4 545; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 546; 547; GFX11CHECK-LABEL: isnan_v6f32: 548; GFX11CHECK: ; %bb.0: 549; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 550; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 551; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 552; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 553; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 554; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 555; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 556; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 557; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 558; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v3, 3 559; GFX11CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0 560; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v4, 3 561; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 562; GFX11CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s0 563; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v5, 3 564; GFX11CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s0 565; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 566 %1 = call <6 x i1> @llvm.is.fpclass.v6f32(<6 x float> %x, i32 3) ; nan 567 ret <6 x i1> %1 568} 569 570define <7 x i1> @isnan_v7f32(<7 x float> %x) nounwind { 571; GFX7CHECK-LABEL: isnan_v7f32: 572; GFX7CHECK: ; %bb.0: 573; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 574; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 575; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 576; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 577; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 578; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 579; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 580; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 581; GFX7CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 582; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 583; GFX7CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 584; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 585; GFX7CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 586; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 587; GFX7CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 588; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 589; 590; GFX8CHECK-LABEL: isnan_v7f32: 591; GFX8CHECK: ; %bb.0: 592; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 593; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 594; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 595; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 596; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 597; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 598; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 599; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 600; GFX8CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 601; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 602; GFX8CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 603; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 604; GFX8CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 605; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 606; GFX8CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 607; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 608; 609; GFX9CHECK-LABEL: isnan_v7f32: 610; GFX9CHECK: ; %bb.0: 611; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 612; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 613; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 614; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 615; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 616; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 617; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 618; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 619; GFX9CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 620; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 621; GFX9CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 622; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 623; GFX9CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 624; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 625; GFX9CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 626; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 627; 628; GFX10CHECK-LABEL: isnan_v7f32: 629; GFX10CHECK: ; %bb.0: 630; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 631; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 632; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 633; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 634; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 635; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 636; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 637; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v3, 3 638; GFX10CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4 639; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v4, 3 640; GFX10CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4 641; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v5, 3 642; GFX10CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s4 643; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v6, 3 644; GFX10CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s4 645; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 646; 647; GFX11CHECK-LABEL: isnan_v7f32: 648; GFX11CHECK: ; %bb.0: 649; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 650; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 651; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 652; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 653; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 654; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 655; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 656; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 657; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 658; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v3, 3 659; GFX11CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0 660; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v4, 3 661; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 662; GFX11CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s0 663; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v5, 3 664; GFX11CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s0 665; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v6, 3 666; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 667; GFX11CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s0 668; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 669 %1 = call <7 x i1> @llvm.is.fpclass.v7f32(<7 x float> %x, i32 3) ; nan 670 ret <7 x i1> %1 671} 672 673define <8 x i1> @isnan_v8f32(<8 x float> %x) nounwind { 674; GFX7CHECK-LABEL: isnan_v8f32: 675; GFX7CHECK: ; %bb.0: 676; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 677; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 678; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 679; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 680; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 681; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 682; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 683; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 684; GFX7CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 685; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 686; GFX7CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 687; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 688; GFX7CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 689; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 690; GFX7CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 691; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v7, 3 692; GFX7CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5] 693; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 694; 695; GFX8CHECK-LABEL: isnan_v8f32: 696; GFX8CHECK: ; %bb.0: 697; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 698; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 699; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 700; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 701; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 702; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 703; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 704; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 705; GFX8CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 706; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 707; GFX8CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 708; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 709; GFX8CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 710; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 711; GFX8CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 712; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v7, 3 713; GFX8CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5] 714; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 715; 716; GFX9CHECK-LABEL: isnan_v8f32: 717; GFX9CHECK: ; %bb.0: 718; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 719; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 720; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 721; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 722; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 723; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 724; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 725; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 726; GFX9CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 727; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 728; GFX9CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 729; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 730; GFX9CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 731; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 732; GFX9CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 733; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v7, 3 734; GFX9CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5] 735; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 736; 737; GFX10CHECK-LABEL: isnan_v8f32: 738; GFX10CHECK: ; %bb.0: 739; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 740; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 741; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 742; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 743; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 744; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 745; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 746; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v3, 3 747; GFX10CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4 748; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v4, 3 749; GFX10CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4 750; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v5, 3 751; GFX10CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s4 752; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v6, 3 753; GFX10CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s4 754; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v7, 3 755; GFX10CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s4 756; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 757; 758; GFX11CHECK-LABEL: isnan_v8f32: 759; GFX11CHECK: ; %bb.0: 760; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 761; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 762; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 763; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 764; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 765; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 766; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 767; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 768; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 769; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v3, 3 770; GFX11CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0 771; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v4, 3 772; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 773; GFX11CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s0 774; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v5, 3 775; GFX11CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s0 776; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v6, 3 777; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 778; GFX11CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s0 779; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v7, 3 780; GFX11CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s0 781; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 782 %1 = call <8 x i1> @llvm.is.fpclass.v8f32(<8 x float> %x, i32 3) ; nan 783 ret <8 x i1> %1 784} 785 786define <16 x i1> @isnan_v16f32(<16 x float> %x) nounwind { 787; GFX7CHECK-LABEL: isnan_v16f32: 788; GFX7CHECK: ; %bb.0: 789; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 790; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 791; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 792; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 793; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 794; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 795; GFX7CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 796; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 797; GFX7CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 798; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 799; GFX7CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 800; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 801; GFX7CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 802; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 803; GFX7CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 804; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v7, 3 805; GFX7CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5] 806; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v8, 3 807; GFX7CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, s[4:5] 808; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v9, 3 809; GFX7CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5] 810; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v10, 3 811; GFX7CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, s[4:5] 812; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v11, 3 813; GFX7CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, s[4:5] 814; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v12, 3 815; GFX7CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, s[4:5] 816; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v13, 3 817; GFX7CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, s[4:5] 818; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v14, 3 819; GFX7CHECK-NEXT: v_cndmask_b32_e64 v14, 0, 1, s[4:5] 820; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v15, 3 821; GFX7CHECK-NEXT: v_cndmask_b32_e64 v15, 0, 1, s[4:5] 822; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 823; 824; GFX8CHECK-LABEL: isnan_v16f32: 825; GFX8CHECK: ; %bb.0: 826; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 827; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 828; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 829; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 830; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 831; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 832; GFX8CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 833; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 834; GFX8CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 835; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 836; GFX8CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 837; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 838; GFX8CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 839; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 840; GFX8CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 841; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v7, 3 842; GFX8CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5] 843; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v8, 3 844; GFX8CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, s[4:5] 845; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v9, 3 846; GFX8CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5] 847; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v10, 3 848; GFX8CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, s[4:5] 849; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v11, 3 850; GFX8CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, s[4:5] 851; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v12, 3 852; GFX8CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, s[4:5] 853; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v13, 3 854; GFX8CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, s[4:5] 855; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v14, 3 856; GFX8CHECK-NEXT: v_cndmask_b32_e64 v14, 0, 1, s[4:5] 857; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v15, 3 858; GFX8CHECK-NEXT: v_cndmask_b32_e64 v15, 0, 1, s[4:5] 859; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 860; 861; GFX9CHECK-LABEL: isnan_v16f32: 862; GFX9CHECK: ; %bb.0: 863; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 864; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 865; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 866; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v1, 3 867; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5] 868; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v2, 3 869; GFX9CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s[4:5] 870; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v3, 3 871; GFX9CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s[4:5] 872; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v4, 3 873; GFX9CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s[4:5] 874; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v5, 3 875; GFX9CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s[4:5] 876; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v6, 3 877; GFX9CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5] 878; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v7, 3 879; GFX9CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5] 880; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v8, 3 881; GFX9CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, s[4:5] 882; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v9, 3 883; GFX9CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5] 884; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v10, 3 885; GFX9CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, s[4:5] 886; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v11, 3 887; GFX9CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, s[4:5] 888; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v12, 3 889; GFX9CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, s[4:5] 890; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v13, 3 891; GFX9CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, s[4:5] 892; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v14, 3 893; GFX9CHECK-NEXT: v_cndmask_b32_e64 v14, 0, 1, s[4:5] 894; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v15, 3 895; GFX9CHECK-NEXT: v_cndmask_b32_e64 v15, 0, 1, s[4:5] 896; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 897; 898; GFX10CHECK-LABEL: isnan_v16f32: 899; GFX10CHECK: ; %bb.0: 900; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 901; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 902; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 903; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v1, 3 904; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 905; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v2, 3 906; GFX10CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s4 907; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v3, 3 908; GFX10CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s4 909; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v4, 3 910; GFX10CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s4 911; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v5, 3 912; GFX10CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s4 913; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v6, 3 914; GFX10CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s4 915; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v7, 3 916; GFX10CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s4 917; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v8, 3 918; GFX10CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, s4 919; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v9, 3 920; GFX10CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, s4 921; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v10, 3 922; GFX10CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, s4 923; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v11, 3 924; GFX10CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, s4 925; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v12, 3 926; GFX10CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, s4 927; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v13, 3 928; GFX10CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, s4 929; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v14, 3 930; GFX10CHECK-NEXT: v_cndmask_b32_e64 v14, 0, 1, s4 931; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v15, 3 932; GFX10CHECK-NEXT: v_cndmask_b32_e64 v15, 0, 1, s4 933; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 934; 935; GFX11CHECK-LABEL: isnan_v16f32: 936; GFX11CHECK: ; %bb.0: 937; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 938; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 939; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 940; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 941; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v1, 3 942; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 943; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v2, 3 944; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 945; GFX11CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, s0 946; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v3, 3 947; GFX11CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, s0 948; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v4, 3 949; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 950; GFX11CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, s0 951; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v5, 3 952; GFX11CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, s0 953; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v6, 3 954; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 955; GFX11CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, s0 956; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v7, 3 957; GFX11CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, s0 958; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v8, 3 959; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 960; GFX11CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, s0 961; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v9, 3 962; GFX11CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, s0 963; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v10, 3 964; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 965; GFX11CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, s0 966; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v11, 3 967; GFX11CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, s0 968; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v12, 3 969; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 970; GFX11CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, s0 971; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v13, 3 972; GFX11CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, s0 973; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v14, 3 974; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 975; GFX11CHECK-NEXT: v_cndmask_b32_e64 v14, 0, 1, s0 976; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v15, 3 977; GFX11CHECK-NEXT: v_cndmask_b32_e64 v15, 0, 1, s0 978; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 979 %1 = call <16 x i1> @llvm.is.fpclass.v16f32(<16 x float> %x, i32 3) ; nan 980 ret <16 x i1> %1 981} 982 983define i1 @isnan_f64(double %x) nounwind { 984; GFX7CHECK-LABEL: isnan_f64: 985; GFX7CHECK: ; %bb.0: 986; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 987; GFX7CHECK-NEXT: v_cmp_class_f64_e64 s[4:5], v[0:1], 3 988; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 989; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 990; 991; GFX8CHECK-LABEL: isnan_f64: 992; GFX8CHECK: ; %bb.0: 993; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 994; GFX8CHECK-NEXT: v_cmp_class_f64_e64 s[4:5], v[0:1], 3 995; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 996; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 997; 998; GFX9CHECK-LABEL: isnan_f64: 999; GFX9CHECK: ; %bb.0: 1000; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1001; GFX9CHECK-NEXT: v_cmp_class_f64_e64 s[4:5], v[0:1], 3 1002; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1003; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1004; 1005; GFX10CHECK-LABEL: isnan_f64: 1006; GFX10CHECK: ; %bb.0: 1007; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1008; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s4, v[0:1], 3 1009; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1010; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1011; 1012; GFX11CHECK-LABEL: isnan_f64: 1013; GFX11CHECK: ; %bb.0: 1014; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1015; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s0, v[0:1], 3 1016; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1017; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1018; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1019 %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 3) ; nan 1020 ret i1 %1 1021} 1022 1023define i1 @isnan_f32_strictfp(float %x) strictfp nounwind { 1024; GFX7CHECK-LABEL: isnan_f32_strictfp: 1025; GFX7CHECK: ; %bb.0: 1026; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1027; GFX7CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 1028; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1029; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1030; 1031; GFX8CHECK-LABEL: isnan_f32_strictfp: 1032; GFX8CHECK: ; %bb.0: 1033; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1034; GFX8CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 1035; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1036; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1037; 1038; GFX9CHECK-LABEL: isnan_f32_strictfp: 1039; GFX9CHECK: ; %bb.0: 1040; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1041; GFX9CHECK-NEXT: v_cmp_class_f32_e64 s[4:5], v0, 3 1042; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1043; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1044; 1045; GFX10CHECK-LABEL: isnan_f32_strictfp: 1046; GFX10CHECK: ; %bb.0: 1047; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1048; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 3 1049; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1050; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1051; 1052; GFX11CHECK-LABEL: isnan_f32_strictfp: 1053; GFX11CHECK: ; %bb.0: 1054; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1055; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 3 1056; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1057; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1058; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1059 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 3) strictfp ; nan 1060 ret i1 %1 1061} 1062 1063define i1 @isnan_f64_strictfp(double %x) strictfp nounwind { 1064; GFX7CHECK-LABEL: isnan_f64_strictfp: 1065; GFX7CHECK: ; %bb.0: 1066; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1067; GFX7CHECK-NEXT: v_cmp_class_f64_e64 s[4:5], v[0:1], 3 1068; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1069; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1070; 1071; GFX8CHECK-LABEL: isnan_f64_strictfp: 1072; GFX8CHECK: ; %bb.0: 1073; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1074; GFX8CHECK-NEXT: v_cmp_class_f64_e64 s[4:5], v[0:1], 3 1075; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1076; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1077; 1078; GFX9CHECK-LABEL: isnan_f64_strictfp: 1079; GFX9CHECK: ; %bb.0: 1080; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1081; GFX9CHECK-NEXT: v_cmp_class_f64_e64 s[4:5], v[0:1], 3 1082; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5] 1083; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1084; 1085; GFX10CHECK-LABEL: isnan_f64_strictfp: 1086; GFX10CHECK: ; %bb.0: 1087; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1088; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s4, v[0:1], 3 1089; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1090; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1091; 1092; GFX11CHECK-LABEL: isnan_f64_strictfp: 1093; GFX11CHECK: ; %bb.0: 1094; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1095; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s0, v[0:1], 3 1096; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1097; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1098; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1099 %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 3) strictfp ; nan 1100 ret i1 %1 1101} 1102 1103define i1 @isinf_f32(float %x) nounwind { 1104; GFX7CHECK-LABEL: isinf_f32: 1105; GFX7CHECK: ; %bb.0: 1106; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1107; GFX7CHECK-NEXT: v_mov_b32_e32 v1, 0x204 1108; GFX7CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1109; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1110; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1111; 1112; GFX8CHECK-LABEL: isinf_f32: 1113; GFX8CHECK: ; %bb.0: 1114; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1115; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x204 1116; GFX8CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1117; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1118; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1119; 1120; GFX9CHECK-LABEL: isinf_f32: 1121; GFX9CHECK: ; %bb.0: 1122; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1123; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x204 1124; GFX9CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1125; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1126; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1127; 1128; GFX10CHECK-LABEL: isinf_f32: 1129; GFX10CHECK: ; %bb.0: 1130; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1131; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 0x204 1132; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1133; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1134; 1135; GFX11CHECK-LABEL: isinf_f32: 1136; GFX11CHECK: ; %bb.0: 1137; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1138; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 0x204 1139; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1140; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1141; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1142 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 516) ; 0x204 = "inf" 1143 ret i1 %1 1144} 1145 1146define i1 @isinf_f64(double %x) nounwind { 1147; GFX7CHECK-LABEL: isinf_f64: 1148; GFX7CHECK: ; %bb.0: 1149; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1150; GFX7CHECK-NEXT: v_mov_b32_e32 v2, 0x204 1151; GFX7CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v2 1152; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1153; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1154; 1155; GFX8CHECK-LABEL: isinf_f64: 1156; GFX8CHECK: ; %bb.0: 1157; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1158; GFX8CHECK-NEXT: v_mov_b32_e32 v2, 0x204 1159; GFX8CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v2 1160; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1161; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1162; 1163; GFX9CHECK-LABEL: isinf_f64: 1164; GFX9CHECK: ; %bb.0: 1165; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1166; GFX9CHECK-NEXT: v_mov_b32_e32 v2, 0x204 1167; GFX9CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v2 1168; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1169; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1170; 1171; GFX10CHECK-LABEL: isinf_f64: 1172; GFX10CHECK: ; %bb.0: 1173; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1174; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s4, v[0:1], 0x204 1175; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1176; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1177; 1178; GFX11CHECK-LABEL: isinf_f64: 1179; GFX11CHECK: ; %bb.0: 1180; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1181; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s0, v[0:1], 0x204 1182; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1183; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1184; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1185 %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 516) ; 0x204 = "inf" 1186 ret i1 %1 1187} 1188 1189define i1 @isfinite_f32(float %x) nounwind { 1190; GFX7CHECK-LABEL: isfinite_f32: 1191; GFX7CHECK: ; %bb.0: 1192; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1193; GFX7CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8 1194; GFX7CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1195; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1196; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1197; 1198; GFX8CHECK-LABEL: isfinite_f32: 1199; GFX8CHECK: ; %bb.0: 1200; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1201; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8 1202; GFX8CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1203; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1204; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1205; 1206; GFX9CHECK-LABEL: isfinite_f32: 1207; GFX9CHECK: ; %bb.0: 1208; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1209; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x1f8 1210; GFX9CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1211; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1212; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1213; 1214; GFX10CHECK-LABEL: isfinite_f32: 1215; GFX10CHECK: ; %bb.0: 1216; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1217; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 0x1f8 1218; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1219; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1220; 1221; GFX11CHECK-LABEL: isfinite_f32: 1222; GFX11CHECK: ; %bb.0: 1223; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1224; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 0x1f8 1225; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1226; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1227; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1228 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 504) ; 0x1f8 = "finite" 1229 ret i1 %1 1230} 1231 1232define i1 @isfinite_f64(double %x) nounwind { 1233; GFX7CHECK-LABEL: isfinite_f64: 1234; GFX7CHECK: ; %bb.0: 1235; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1236; GFX7CHECK-NEXT: v_mov_b32_e32 v2, 0x1f8 1237; GFX7CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v2 1238; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1239; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1240; 1241; GFX8CHECK-LABEL: isfinite_f64: 1242; GFX8CHECK: ; %bb.0: 1243; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1244; GFX8CHECK-NEXT: v_mov_b32_e32 v2, 0x1f8 1245; GFX8CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v2 1246; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1247; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1248; 1249; GFX9CHECK-LABEL: isfinite_f64: 1250; GFX9CHECK: ; %bb.0: 1251; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1252; GFX9CHECK-NEXT: v_mov_b32_e32 v2, 0x1f8 1253; GFX9CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v2 1254; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1255; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1256; 1257; GFX10CHECK-LABEL: isfinite_f64: 1258; GFX10CHECK: ; %bb.0: 1259; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1260; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s4, v[0:1], 0x1f8 1261; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1262; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1263; 1264; GFX11CHECK-LABEL: isfinite_f64: 1265; GFX11CHECK: ; %bb.0: 1266; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1267; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s0, v[0:1], 0x1f8 1268; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1269; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1270; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1271 %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 504) ; 0x1f8 = "finite" 1272 ret i1 %1 1273} 1274 1275define i1 @isnormal_f32(float %x) nounwind { 1276; GFX7CHECK-LABEL: isnormal_f32: 1277; GFX7CHECK: ; %bb.0: 1278; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1279; GFX7CHECK-NEXT: v_mov_b32_e32 v1, 0x108 1280; GFX7CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1281; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1282; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1283; 1284; GFX8CHECK-LABEL: isnormal_f32: 1285; GFX8CHECK: ; %bb.0: 1286; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1287; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x108 1288; GFX8CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1289; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1290; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1291; 1292; GFX9CHECK-LABEL: isnormal_f32: 1293; GFX9CHECK: ; %bb.0: 1294; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1295; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x108 1296; GFX9CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1297; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1298; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1299; 1300; GFX10CHECK-LABEL: isnormal_f32: 1301; GFX10CHECK: ; %bb.0: 1302; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1303; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 0x108 1304; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1305; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1306; 1307; GFX11CHECK-LABEL: isnormal_f32: 1308; GFX11CHECK: ; %bb.0: 1309; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1310; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 0x108 1311; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1312; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1313; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1314 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 264) ; 0x108 = "normal" 1315 ret i1 %1 1316} 1317 1318define <2 x i1> @isnormal_v2f64(<2 x double> %x) nounwind { 1319; GFX7CHECK-LABEL: isnormal_v2f64: 1320; GFX7CHECK: ; %bb.0: 1321; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1322; GFX7CHECK-NEXT: v_mov_b32_e32 v4, 0x108 1323; GFX7CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v4 1324; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1325; GFX7CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[2:3], v4 1326; GFX7CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc 1327; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1328; 1329; GFX8CHECK-LABEL: isnormal_v2f64: 1330; GFX8CHECK: ; %bb.0: 1331; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1332; GFX8CHECK-NEXT: v_mov_b32_e32 v4, 0x108 1333; GFX8CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v4 1334; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1335; GFX8CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[2:3], v4 1336; GFX8CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc 1337; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1338; 1339; GFX9CHECK-LABEL: isnormal_v2f64: 1340; GFX9CHECK: ; %bb.0: 1341; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1342; GFX9CHECK-NEXT: v_mov_b32_e32 v4, 0x108 1343; GFX9CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[0:1], v4 1344; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1345; GFX9CHECK-NEXT: v_cmp_class_f64_e32 vcc, v[2:3], v4 1346; GFX9CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc 1347; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1348; 1349; GFX10CHECK-LABEL: isnormal_v2f64: 1350; GFX10CHECK: ; %bb.0: 1351; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1352; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s4, v[0:1], 0x108 1353; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1354; GFX10CHECK-NEXT: v_cmp_class_f64_e64 s4, v[2:3], 0x108 1355; GFX10CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s4 1356; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1357; 1358; GFX11CHECK-LABEL: isnormal_v2f64: 1359; GFX11CHECK: ; %bb.0: 1360; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1361; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s0, v[0:1], 0x108 1362; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 1363; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1364; GFX11CHECK-NEXT: v_cmp_class_f64_e64 s0, v[2:3], 0x108 1365; GFX11CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, s0 1366; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1367 %1 = call <2 x i1> @llvm.is.fpclass.v2f64(<2 x double> %x, i32 264) ; 0x108 = "normal" 1368 ret <2 x i1> %1 1369} 1370 1371define i1 @issubnormal_f32(float %x) nounwind { 1372; GFX7CHECK-LABEL: issubnormal_f32: 1373; GFX7CHECK: ; %bb.0: 1374; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1375; GFX7CHECK-NEXT: v_mov_b32_e32 v1, 0x90 1376; GFX7CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1377; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1378; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1379; 1380; GFX8CHECK-LABEL: issubnormal_f32: 1381; GFX8CHECK: ; %bb.0: 1382; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1383; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x90 1384; GFX8CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1385; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1386; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1387; 1388; GFX9CHECK-LABEL: issubnormal_f32: 1389; GFX9CHECK: ; %bb.0: 1390; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1391; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x90 1392; GFX9CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1393; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1394; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1395; 1396; GFX10CHECK-LABEL: issubnormal_f32: 1397; GFX10CHECK: ; %bb.0: 1398; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1399; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 0x90 1400; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1401; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1402; 1403; GFX11CHECK-LABEL: issubnormal_f32: 1404; GFX11CHECK: ; %bb.0: 1405; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1406; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 0x90 1407; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1408; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1409; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1410 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 144) ; 0x90 = "subnormal" 1411 ret i1 %1 1412} 1413 1414define i1 @iszero_f32(float %x) nounwind { 1415; GFX7CHECK-LABEL: iszero_f32: 1416; GFX7CHECK: ; %bb.0: 1417; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1418; GFX7CHECK-NEXT: v_mov_b32_e32 v1, 0x60 1419; GFX7CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1420; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1421; GFX7CHECK-NEXT: s_setpc_b64 s[30:31] 1422; 1423; GFX8CHECK-LABEL: iszero_f32: 1424; GFX8CHECK: ; %bb.0: 1425; GFX8CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1426; GFX8CHECK-NEXT: v_mov_b32_e32 v1, 0x60 1427; GFX8CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1428; GFX8CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1429; GFX8CHECK-NEXT: s_setpc_b64 s[30:31] 1430; 1431; GFX9CHECK-LABEL: iszero_f32: 1432; GFX9CHECK: ; %bb.0: 1433; GFX9CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1434; GFX9CHECK-NEXT: v_mov_b32_e32 v1, 0x60 1435; GFX9CHECK-NEXT: v_cmp_class_f32_e32 vcc, v0, v1 1436; GFX9CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 1437; GFX9CHECK-NEXT: s_setpc_b64 s[30:31] 1438; 1439; GFX10CHECK-LABEL: iszero_f32: 1440; GFX10CHECK: ; %bb.0: 1441; GFX10CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1442; GFX10CHECK-NEXT: v_cmp_class_f32_e64 s4, v0, 0x60 1443; GFX10CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s4 1444; GFX10CHECK-NEXT: s_setpc_b64 s[30:31] 1445; 1446; GFX11CHECK-LABEL: iszero_f32: 1447; GFX11CHECK: ; %bb.0: 1448; GFX11CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1449; GFX11CHECK-NEXT: v_cmp_class_f32_e64 s0, v0, 0x60 1450; GFX11CHECK-NEXT: s_delay_alu instid0(VALU_DEP_1) 1451; GFX11CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s0 1452; GFX11CHECK-NEXT: s_setpc_b64 s[30:31] 1453 %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 96) ; 0x60 = "zero" 1454 ret i1 %1 1455} 1456 1457declare i1 @llvm.is.fpclass.f32(float, i32) 1458declare i1 @llvm.is.fpclass.f64(double, i32) 1459declare <2 x i1> @llvm.is.fpclass.v2f32(<2 x float>, i32) 1460declare <3 x i1> @llvm.is.fpclass.v3f32(<3 x float>, i32) 1461declare <4 x i1> @llvm.is.fpclass.v4f32(<4 x float>, i32) 1462declare <5 x i1> @llvm.is.fpclass.v5f32(<5 x float>, i32) 1463declare <6 x i1> @llvm.is.fpclass.v6f32(<6 x float>, i32) 1464declare <7 x i1> @llvm.is.fpclass.v7f32(<7 x float>, i32) 1465declare <8 x i1> @llvm.is.fpclass.v8f32(<8 x float>, i32) 1466declare <16 x i1> @llvm.is.fpclass.v16f32(<16 x float>, i32) 1467declare <2 x i1> @llvm.is.fpclass.v2f64(<2 x double>, i32) 1468