brintos

brintos / llvm-project-archived public Read only

0
0
Text · 99.5 KiB · 87a9ba3 Raw
2457 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize32" < %s | FileCheck -check-prefixes=SDAG-GFX11 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr="+wavefrontsize32" < %s | FileCheck -check-prefixes=SDAG-GFX10 %s4 5; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize32" < %s | FileCheck -check-prefixes=GISEL-GFX11 %s6; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -mattr="+wavefrontsize32" < %s | FileCheck -check-prefixes=GISEL-GFX10 %s7 8declare i32 @llvm.amdgcn.fcmp.f32(float, float, i32) #09declare i32 @llvm.amdgcn.fcmp.f64(double, double, i32) #010declare float @llvm.fabs.f32(float) #011 12declare i32 @llvm.amdgcn.fcmp.f16(half, half, i32) #013declare half @llvm.fabs.f16(half) #014 15define amdgpu_kernel void @v_fcmp_f32_oeq_with_fabs(ptr addrspace(1) %out, float %src, float %a) {16; SDAG-GFX11-LABEL: v_fcmp_f32_oeq_with_fabs:17; SDAG-GFX11:       ; %bb.0:18; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2419; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)20; SDAG-GFX11-NEXT:    v_cmp_eq_f32_e64 s2, s2, |s3|21; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)22; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s223; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]24; SDAG-GFX11-NEXT:    s_endpgm25;26; SDAG-GFX10-LABEL: v_fcmp_f32_oeq_with_fabs:27; SDAG-GFX10:       ; %bb.0:28; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2429; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 030; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)31; SDAG-GFX10-NEXT:    v_cmp_eq_f32_e64 s2, s2, |s3|32; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s233; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]34; SDAG-GFX10-NEXT:    s_endpgm35;36; GISEL-GFX11-LABEL: v_fcmp_f32_oeq_with_fabs:37; GISEL-GFX11:       ; %bb.0:38; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2439; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 040; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)41; GISEL-GFX11-NEXT:    v_cmp_eq_f32_e64 s2, s2, |s3|42; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)43; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s244; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]45; GISEL-GFX11-NEXT:    s_endpgm46;47; GISEL-GFX10-LABEL: v_fcmp_f32_oeq_with_fabs:48; GISEL-GFX10:       ; %bb.0:49; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2450; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 051; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)52; GISEL-GFX10-NEXT:    v_cmp_eq_f32_e64 s2, s2, |s3|53; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s254; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]55; GISEL-GFX10-NEXT:    s_endpgm56  %temp = call float @llvm.fabs.f32(float %a)57  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float %temp, i32 1)58  store i32 %result, ptr addrspace(1) %out59  ret void60}61 62define amdgpu_kernel void @v_fcmp_f32_oeq_both_operands_with_fabs(ptr addrspace(1) %out, float %src, float %a) {63; SDAG-GFX11-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:64; SDAG-GFX11:       ; %bb.0:65; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2466; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)67; SDAG-GFX11-NEXT:    v_cmp_eq_f32_e64 s2, |s2|, |s3|68; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)69; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s270; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]71; SDAG-GFX11-NEXT:    s_endpgm72;73; SDAG-GFX10-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:74; SDAG-GFX10:       ; %bb.0:75; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2476; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 077; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)78; SDAG-GFX10-NEXT:    v_cmp_eq_f32_e64 s2, |s2|, |s3|79; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s280; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]81; SDAG-GFX10-NEXT:    s_endpgm82;83; GISEL-GFX11-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:84; GISEL-GFX11:       ; %bb.0:85; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2486; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 087; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)88; GISEL-GFX11-NEXT:    v_cmp_eq_f32_e64 s2, |s2|, |s3|89; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)90; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s291; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]92; GISEL-GFX11-NEXT:    s_endpgm93;94; GISEL-GFX10-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:95; GISEL-GFX10:       ; %bb.0:96; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2497; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 098; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)99; GISEL-GFX10-NEXT:    v_cmp_eq_f32_e64 s2, |s2|, |s3|100; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2101; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]102; GISEL-GFX10-NEXT:    s_endpgm103  %temp = call float @llvm.fabs.f32(float %a)104  %src_input = call float @llvm.fabs.f32(float %src)105  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src_input, float %temp, i32 1)106  store i32 %result, ptr addrspace(1) %out107  ret void108}109 110define amdgpu_kernel void @v_fcmp_f32(ptr addrspace(1) %out, float %src) {111; SDAG-GFX11-LABEL: v_fcmp_f32:112; SDAG-GFX11:       ; %bb.0:113; SDAG-GFX11-NEXT:    s_endpgm114;115; SDAG-GFX10-LABEL: v_fcmp_f32:116; SDAG-GFX10:       ; %bb.0:117; SDAG-GFX10-NEXT:    s_endpgm118;119; GISEL-GFX11-LABEL: v_fcmp_f32:120; GISEL-GFX11:       ; %bb.0:121; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24122; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, 0123; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)124; GISEL-GFX11-NEXT:    global_store_b32 v0, v0, s[0:1]125; GISEL-GFX11-NEXT:    s_endpgm126;127; GISEL-GFX10-LABEL: v_fcmp_f32:128; GISEL-GFX10:       ; %bb.0:129; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24130; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, 0131; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)132; GISEL-GFX10-NEXT:    global_store_dword v0, v0, s[0:1]133; GISEL-GFX10-NEXT:    s_endpgm134  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 -1)135  store i32 %result, ptr addrspace(1) %out136  ret void137}138 139define amdgpu_kernel void @v_fcmp_f32_oeq(ptr addrspace(1) %out, float %src) {140; SDAG-GFX11-LABEL: v_fcmp_f32_oeq:141; SDAG-GFX11:       ; %bb.0:142; SDAG-GFX11-NEXT:    s_clause 0x1143; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c144; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24145; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)146; SDAG-GFX11-NEXT:    v_cmp_eq_f32_e64 s2, 0x42c80000, s2147; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)148; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2149; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]150; SDAG-GFX11-NEXT:    s_endpgm151;152; SDAG-GFX10-LABEL: v_fcmp_f32_oeq:153; SDAG-GFX10:       ; %bb.0:154; SDAG-GFX10-NEXT:    s_clause 0x1155; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c156; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24157; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0158; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)159; SDAG-GFX10-NEXT:    v_cmp_eq_f32_e64 s2, 0x42c80000, s2160; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2161; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]162; SDAG-GFX10-NEXT:    s_endpgm163;164; GISEL-GFX11-LABEL: v_fcmp_f32_oeq:165; GISEL-GFX11:       ; %bb.0:166; GISEL-GFX11-NEXT:    s_clause 0x1167; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c168; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24169; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0170; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)171; GISEL-GFX11-NEXT:    v_cmp_eq_f32_e64 s2, 0x42c80000, s2172; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)173; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2174; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]175; GISEL-GFX11-NEXT:    s_endpgm176;177; GISEL-GFX10-LABEL: v_fcmp_f32_oeq:178; GISEL-GFX10:       ; %bb.0:179; GISEL-GFX10-NEXT:    s_clause 0x1180; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c181; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24182; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0183; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)184; GISEL-GFX10-NEXT:    v_cmp_eq_f32_e64 s2, 0x42c80000, s2185; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2186; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]187; GISEL-GFX10-NEXT:    s_endpgm188  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 1)189  store i32 %result, ptr addrspace(1) %out190  ret void191}192 193define amdgpu_kernel void @v_fcmp_f32_one(ptr addrspace(1) %out, float %src) {194; SDAG-GFX11-LABEL: v_fcmp_f32_one:195; SDAG-GFX11:       ; %bb.0:196; SDAG-GFX11-NEXT:    s_clause 0x1197; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c198; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24199; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)200; SDAG-GFX11-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2201; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)202; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2203; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]204; SDAG-GFX11-NEXT:    s_endpgm205;206; SDAG-GFX10-LABEL: v_fcmp_f32_one:207; SDAG-GFX10:       ; %bb.0:208; SDAG-GFX10-NEXT:    s_clause 0x1209; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c210; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24211; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0212; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)213; SDAG-GFX10-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2214; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2215; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]216; SDAG-GFX10-NEXT:    s_endpgm217;218; GISEL-GFX11-LABEL: v_fcmp_f32_one:219; GISEL-GFX11:       ; %bb.0:220; GISEL-GFX11-NEXT:    s_clause 0x1221; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c222; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24223; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0224; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)225; GISEL-GFX11-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2226; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)227; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2228; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]229; GISEL-GFX11-NEXT:    s_endpgm230;231; GISEL-GFX10-LABEL: v_fcmp_f32_one:232; GISEL-GFX10:       ; %bb.0:233; GISEL-GFX10-NEXT:    s_clause 0x1234; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c235; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24236; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0237; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)238; GISEL-GFX10-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2239; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2240; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]241; GISEL-GFX10-NEXT:    s_endpgm242  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 6)243  store i32 %result, ptr addrspace(1) %out244  ret void245}246 247define amdgpu_kernel void @v_fcmp_f32_ogt(ptr addrspace(1) %out, float %src) {248; SDAG-GFX11-LABEL: v_fcmp_f32_ogt:249; SDAG-GFX11:       ; %bb.0:250; SDAG-GFX11-NEXT:    s_clause 0x1251; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c252; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24253; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)254; SDAG-GFX11-NEXT:    v_cmp_lt_f32_e64 s2, 0x42c80000, s2255; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)256; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2257; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]258; SDAG-GFX11-NEXT:    s_endpgm259;260; SDAG-GFX10-LABEL: v_fcmp_f32_ogt:261; SDAG-GFX10:       ; %bb.0:262; SDAG-GFX10-NEXT:    s_clause 0x1263; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c264; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24265; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0266; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)267; SDAG-GFX10-NEXT:    v_cmp_lt_f32_e64 s2, 0x42c80000, s2268; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2269; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]270; SDAG-GFX10-NEXT:    s_endpgm271;272; GISEL-GFX11-LABEL: v_fcmp_f32_ogt:273; GISEL-GFX11:       ; %bb.0:274; GISEL-GFX11-NEXT:    s_clause 0x1275; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c276; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24277; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0278; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)279; GISEL-GFX11-NEXT:    v_cmp_lt_f32_e64 s2, 0x42c80000, s2280; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)281; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2282; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]283; GISEL-GFX11-NEXT:    s_endpgm284;285; GISEL-GFX10-LABEL: v_fcmp_f32_ogt:286; GISEL-GFX10:       ; %bb.0:287; GISEL-GFX10-NEXT:    s_clause 0x1288; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c289; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24290; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0291; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)292; GISEL-GFX10-NEXT:    v_cmp_lt_f32_e64 s2, 0x42c80000, s2293; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2294; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]295; GISEL-GFX10-NEXT:    s_endpgm296  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 2)297  store i32 %result, ptr addrspace(1) %out298  ret void299}300 301define amdgpu_kernel void @v_fcmp_f32_oge(ptr addrspace(1) %out, float %src) {302; SDAG-GFX11-LABEL: v_fcmp_f32_oge:303; SDAG-GFX11:       ; %bb.0:304; SDAG-GFX11-NEXT:    s_clause 0x1305; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c306; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24307; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)308; SDAG-GFX11-NEXT:    v_cmp_le_f32_e64 s2, 0x42c80000, s2309; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)310; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2311; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]312; SDAG-GFX11-NEXT:    s_endpgm313;314; SDAG-GFX10-LABEL: v_fcmp_f32_oge:315; SDAG-GFX10:       ; %bb.0:316; SDAG-GFX10-NEXT:    s_clause 0x1317; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c318; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24319; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0320; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)321; SDAG-GFX10-NEXT:    v_cmp_le_f32_e64 s2, 0x42c80000, s2322; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2323; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]324; SDAG-GFX10-NEXT:    s_endpgm325;326; GISEL-GFX11-LABEL: v_fcmp_f32_oge:327; GISEL-GFX11:       ; %bb.0:328; GISEL-GFX11-NEXT:    s_clause 0x1329; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c330; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24331; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0332; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)333; GISEL-GFX11-NEXT:    v_cmp_le_f32_e64 s2, 0x42c80000, s2334; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)335; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2336; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]337; GISEL-GFX11-NEXT:    s_endpgm338;339; GISEL-GFX10-LABEL: v_fcmp_f32_oge:340; GISEL-GFX10:       ; %bb.0:341; GISEL-GFX10-NEXT:    s_clause 0x1342; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c343; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24344; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0345; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)346; GISEL-GFX10-NEXT:    v_cmp_le_f32_e64 s2, 0x42c80000, s2347; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2348; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]349; GISEL-GFX10-NEXT:    s_endpgm350  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 3)351  store i32 %result, ptr addrspace(1) %out352  ret void353}354 355define amdgpu_kernel void @v_fcmp_f32_olt(ptr addrspace(1) %out, float %src) {356; SDAG-GFX11-LABEL: v_fcmp_f32_olt:357; SDAG-GFX11:       ; %bb.0:358; SDAG-GFX11-NEXT:    s_clause 0x1359; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c360; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24361; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)362; SDAG-GFX11-NEXT:    v_cmp_gt_f32_e64 s2, 0x42c80000, s2363; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)364; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2365; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]366; SDAG-GFX11-NEXT:    s_endpgm367;368; SDAG-GFX10-LABEL: v_fcmp_f32_olt:369; SDAG-GFX10:       ; %bb.0:370; SDAG-GFX10-NEXT:    s_clause 0x1371; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c372; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24373; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0374; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)375; SDAG-GFX10-NEXT:    v_cmp_gt_f32_e64 s2, 0x42c80000, s2376; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2377; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]378; SDAG-GFX10-NEXT:    s_endpgm379;380; GISEL-GFX11-LABEL: v_fcmp_f32_olt:381; GISEL-GFX11:       ; %bb.0:382; GISEL-GFX11-NEXT:    s_clause 0x1383; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c384; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24385; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0386; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)387; GISEL-GFX11-NEXT:    v_cmp_gt_f32_e64 s2, 0x42c80000, s2388; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)389; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2390; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]391; GISEL-GFX11-NEXT:    s_endpgm392;393; GISEL-GFX10-LABEL: v_fcmp_f32_olt:394; GISEL-GFX10:       ; %bb.0:395; GISEL-GFX10-NEXT:    s_clause 0x1396; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c397; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24398; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0399; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)400; GISEL-GFX10-NEXT:    v_cmp_gt_f32_e64 s2, 0x42c80000, s2401; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2402; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]403; GISEL-GFX10-NEXT:    s_endpgm404  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 4)405  store i32 %result, ptr addrspace(1) %out406  ret void407}408 409define amdgpu_kernel void @v_fcmp_f32_ole(ptr addrspace(1) %out, float %src) {410; SDAG-GFX11-LABEL: v_fcmp_f32_ole:411; SDAG-GFX11:       ; %bb.0:412; SDAG-GFX11-NEXT:    s_clause 0x1413; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c414; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24415; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)416; SDAG-GFX11-NEXT:    v_cmp_ge_f32_e64 s2, 0x42c80000, s2417; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)418; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2419; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]420; SDAG-GFX11-NEXT:    s_endpgm421;422; SDAG-GFX10-LABEL: v_fcmp_f32_ole:423; SDAG-GFX10:       ; %bb.0:424; SDAG-GFX10-NEXT:    s_clause 0x1425; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c426; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24427; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0428; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)429; SDAG-GFX10-NEXT:    v_cmp_ge_f32_e64 s2, 0x42c80000, s2430; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2431; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]432; SDAG-GFX10-NEXT:    s_endpgm433;434; GISEL-GFX11-LABEL: v_fcmp_f32_ole:435; GISEL-GFX11:       ; %bb.0:436; GISEL-GFX11-NEXT:    s_clause 0x1437; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c438; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24439; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0440; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)441; GISEL-GFX11-NEXT:    v_cmp_ge_f32_e64 s2, 0x42c80000, s2442; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)443; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2444; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]445; GISEL-GFX11-NEXT:    s_endpgm446;447; GISEL-GFX10-LABEL: v_fcmp_f32_ole:448; GISEL-GFX10:       ; %bb.0:449; GISEL-GFX10-NEXT:    s_clause 0x1450; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c451; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24452; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0453; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)454; GISEL-GFX10-NEXT:    v_cmp_ge_f32_e64 s2, 0x42c80000, s2455; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2456; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]457; GISEL-GFX10-NEXT:    s_endpgm458  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 5)459  store i32 %result, ptr addrspace(1) %out460  ret void461}462 463define amdgpu_kernel void @v_fcmp_f32_o(ptr addrspace(1) %out, float %src) {464; SDAG-GFX11-LABEL: v_fcmp_f32_o:465; SDAG-GFX11:       ; %bb.0:466; SDAG-GFX11-NEXT:    s_clause 0x1467; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c468; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24469; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)470; SDAG-GFX11-NEXT:    v_cmp_o_f32_e64 s2, 0x42c80000, s2471; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)472; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2473; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]474; SDAG-GFX11-NEXT:    s_endpgm475;476; SDAG-GFX10-LABEL: v_fcmp_f32_o:477; SDAG-GFX10:       ; %bb.0:478; SDAG-GFX10-NEXT:    s_clause 0x1479; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c480; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24481; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0482; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)483; SDAG-GFX10-NEXT:    v_cmp_o_f32_e64 s2, 0x42c80000, s2484; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2485; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]486; SDAG-GFX10-NEXT:    s_endpgm487;488; GISEL-GFX11-LABEL: v_fcmp_f32_o:489; GISEL-GFX11:       ; %bb.0:490; GISEL-GFX11-NEXT:    s_clause 0x1491; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c492; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24493; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0494; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)495; GISEL-GFX11-NEXT:    v_cmp_o_f32_e64 s2, 0x42c80000, s2496; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)497; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2498; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]499; GISEL-GFX11-NEXT:    s_endpgm500;501; GISEL-GFX10-LABEL: v_fcmp_f32_o:502; GISEL-GFX10:       ; %bb.0:503; GISEL-GFX10-NEXT:    s_clause 0x1504; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c505; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24506; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0507; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)508; GISEL-GFX10-NEXT:    v_cmp_o_f32_e64 s2, 0x42c80000, s2509; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2510; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]511; GISEL-GFX10-NEXT:    s_endpgm512  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 7)513  store i32 %result, ptr addrspace(1) %out514  ret void515}516 517define amdgpu_kernel void @v_fcmp_f32_uo(ptr addrspace(1) %out, float %src) {518; SDAG-GFX11-LABEL: v_fcmp_f32_uo:519; SDAG-GFX11:       ; %bb.0:520; SDAG-GFX11-NEXT:    s_clause 0x1521; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c522; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24523; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)524; SDAG-GFX11-NEXT:    v_cmp_u_f32_e64 s2, 0x42c80000, s2525; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)526; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2527; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]528; SDAG-GFX11-NEXT:    s_endpgm529;530; SDAG-GFX10-LABEL: v_fcmp_f32_uo:531; SDAG-GFX10:       ; %bb.0:532; SDAG-GFX10-NEXT:    s_clause 0x1533; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c534; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24535; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0536; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)537; SDAG-GFX10-NEXT:    v_cmp_u_f32_e64 s2, 0x42c80000, s2538; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2539; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]540; SDAG-GFX10-NEXT:    s_endpgm541;542; GISEL-GFX11-LABEL: v_fcmp_f32_uo:543; GISEL-GFX11:       ; %bb.0:544; GISEL-GFX11-NEXT:    s_clause 0x1545; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c546; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24547; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0548; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)549; GISEL-GFX11-NEXT:    v_cmp_u_f32_e64 s2, 0x42c80000, s2550; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)551; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2552; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]553; GISEL-GFX11-NEXT:    s_endpgm554;555; GISEL-GFX10-LABEL: v_fcmp_f32_uo:556; GISEL-GFX10:       ; %bb.0:557; GISEL-GFX10-NEXT:    s_clause 0x1558; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c559; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24560; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0561; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)562; GISEL-GFX10-NEXT:    v_cmp_u_f32_e64 s2, 0x42c80000, s2563; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2564; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]565; GISEL-GFX10-NEXT:    s_endpgm566  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 8)567  store i32 %result, ptr addrspace(1) %out568  ret void569}570 571define amdgpu_kernel void @v_fcmp_f32_ueq(ptr addrspace(1) %out, float %src) {572; SDAG-GFX11-LABEL: v_fcmp_f32_ueq:573; SDAG-GFX11:       ; %bb.0:574; SDAG-GFX11-NEXT:    s_clause 0x1575; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c576; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24577; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)578; SDAG-GFX11-NEXT:    v_cmp_nlg_f32_e64 s2, 0x42c80000, s2579; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)580; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2581; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]582; SDAG-GFX11-NEXT:    s_endpgm583;584; SDAG-GFX10-LABEL: v_fcmp_f32_ueq:585; SDAG-GFX10:       ; %bb.0:586; SDAG-GFX10-NEXT:    s_clause 0x1587; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c588; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24589; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0590; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)591; SDAG-GFX10-NEXT:    v_cmp_nlg_f32_e64 s2, 0x42c80000, s2592; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2593; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]594; SDAG-GFX10-NEXT:    s_endpgm595;596; GISEL-GFX11-LABEL: v_fcmp_f32_ueq:597; GISEL-GFX11:       ; %bb.0:598; GISEL-GFX11-NEXT:    s_clause 0x1599; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c600; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24601; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0602; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)603; GISEL-GFX11-NEXT:    v_cmp_nlg_f32_e64 s2, 0x42c80000, s2604; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)605; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2606; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]607; GISEL-GFX11-NEXT:    s_endpgm608;609; GISEL-GFX10-LABEL: v_fcmp_f32_ueq:610; GISEL-GFX10:       ; %bb.0:611; GISEL-GFX10-NEXT:    s_clause 0x1612; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c613; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24614; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0615; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)616; GISEL-GFX10-NEXT:    v_cmp_nlg_f32_e64 s2, 0x42c80000, s2617; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2618; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]619; GISEL-GFX10-NEXT:    s_endpgm620  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 9)621  store i32 %result, ptr addrspace(1) %out622  ret void623}624 625define amdgpu_kernel void @v_fcmp_f32_une(ptr addrspace(1) %out, float %src) {626; SDAG-GFX11-LABEL: v_fcmp_f32_une:627; SDAG-GFX11:       ; %bb.0:628; SDAG-GFX11-NEXT:    s_clause 0x1629; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c630; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24631; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)632; SDAG-GFX11-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2633; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)634; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2635; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]636; SDAG-GFX11-NEXT:    s_endpgm637;638; SDAG-GFX10-LABEL: v_fcmp_f32_une:639; SDAG-GFX10:       ; %bb.0:640; SDAG-GFX10-NEXT:    s_clause 0x1641; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c642; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24643; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0644; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)645; SDAG-GFX10-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2646; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2647; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]648; SDAG-GFX10-NEXT:    s_endpgm649;650; GISEL-GFX11-LABEL: v_fcmp_f32_une:651; GISEL-GFX11:       ; %bb.0:652; GISEL-GFX11-NEXT:    s_clause 0x1653; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c654; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24655; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0656; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)657; GISEL-GFX11-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2658; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)659; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2660; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]661; GISEL-GFX11-NEXT:    s_endpgm662;663; GISEL-GFX10-LABEL: v_fcmp_f32_une:664; GISEL-GFX10:       ; %bb.0:665; GISEL-GFX10-NEXT:    s_clause 0x1666; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c667; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24668; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0669; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)670; GISEL-GFX10-NEXT:    v_cmp_neq_f32_e64 s2, 0x42c80000, s2671; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2672; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]673; GISEL-GFX10-NEXT:    s_endpgm674  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 14)675  store i32 %result, ptr addrspace(1) %out676  ret void677}678 679define amdgpu_kernel void @v_fcmp_f32_ugt(ptr addrspace(1) %out, float %src) {680; SDAG-GFX11-LABEL: v_fcmp_f32_ugt:681; SDAG-GFX11:       ; %bb.0:682; SDAG-GFX11-NEXT:    s_clause 0x1683; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c684; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24685; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)686; SDAG-GFX11-NEXT:    v_cmp_nge_f32_e64 s2, 0x42c80000, s2687; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)688; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2689; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]690; SDAG-GFX11-NEXT:    s_endpgm691;692; SDAG-GFX10-LABEL: v_fcmp_f32_ugt:693; SDAG-GFX10:       ; %bb.0:694; SDAG-GFX10-NEXT:    s_clause 0x1695; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c696; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24697; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0698; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)699; SDAG-GFX10-NEXT:    v_cmp_nge_f32_e64 s2, 0x42c80000, s2700; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2701; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]702; SDAG-GFX10-NEXT:    s_endpgm703;704; GISEL-GFX11-LABEL: v_fcmp_f32_ugt:705; GISEL-GFX11:       ; %bb.0:706; GISEL-GFX11-NEXT:    s_clause 0x1707; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c708; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24709; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0710; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)711; GISEL-GFX11-NEXT:    v_cmp_nge_f32_e64 s2, 0x42c80000, s2712; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)713; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2714; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]715; GISEL-GFX11-NEXT:    s_endpgm716;717; GISEL-GFX10-LABEL: v_fcmp_f32_ugt:718; GISEL-GFX10:       ; %bb.0:719; GISEL-GFX10-NEXT:    s_clause 0x1720; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c721; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24722; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0723; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)724; GISEL-GFX10-NEXT:    v_cmp_nge_f32_e64 s2, 0x42c80000, s2725; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2726; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]727; GISEL-GFX10-NEXT:    s_endpgm728  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 10)729  store i32 %result, ptr addrspace(1) %out730  ret void731}732 733define amdgpu_kernel void @v_fcmp_f32_uge(ptr addrspace(1) %out, float %src) {734; SDAG-GFX11-LABEL: v_fcmp_f32_uge:735; SDAG-GFX11:       ; %bb.0:736; SDAG-GFX11-NEXT:    s_clause 0x1737; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c738; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24739; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)740; SDAG-GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, 0x42c80000, s2741; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)742; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2743; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]744; SDAG-GFX11-NEXT:    s_endpgm745;746; SDAG-GFX10-LABEL: v_fcmp_f32_uge:747; SDAG-GFX10:       ; %bb.0:748; SDAG-GFX10-NEXT:    s_clause 0x1749; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c750; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24751; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0752; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)753; SDAG-GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, 0x42c80000, s2754; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2755; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]756; SDAG-GFX10-NEXT:    s_endpgm757;758; GISEL-GFX11-LABEL: v_fcmp_f32_uge:759; GISEL-GFX11:       ; %bb.0:760; GISEL-GFX11-NEXT:    s_clause 0x1761; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c762; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24763; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0764; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)765; GISEL-GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, 0x42c80000, s2766; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)767; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2768; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]769; GISEL-GFX11-NEXT:    s_endpgm770;771; GISEL-GFX10-LABEL: v_fcmp_f32_uge:772; GISEL-GFX10:       ; %bb.0:773; GISEL-GFX10-NEXT:    s_clause 0x1774; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c775; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24776; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0777; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)778; GISEL-GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, 0x42c80000, s2779; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2780; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]781; GISEL-GFX10-NEXT:    s_endpgm782  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 11)783  store i32 %result, ptr addrspace(1) %out784  ret void785}786 787define amdgpu_kernel void @v_fcmp_f32_ult(ptr addrspace(1) %out, float %src) {788; SDAG-GFX11-LABEL: v_fcmp_f32_ult:789; SDAG-GFX11:       ; %bb.0:790; SDAG-GFX11-NEXT:    s_clause 0x1791; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c792; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24793; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)794; SDAG-GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x42c80000, s2795; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)796; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2797; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]798; SDAG-GFX11-NEXT:    s_endpgm799;800; SDAG-GFX10-LABEL: v_fcmp_f32_ult:801; SDAG-GFX10:       ; %bb.0:802; SDAG-GFX10-NEXT:    s_clause 0x1803; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c804; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24805; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0806; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)807; SDAG-GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x42c80000, s2808; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2809; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]810; SDAG-GFX10-NEXT:    s_endpgm811;812; GISEL-GFX11-LABEL: v_fcmp_f32_ult:813; GISEL-GFX11:       ; %bb.0:814; GISEL-GFX11-NEXT:    s_clause 0x1815; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c816; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24817; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0818; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)819; GISEL-GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x42c80000, s2820; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)821; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2822; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]823; GISEL-GFX11-NEXT:    s_endpgm824;825; GISEL-GFX10-LABEL: v_fcmp_f32_ult:826; GISEL-GFX10:       ; %bb.0:827; GISEL-GFX10-NEXT:    s_clause 0x1828; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c829; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24830; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0831; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)832; GISEL-GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x42c80000, s2833; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2834; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]835; GISEL-GFX10-NEXT:    s_endpgm836  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 12)837  store i32 %result, ptr addrspace(1) %out838  ret void839}840 841define amdgpu_kernel void @v_fcmp_f32_ule(ptr addrspace(1) %out, float %src) {842; SDAG-GFX11-LABEL: v_fcmp_f32_ule:843; SDAG-GFX11:       ; %bb.0:844; SDAG-GFX11-NEXT:    s_clause 0x1845; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c846; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24847; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)848; SDAG-GFX11-NEXT:    v_cmp_nlt_f32_e64 s2, 0x42c80000, s2849; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)850; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2851; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]852; SDAG-GFX11-NEXT:    s_endpgm853;854; SDAG-GFX10-LABEL: v_fcmp_f32_ule:855; SDAG-GFX10:       ; %bb.0:856; SDAG-GFX10-NEXT:    s_clause 0x1857; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c858; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24859; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0860; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)861; SDAG-GFX10-NEXT:    v_cmp_nlt_f32_e64 s2, 0x42c80000, s2862; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2863; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]864; SDAG-GFX10-NEXT:    s_endpgm865;866; GISEL-GFX11-LABEL: v_fcmp_f32_ule:867; GISEL-GFX11:       ; %bb.0:868; GISEL-GFX11-NEXT:    s_clause 0x1869; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c870; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24871; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0872; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)873; GISEL-GFX11-NEXT:    v_cmp_nlt_f32_e64 s2, 0x42c80000, s2874; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)875; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2876; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]877; GISEL-GFX11-NEXT:    s_endpgm878;879; GISEL-GFX10-LABEL: v_fcmp_f32_ule:880; GISEL-GFX10:       ; %bb.0:881; GISEL-GFX10-NEXT:    s_clause 0x1882; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c883; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24884; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0885; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)886; GISEL-GFX10-NEXT:    v_cmp_nlt_f32_e64 s2, 0x42c80000, s2887; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2888; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]889; GISEL-GFX10-NEXT:    s_endpgm890  %result = call i32 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 13)891  store i32 %result, ptr addrspace(1) %out892  ret void893}894 895define amdgpu_kernel void @v_fcmp_f64_oeq(ptr addrspace(1) %out, double %src) {896; SDAG-GFX11-LABEL: v_fcmp_f64_oeq:897; SDAG-GFX11:       ; %bb.0:898; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24899; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)900; SDAG-GFX11-NEXT:    v_cmp_eq_f64_e64 s2, 0x40590000, s[2:3]901; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)902; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2903; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]904; SDAG-GFX11-NEXT:    s_endpgm905;906; SDAG-GFX10-LABEL: v_fcmp_f64_oeq:907; SDAG-GFX10:       ; %bb.0:908; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24909; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0910; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)911; SDAG-GFX10-NEXT:    v_cmp_eq_f64_e64 s2, 0x40590000, s[2:3]912; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2913; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]914; SDAG-GFX10-NEXT:    s_endpgm915;916; GISEL-GFX11-LABEL: v_fcmp_f64_oeq:917; GISEL-GFX11:       ; %bb.0:918; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24919; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0920; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)921; GISEL-GFX11-NEXT:    v_cmp_eq_f64_e64 s2, 0x40590000, s[2:3]922; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)923; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2924; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]925; GISEL-GFX11-NEXT:    s_endpgm926;927; GISEL-GFX10-LABEL: v_fcmp_f64_oeq:928; GISEL-GFX10:       ; %bb.0:929; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24930; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0931; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)932; GISEL-GFX10-NEXT:    v_cmp_eq_f64_e64 s2, 0x40590000, s[2:3]933; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2934; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]935; GISEL-GFX10-NEXT:    s_endpgm936  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 1)937  store i32 %result, ptr addrspace(1) %out938  ret void939}940 941define amdgpu_kernel void @v_fcmp_f64_one(ptr addrspace(1) %out, double %src) {942; SDAG-GFX11-LABEL: v_fcmp_f64_one:943; SDAG-GFX11:       ; %bb.0:944; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24945; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)946; SDAG-GFX11-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]947; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)948; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2949; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]950; SDAG-GFX11-NEXT:    s_endpgm951;952; SDAG-GFX10-LABEL: v_fcmp_f64_one:953; SDAG-GFX10:       ; %bb.0:954; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24955; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 0956; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)957; SDAG-GFX10-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]958; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s2959; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]960; SDAG-GFX10-NEXT:    s_endpgm961;962; GISEL-GFX11-LABEL: v_fcmp_f64_one:963; GISEL-GFX11:       ; %bb.0:964; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24965; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 0966; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)967; GISEL-GFX11-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]968; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)969; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s2970; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]971; GISEL-GFX11-NEXT:    s_endpgm972;973; GISEL-GFX10-LABEL: v_fcmp_f64_one:974; GISEL-GFX10:       ; %bb.0:975; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24976; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 0977; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)978; GISEL-GFX10-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]979; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s2980; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]981; GISEL-GFX10-NEXT:    s_endpgm982  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 6)983  store i32 %result, ptr addrspace(1) %out984  ret void985}986 987define amdgpu_kernel void @v_fcmp_f64_ogt(ptr addrspace(1) %out, double %src) {988; SDAG-GFX11-LABEL: v_fcmp_f64_ogt:989; SDAG-GFX11:       ; %bb.0:990; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24991; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)992; SDAG-GFX11-NEXT:    v_cmp_lt_f64_e64 s2, 0x40590000, s[2:3]993; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)994; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2995; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]996; SDAG-GFX11-NEXT:    s_endpgm997;998; SDAG-GFX10-LABEL: v_fcmp_f64_ogt:999; SDAG-GFX10:       ; %bb.0:1000; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241001; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01002; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1003; SDAG-GFX10-NEXT:    v_cmp_lt_f64_e64 s2, 0x40590000, s[2:3]1004; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21005; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1006; SDAG-GFX10-NEXT:    s_endpgm1007;1008; GISEL-GFX11-LABEL: v_fcmp_f64_ogt:1009; GISEL-GFX11:       ; %bb.0:1010; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241011; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01012; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1013; GISEL-GFX11-NEXT:    v_cmp_lt_f64_e64 s2, 0x40590000, s[2:3]1014; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1015; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21016; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1017; GISEL-GFX11-NEXT:    s_endpgm1018;1019; GISEL-GFX10-LABEL: v_fcmp_f64_ogt:1020; GISEL-GFX10:       ; %bb.0:1021; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241022; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01023; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1024; GISEL-GFX10-NEXT:    v_cmp_lt_f64_e64 s2, 0x40590000, s[2:3]1025; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21026; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1027; GISEL-GFX10-NEXT:    s_endpgm1028  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 2)1029  store i32 %result, ptr addrspace(1) %out1030  ret void1031}1032 1033define amdgpu_kernel void @v_fcmp_f64_oge(ptr addrspace(1) %out, double %src) {1034; SDAG-GFX11-LABEL: v_fcmp_f64_oge:1035; SDAG-GFX11:       ; %bb.0:1036; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241037; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1038; SDAG-GFX11-NEXT:    v_cmp_le_f64_e64 s2, 0x40590000, s[2:3]1039; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1040; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21041; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1042; SDAG-GFX11-NEXT:    s_endpgm1043;1044; SDAG-GFX10-LABEL: v_fcmp_f64_oge:1045; SDAG-GFX10:       ; %bb.0:1046; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241047; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01048; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1049; SDAG-GFX10-NEXT:    v_cmp_le_f64_e64 s2, 0x40590000, s[2:3]1050; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21051; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1052; SDAG-GFX10-NEXT:    s_endpgm1053;1054; GISEL-GFX11-LABEL: v_fcmp_f64_oge:1055; GISEL-GFX11:       ; %bb.0:1056; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241057; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01058; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1059; GISEL-GFX11-NEXT:    v_cmp_le_f64_e64 s2, 0x40590000, s[2:3]1060; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1061; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21062; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1063; GISEL-GFX11-NEXT:    s_endpgm1064;1065; GISEL-GFX10-LABEL: v_fcmp_f64_oge:1066; GISEL-GFX10:       ; %bb.0:1067; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241068; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01069; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1070; GISEL-GFX10-NEXT:    v_cmp_le_f64_e64 s2, 0x40590000, s[2:3]1071; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21072; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1073; GISEL-GFX10-NEXT:    s_endpgm1074  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 3)1075  store i32 %result, ptr addrspace(1) %out1076  ret void1077}1078 1079define amdgpu_kernel void @v_fcmp_f64_olt(ptr addrspace(1) %out, double %src) {1080; SDAG-GFX11-LABEL: v_fcmp_f64_olt:1081; SDAG-GFX11:       ; %bb.0:1082; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241083; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1084; SDAG-GFX11-NEXT:    v_cmp_gt_f64_e64 s2, 0x40590000, s[2:3]1085; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1086; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21087; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1088; SDAG-GFX11-NEXT:    s_endpgm1089;1090; SDAG-GFX10-LABEL: v_fcmp_f64_olt:1091; SDAG-GFX10:       ; %bb.0:1092; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241093; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01094; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1095; SDAG-GFX10-NEXT:    v_cmp_gt_f64_e64 s2, 0x40590000, s[2:3]1096; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21097; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1098; SDAG-GFX10-NEXT:    s_endpgm1099;1100; GISEL-GFX11-LABEL: v_fcmp_f64_olt:1101; GISEL-GFX11:       ; %bb.0:1102; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241103; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01104; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1105; GISEL-GFX11-NEXT:    v_cmp_gt_f64_e64 s2, 0x40590000, s[2:3]1106; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1107; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21108; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1109; GISEL-GFX11-NEXT:    s_endpgm1110;1111; GISEL-GFX10-LABEL: v_fcmp_f64_olt:1112; GISEL-GFX10:       ; %bb.0:1113; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241114; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01115; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1116; GISEL-GFX10-NEXT:    v_cmp_gt_f64_e64 s2, 0x40590000, s[2:3]1117; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21118; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1119; GISEL-GFX10-NEXT:    s_endpgm1120  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 4)1121  store i32 %result, ptr addrspace(1) %out1122  ret void1123}1124 1125define amdgpu_kernel void @v_fcmp_f64_ole(ptr addrspace(1) %out, double %src) {1126; SDAG-GFX11-LABEL: v_fcmp_f64_ole:1127; SDAG-GFX11:       ; %bb.0:1128; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241129; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1130; SDAG-GFX11-NEXT:    v_cmp_ge_f64_e64 s2, 0x40590000, s[2:3]1131; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1132; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21133; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1134; SDAG-GFX11-NEXT:    s_endpgm1135;1136; SDAG-GFX10-LABEL: v_fcmp_f64_ole:1137; SDAG-GFX10:       ; %bb.0:1138; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241139; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01140; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1141; SDAG-GFX10-NEXT:    v_cmp_ge_f64_e64 s2, 0x40590000, s[2:3]1142; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21143; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1144; SDAG-GFX10-NEXT:    s_endpgm1145;1146; GISEL-GFX11-LABEL: v_fcmp_f64_ole:1147; GISEL-GFX11:       ; %bb.0:1148; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241149; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01150; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1151; GISEL-GFX11-NEXT:    v_cmp_ge_f64_e64 s2, 0x40590000, s[2:3]1152; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1153; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21154; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1155; GISEL-GFX11-NEXT:    s_endpgm1156;1157; GISEL-GFX10-LABEL: v_fcmp_f64_ole:1158; GISEL-GFX10:       ; %bb.0:1159; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241160; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01161; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1162; GISEL-GFX10-NEXT:    v_cmp_ge_f64_e64 s2, 0x40590000, s[2:3]1163; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21164; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1165; GISEL-GFX10-NEXT:    s_endpgm1166  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 5)1167  store i32 %result, ptr addrspace(1) %out1168  ret void1169}1170 1171define amdgpu_kernel void @v_fcmp_f64_ueq(ptr addrspace(1) %out, double %src) {1172; SDAG-GFX11-LABEL: v_fcmp_f64_ueq:1173; SDAG-GFX11:       ; %bb.0:1174; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241175; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1176; SDAG-GFX11-NEXT:    v_cmp_nlg_f64_e64 s2, 0x40590000, s[2:3]1177; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1178; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21179; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1180; SDAG-GFX11-NEXT:    s_endpgm1181;1182; SDAG-GFX10-LABEL: v_fcmp_f64_ueq:1183; SDAG-GFX10:       ; %bb.0:1184; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241185; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01186; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1187; SDAG-GFX10-NEXT:    v_cmp_nlg_f64_e64 s2, 0x40590000, s[2:3]1188; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21189; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1190; SDAG-GFX10-NEXT:    s_endpgm1191;1192; GISEL-GFX11-LABEL: v_fcmp_f64_ueq:1193; GISEL-GFX11:       ; %bb.0:1194; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241195; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01196; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1197; GISEL-GFX11-NEXT:    v_cmp_nlg_f64_e64 s2, 0x40590000, s[2:3]1198; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1199; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21200; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1201; GISEL-GFX11-NEXT:    s_endpgm1202;1203; GISEL-GFX10-LABEL: v_fcmp_f64_ueq:1204; GISEL-GFX10:       ; %bb.0:1205; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241206; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01207; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1208; GISEL-GFX10-NEXT:    v_cmp_nlg_f64_e64 s2, 0x40590000, s[2:3]1209; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21210; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1211; GISEL-GFX10-NEXT:    s_endpgm1212  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 9)1213  store i32 %result, ptr addrspace(1) %out1214  ret void1215}1216 1217define amdgpu_kernel void @v_fcmp_f64_o(ptr addrspace(1) %out, double %src) {1218; SDAG-GFX11-LABEL: v_fcmp_f64_o:1219; SDAG-GFX11:       ; %bb.0:1220; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241221; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1222; SDAG-GFX11-NEXT:    v_cmp_o_f64_e64 s2, 0x40590000, s[2:3]1223; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1224; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21225; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1226; SDAG-GFX11-NEXT:    s_endpgm1227;1228; SDAG-GFX10-LABEL: v_fcmp_f64_o:1229; SDAG-GFX10:       ; %bb.0:1230; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241231; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01232; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1233; SDAG-GFX10-NEXT:    v_cmp_o_f64_e64 s2, 0x40590000, s[2:3]1234; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21235; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1236; SDAG-GFX10-NEXT:    s_endpgm1237;1238; GISEL-GFX11-LABEL: v_fcmp_f64_o:1239; GISEL-GFX11:       ; %bb.0:1240; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241241; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01242; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1243; GISEL-GFX11-NEXT:    v_cmp_o_f64_e64 s2, 0x40590000, s[2:3]1244; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1245; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21246; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1247; GISEL-GFX11-NEXT:    s_endpgm1248;1249; GISEL-GFX10-LABEL: v_fcmp_f64_o:1250; GISEL-GFX10:       ; %bb.0:1251; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241252; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01253; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1254; GISEL-GFX10-NEXT:    v_cmp_o_f64_e64 s2, 0x40590000, s[2:3]1255; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21256; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1257; GISEL-GFX10-NEXT:    s_endpgm1258  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 7)1259  store i32 %result, ptr addrspace(1) %out1260  ret void1261}1262 1263define amdgpu_kernel void @v_fcmp_f64_uo(ptr addrspace(1) %out, double %src) {1264; SDAG-GFX11-LABEL: v_fcmp_f64_uo:1265; SDAG-GFX11:       ; %bb.0:1266; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241267; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1268; SDAG-GFX11-NEXT:    v_cmp_u_f64_e64 s2, 0x40590000, s[2:3]1269; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1270; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21271; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1272; SDAG-GFX11-NEXT:    s_endpgm1273;1274; SDAG-GFX10-LABEL: v_fcmp_f64_uo:1275; SDAG-GFX10:       ; %bb.0:1276; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241277; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01278; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1279; SDAG-GFX10-NEXT:    v_cmp_u_f64_e64 s2, 0x40590000, s[2:3]1280; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21281; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1282; SDAG-GFX10-NEXT:    s_endpgm1283;1284; GISEL-GFX11-LABEL: v_fcmp_f64_uo:1285; GISEL-GFX11:       ; %bb.0:1286; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241287; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01288; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1289; GISEL-GFX11-NEXT:    v_cmp_u_f64_e64 s2, 0x40590000, s[2:3]1290; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1291; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21292; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1293; GISEL-GFX11-NEXT:    s_endpgm1294;1295; GISEL-GFX10-LABEL: v_fcmp_f64_uo:1296; GISEL-GFX10:       ; %bb.0:1297; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241298; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01299; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1300; GISEL-GFX10-NEXT:    v_cmp_u_f64_e64 s2, 0x40590000, s[2:3]1301; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21302; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1303; GISEL-GFX10-NEXT:    s_endpgm1304  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 8)1305  store i32 %result, ptr addrspace(1) %out1306  ret void1307}1308 1309define amdgpu_kernel void @v_fcmp_f64_une(ptr addrspace(1) %out, double %src) {1310; SDAG-GFX11-LABEL: v_fcmp_f64_une:1311; SDAG-GFX11:       ; %bb.0:1312; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241313; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1314; SDAG-GFX11-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]1315; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1316; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21317; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1318; SDAG-GFX11-NEXT:    s_endpgm1319;1320; SDAG-GFX10-LABEL: v_fcmp_f64_une:1321; SDAG-GFX10:       ; %bb.0:1322; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241323; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01324; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1325; SDAG-GFX10-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]1326; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21327; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1328; SDAG-GFX10-NEXT:    s_endpgm1329;1330; GISEL-GFX11-LABEL: v_fcmp_f64_une:1331; GISEL-GFX11:       ; %bb.0:1332; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241333; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01334; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1335; GISEL-GFX11-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]1336; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1337; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21338; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1339; GISEL-GFX11-NEXT:    s_endpgm1340;1341; GISEL-GFX10-LABEL: v_fcmp_f64_une:1342; GISEL-GFX10:       ; %bb.0:1343; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241344; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01345; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1346; GISEL-GFX10-NEXT:    v_cmp_neq_f64_e64 s2, 0x40590000, s[2:3]1347; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21348; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1349; GISEL-GFX10-NEXT:    s_endpgm1350  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 14)1351  store i32 %result, ptr addrspace(1) %out1352  ret void1353}1354 1355define amdgpu_kernel void @v_fcmp_f64_ugt(ptr addrspace(1) %out, double %src) {1356; SDAG-GFX11-LABEL: v_fcmp_f64_ugt:1357; SDAG-GFX11:       ; %bb.0:1358; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241359; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1360; SDAG-GFX11-NEXT:    v_cmp_nge_f64_e64 s2, 0x40590000, s[2:3]1361; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1362; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21363; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1364; SDAG-GFX11-NEXT:    s_endpgm1365;1366; SDAG-GFX10-LABEL: v_fcmp_f64_ugt:1367; SDAG-GFX10:       ; %bb.0:1368; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241369; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01370; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1371; SDAG-GFX10-NEXT:    v_cmp_nge_f64_e64 s2, 0x40590000, s[2:3]1372; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21373; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1374; SDAG-GFX10-NEXT:    s_endpgm1375;1376; GISEL-GFX11-LABEL: v_fcmp_f64_ugt:1377; GISEL-GFX11:       ; %bb.0:1378; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241379; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01380; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1381; GISEL-GFX11-NEXT:    v_cmp_nge_f64_e64 s2, 0x40590000, s[2:3]1382; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1383; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21384; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1385; GISEL-GFX11-NEXT:    s_endpgm1386;1387; GISEL-GFX10-LABEL: v_fcmp_f64_ugt:1388; GISEL-GFX10:       ; %bb.0:1389; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241390; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01391; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1392; GISEL-GFX10-NEXT:    v_cmp_nge_f64_e64 s2, 0x40590000, s[2:3]1393; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21394; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1395; GISEL-GFX10-NEXT:    s_endpgm1396  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 10)1397  store i32 %result, ptr addrspace(1) %out1398  ret void1399}1400 1401define amdgpu_kernel void @v_fcmp_f64_uge(ptr addrspace(1) %out, double %src) {1402; SDAG-GFX11-LABEL: v_fcmp_f64_uge:1403; SDAG-GFX11:       ; %bb.0:1404; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241405; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1406; SDAG-GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, 0x40590000, s[2:3]1407; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1408; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21409; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1410; SDAG-GFX11-NEXT:    s_endpgm1411;1412; SDAG-GFX10-LABEL: v_fcmp_f64_uge:1413; SDAG-GFX10:       ; %bb.0:1414; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241415; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01416; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1417; SDAG-GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, 0x40590000, s[2:3]1418; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21419; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1420; SDAG-GFX10-NEXT:    s_endpgm1421;1422; GISEL-GFX11-LABEL: v_fcmp_f64_uge:1423; GISEL-GFX11:       ; %bb.0:1424; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241425; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01426; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1427; GISEL-GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, 0x40590000, s[2:3]1428; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1429; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21430; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1431; GISEL-GFX11-NEXT:    s_endpgm1432;1433; GISEL-GFX10-LABEL: v_fcmp_f64_uge:1434; GISEL-GFX10:       ; %bb.0:1435; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241436; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01437; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1438; GISEL-GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, 0x40590000, s[2:3]1439; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21440; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1441; GISEL-GFX10-NEXT:    s_endpgm1442  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 11)1443  store i32 %result, ptr addrspace(1) %out1444  ret void1445}1446 1447define amdgpu_kernel void @v_fcmp_f64_ult(ptr addrspace(1) %out, double %src) {1448; SDAG-GFX11-LABEL: v_fcmp_f64_ult:1449; SDAG-GFX11:       ; %bb.0:1450; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241451; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1452; SDAG-GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x40590000, s[2:3]1453; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1454; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21455; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1456; SDAG-GFX11-NEXT:    s_endpgm1457;1458; SDAG-GFX10-LABEL: v_fcmp_f64_ult:1459; SDAG-GFX10:       ; %bb.0:1460; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241461; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01462; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1463; SDAG-GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x40590000, s[2:3]1464; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21465; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1466; SDAG-GFX10-NEXT:    s_endpgm1467;1468; GISEL-GFX11-LABEL: v_fcmp_f64_ult:1469; GISEL-GFX11:       ; %bb.0:1470; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241471; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01472; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1473; GISEL-GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x40590000, s[2:3]1474; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1475; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21476; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1477; GISEL-GFX11-NEXT:    s_endpgm1478;1479; GISEL-GFX10-LABEL: v_fcmp_f64_ult:1480; GISEL-GFX10:       ; %bb.0:1481; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241482; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01483; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1484; GISEL-GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x40590000, s[2:3]1485; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21486; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1487; GISEL-GFX10-NEXT:    s_endpgm1488  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 12)1489  store i32 %result, ptr addrspace(1) %out1490  ret void1491}1492 1493define amdgpu_kernel void @v_fcmp_f64_ule(ptr addrspace(1) %out, double %src) {1494; SDAG-GFX11-LABEL: v_fcmp_f64_ule:1495; SDAG-GFX11:       ; %bb.0:1496; SDAG-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241497; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1498; SDAG-GFX11-NEXT:    v_cmp_nlt_f64_e64 s2, 0x40590000, s[2:3]1499; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1500; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21501; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1502; SDAG-GFX11-NEXT:    s_endpgm1503;1504; SDAG-GFX10-LABEL: v_fcmp_f64_ule:1505; SDAG-GFX10:       ; %bb.0:1506; SDAG-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241507; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01508; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1509; SDAG-GFX10-NEXT:    v_cmp_nlt_f64_e64 s2, 0x40590000, s[2:3]1510; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21511; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1512; SDAG-GFX10-NEXT:    s_endpgm1513;1514; GISEL-GFX11-LABEL: v_fcmp_f64_ule:1515; GISEL-GFX11:       ; %bb.0:1516; GISEL-GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241517; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01518; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1519; GISEL-GFX11-NEXT:    v_cmp_nlt_f64_e64 s2, 0x40590000, s[2:3]1520; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1521; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21522; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1523; GISEL-GFX11-NEXT:    s_endpgm1524;1525; GISEL-GFX10-LABEL: v_fcmp_f64_ule:1526; GISEL-GFX10:       ; %bb.0:1527; GISEL-GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241528; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01529; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1530; GISEL-GFX10-NEXT:    v_cmp_nlt_f64_e64 s2, 0x40590000, s[2:3]1531; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21532; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1533; GISEL-GFX10-NEXT:    s_endpgm1534  %result = call i32 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 13)1535  store i32 %result, ptr addrspace(1) %out1536  ret void1537}1538 1539 1540define amdgpu_kernel void @v_fcmp_f16_oeq_with_fabs(ptr addrspace(1) %out, half %src, half %a) {1541; SDAG-GFX11-LABEL: v_fcmp_f16_oeq_with_fabs:1542; SDAG-GFX11:       ; %bb.0:1543; SDAG-GFX11-NEXT:    s_clause 0x11544; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1545; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241546; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1547; SDAG-GFX11-NEXT:    s_lshr_b32 s3, s2, 161548; SDAG-GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)1549; SDAG-GFX11-NEXT:    v_cmp_eq_f16_e64 s2, s2, |s3|1550; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21551; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1552; SDAG-GFX11-NEXT:    s_endpgm1553;1554; SDAG-GFX10-LABEL: v_fcmp_f16_oeq_with_fabs:1555; SDAG-GFX10:       ; %bb.0:1556; SDAG-GFX10-NEXT:    s_clause 0x11557; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1558; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241559; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01560; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1561; SDAG-GFX10-NEXT:    s_lshr_b32 s3, s2, 161562; SDAG-GFX10-NEXT:    v_cmp_eq_f16_e64 s2, s2, |s3|1563; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21564; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1565; SDAG-GFX10-NEXT:    s_endpgm1566;1567; GISEL-GFX11-LABEL: v_fcmp_f16_oeq_with_fabs:1568; GISEL-GFX11:       ; %bb.0:1569; GISEL-GFX11-NEXT:    s_clause 0x11570; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1571; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241572; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01573; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1574; GISEL-GFX11-NEXT:    s_lshr_b32 s3, s2, 161575; GISEL-GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)1576; GISEL-GFX11-NEXT:    v_cmp_eq_f16_e64 s2, s2, |s3|1577; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21578; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1579; GISEL-GFX11-NEXT:    s_endpgm1580;1581; GISEL-GFX10-LABEL: v_fcmp_f16_oeq_with_fabs:1582; GISEL-GFX10:       ; %bb.0:1583; GISEL-GFX10-NEXT:    s_clause 0x11584; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1585; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241586; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01587; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1588; GISEL-GFX10-NEXT:    s_lshr_b32 s3, s2, 161589; GISEL-GFX10-NEXT:    v_cmp_eq_f16_e64 s2, s2, |s3|1590; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21591; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1592; GISEL-GFX10-NEXT:    s_endpgm1593  %temp = call half @llvm.fabs.f16(half %a)1594  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half %temp, i32 1)1595  store i32 %result, ptr addrspace(1) %out1596  ret void1597}1598 1599 1600define amdgpu_kernel void @v_fcmp_f16_oeq_both_operands_with_fabs(ptr addrspace(1) %out, half %src, half %a) {1601; SDAG-GFX11-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:1602; SDAG-GFX11:       ; %bb.0:1603; SDAG-GFX11-NEXT:    s_clause 0x11604; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1605; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241606; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1607; SDAG-GFX11-NEXT:    s_lshr_b32 s3, s2, 161608; SDAG-GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)1609; SDAG-GFX11-NEXT:    v_cmp_eq_f16_e64 s2, |s2|, |s3|1610; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21611; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1612; SDAG-GFX11-NEXT:    s_endpgm1613;1614; SDAG-GFX10-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:1615; SDAG-GFX10:       ; %bb.0:1616; SDAG-GFX10-NEXT:    s_clause 0x11617; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1618; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241619; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01620; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1621; SDAG-GFX10-NEXT:    s_lshr_b32 s3, s2, 161622; SDAG-GFX10-NEXT:    v_cmp_eq_f16_e64 s2, |s2|, |s3|1623; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21624; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1625; SDAG-GFX10-NEXT:    s_endpgm1626;1627; GISEL-GFX11-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:1628; GISEL-GFX11:       ; %bb.0:1629; GISEL-GFX11-NEXT:    s_clause 0x11630; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1631; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241632; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01633; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1634; GISEL-GFX11-NEXT:    s_lshr_b32 s3, s2, 161635; GISEL-GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)1636; GISEL-GFX11-NEXT:    v_cmp_eq_f16_e64 s2, |s2|, |s3|1637; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21638; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1639; GISEL-GFX11-NEXT:    s_endpgm1640;1641; GISEL-GFX10-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:1642; GISEL-GFX10:       ; %bb.0:1643; GISEL-GFX10-NEXT:    s_clause 0x11644; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1645; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241646; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01647; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1648; GISEL-GFX10-NEXT:    s_lshr_b32 s3, s2, 161649; GISEL-GFX10-NEXT:    v_cmp_eq_f16_e64 s2, |s2|, |s3|1650; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21651; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1652; GISEL-GFX10-NEXT:    s_endpgm1653  %temp = call half @llvm.fabs.f16(half %a)1654  %src_input = call half @llvm.fabs.f16(half %src)1655  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src_input, half %temp, i32 1)1656  store i32 %result, ptr addrspace(1) %out1657  ret void1658}1659 1660define amdgpu_kernel void @v_fcmp_f16(ptr addrspace(1) %out, half %src) {1661; SDAG-GFX11-LABEL: v_fcmp_f16:1662; SDAG-GFX11:       ; %bb.0:1663; SDAG-GFX11-NEXT:    s_endpgm1664;1665; SDAG-GFX10-LABEL: v_fcmp_f16:1666; SDAG-GFX10:       ; %bb.0:1667; SDAG-GFX10-NEXT:    s_endpgm1668;1669; GISEL-GFX11-LABEL: v_fcmp_f16:1670; GISEL-GFX11:       ; %bb.0:1671; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241672; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, 01673; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1674; GISEL-GFX11-NEXT:    global_store_b32 v0, v0, s[0:1]1675; GISEL-GFX11-NEXT:    s_endpgm1676;1677; GISEL-GFX10-LABEL: v_fcmp_f16:1678; GISEL-GFX10:       ; %bb.0:1679; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241680; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, 01681; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1682; GISEL-GFX10-NEXT:    global_store_dword v0, v0, s[0:1]1683; GISEL-GFX10-NEXT:    s_endpgm1684  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 -1)1685  store i32 %result, ptr addrspace(1) %out1686  ret void1687}1688 1689 1690define amdgpu_kernel void @v_fcmp_f16_oeq(ptr addrspace(1) %out, half %src) {1691; SDAG-GFX11-LABEL: v_fcmp_f16_oeq:1692; SDAG-GFX11:       ; %bb.0:1693; SDAG-GFX11-NEXT:    s_clause 0x11694; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1695; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241696; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1697; SDAG-GFX11-NEXT:    v_cmp_eq_f16_e64 s2, 0x5640, s21698; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1699; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21700; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1701; SDAG-GFX11-NEXT:    s_endpgm1702;1703; SDAG-GFX10-LABEL: v_fcmp_f16_oeq:1704; SDAG-GFX10:       ; %bb.0:1705; SDAG-GFX10-NEXT:    s_clause 0x11706; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1707; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241708; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01709; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1710; SDAG-GFX10-NEXT:    v_cmp_eq_f16_e64 s2, 0x5640, s21711; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21712; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1713; SDAG-GFX10-NEXT:    s_endpgm1714;1715; GISEL-GFX11-LABEL: v_fcmp_f16_oeq:1716; GISEL-GFX11:       ; %bb.0:1717; GISEL-GFX11-NEXT:    s_clause 0x11718; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1719; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241720; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01721; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1722; GISEL-GFX11-NEXT:    v_cmp_eq_f16_e64 s2, 0x5640, s21723; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1724; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21725; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1726; GISEL-GFX11-NEXT:    s_endpgm1727;1728; GISEL-GFX10-LABEL: v_fcmp_f16_oeq:1729; GISEL-GFX10:       ; %bb.0:1730; GISEL-GFX10-NEXT:    s_clause 0x11731; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1732; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241733; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01734; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1735; GISEL-GFX10-NEXT:    v_cmp_eq_f16_e64 s2, 0x5640, s21736; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21737; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1738; GISEL-GFX10-NEXT:    s_endpgm1739  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 1)1740  store i32 %result, ptr addrspace(1) %out1741  ret void1742}1743 1744 1745define amdgpu_kernel void @v_fcmp_f16_one(ptr addrspace(1) %out, half %src) {1746; SDAG-GFX11-LABEL: v_fcmp_f16_one:1747; SDAG-GFX11:       ; %bb.0:1748; SDAG-GFX11-NEXT:    s_clause 0x11749; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1750; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241751; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1752; SDAG-GFX11-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s21753; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1754; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21755; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1756; SDAG-GFX11-NEXT:    s_endpgm1757;1758; SDAG-GFX10-LABEL: v_fcmp_f16_one:1759; SDAG-GFX10:       ; %bb.0:1760; SDAG-GFX10-NEXT:    s_clause 0x11761; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1762; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241763; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01764; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1765; SDAG-GFX10-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s21766; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21767; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1768; SDAG-GFX10-NEXT:    s_endpgm1769;1770; GISEL-GFX11-LABEL: v_fcmp_f16_one:1771; GISEL-GFX11:       ; %bb.0:1772; GISEL-GFX11-NEXT:    s_clause 0x11773; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1774; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241775; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01776; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1777; GISEL-GFX11-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s21778; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1779; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21780; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1781; GISEL-GFX11-NEXT:    s_endpgm1782;1783; GISEL-GFX10-LABEL: v_fcmp_f16_one:1784; GISEL-GFX10:       ; %bb.0:1785; GISEL-GFX10-NEXT:    s_clause 0x11786; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1787; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241788; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01789; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1790; GISEL-GFX10-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s21791; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21792; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1793; GISEL-GFX10-NEXT:    s_endpgm1794  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 6)1795  store i32 %result, ptr addrspace(1) %out1796  ret void1797}1798 1799 1800define amdgpu_kernel void @v_fcmp_f16_ogt(ptr addrspace(1) %out, half %src) {1801; SDAG-GFX11-LABEL: v_fcmp_f16_ogt:1802; SDAG-GFX11:       ; %bb.0:1803; SDAG-GFX11-NEXT:    s_clause 0x11804; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1805; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241806; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1807; SDAG-GFX11-NEXT:    v_cmp_lt_f16_e64 s2, 0x5640, s21808; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1809; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21810; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1811; SDAG-GFX11-NEXT:    s_endpgm1812;1813; SDAG-GFX10-LABEL: v_fcmp_f16_ogt:1814; SDAG-GFX10:       ; %bb.0:1815; SDAG-GFX10-NEXT:    s_clause 0x11816; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1817; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241818; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01819; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1820; SDAG-GFX10-NEXT:    v_cmp_lt_f16_e64 s2, 0x5640, s21821; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21822; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1823; SDAG-GFX10-NEXT:    s_endpgm1824;1825; GISEL-GFX11-LABEL: v_fcmp_f16_ogt:1826; GISEL-GFX11:       ; %bb.0:1827; GISEL-GFX11-NEXT:    s_clause 0x11828; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1829; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241830; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01831; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1832; GISEL-GFX11-NEXT:    v_cmp_lt_f16_e64 s2, 0x5640, s21833; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1834; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21835; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1836; GISEL-GFX11-NEXT:    s_endpgm1837;1838; GISEL-GFX10-LABEL: v_fcmp_f16_ogt:1839; GISEL-GFX10:       ; %bb.0:1840; GISEL-GFX10-NEXT:    s_clause 0x11841; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1842; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241843; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01844; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1845; GISEL-GFX10-NEXT:    v_cmp_lt_f16_e64 s2, 0x5640, s21846; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21847; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1848; GISEL-GFX10-NEXT:    s_endpgm1849  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 2)1850  store i32 %result, ptr addrspace(1) %out1851  ret void1852}1853 1854 1855define amdgpu_kernel void @v_fcmp_f16_oge(ptr addrspace(1) %out, half %src) {1856; SDAG-GFX11-LABEL: v_fcmp_f16_oge:1857; SDAG-GFX11:       ; %bb.0:1858; SDAG-GFX11-NEXT:    s_clause 0x11859; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1860; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241861; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1862; SDAG-GFX11-NEXT:    v_cmp_le_f16_e64 s2, 0x5640, s21863; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1864; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21865; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1866; SDAG-GFX11-NEXT:    s_endpgm1867;1868; SDAG-GFX10-LABEL: v_fcmp_f16_oge:1869; SDAG-GFX10:       ; %bb.0:1870; SDAG-GFX10-NEXT:    s_clause 0x11871; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1872; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241873; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01874; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1875; SDAG-GFX10-NEXT:    v_cmp_le_f16_e64 s2, 0x5640, s21876; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21877; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1878; SDAG-GFX10-NEXT:    s_endpgm1879;1880; GISEL-GFX11-LABEL: v_fcmp_f16_oge:1881; GISEL-GFX11:       ; %bb.0:1882; GISEL-GFX11-NEXT:    s_clause 0x11883; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1884; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241885; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01886; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1887; GISEL-GFX11-NEXT:    v_cmp_le_f16_e64 s2, 0x5640, s21888; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1889; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21890; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1891; GISEL-GFX11-NEXT:    s_endpgm1892;1893; GISEL-GFX10-LABEL: v_fcmp_f16_oge:1894; GISEL-GFX10:       ; %bb.0:1895; GISEL-GFX10-NEXT:    s_clause 0x11896; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1897; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241898; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01899; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1900; GISEL-GFX10-NEXT:    v_cmp_le_f16_e64 s2, 0x5640, s21901; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21902; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1903; GISEL-GFX10-NEXT:    s_endpgm1904  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 3)1905  store i32 %result, ptr addrspace(1) %out1906  ret void1907}1908 1909 1910define amdgpu_kernel void @v_fcmp_f16_olt(ptr addrspace(1) %out, half %src) {1911; SDAG-GFX11-LABEL: v_fcmp_f16_olt:1912; SDAG-GFX11:       ; %bb.0:1913; SDAG-GFX11-NEXT:    s_clause 0x11914; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1915; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241916; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1917; SDAG-GFX11-NEXT:    v_cmp_gt_f16_e64 s2, 0x5640, s21918; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1919; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21920; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1921; SDAG-GFX11-NEXT:    s_endpgm1922;1923; SDAG-GFX10-LABEL: v_fcmp_f16_olt:1924; SDAG-GFX10:       ; %bb.0:1925; SDAG-GFX10-NEXT:    s_clause 0x11926; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1927; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241928; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01929; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1930; SDAG-GFX10-NEXT:    v_cmp_gt_f16_e64 s2, 0x5640, s21931; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21932; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1933; SDAG-GFX10-NEXT:    s_endpgm1934;1935; GISEL-GFX11-LABEL: v_fcmp_f16_olt:1936; GISEL-GFX11:       ; %bb.0:1937; GISEL-GFX11-NEXT:    s_clause 0x11938; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1939; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241940; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01941; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1942; GISEL-GFX11-NEXT:    v_cmp_gt_f16_e64 s2, 0x5640, s21943; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1944; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s21945; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]1946; GISEL-GFX11-NEXT:    s_endpgm1947;1948; GISEL-GFX10-LABEL: v_fcmp_f16_olt:1949; GISEL-GFX10:       ; %bb.0:1950; GISEL-GFX10-NEXT:    s_clause 0x11951; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1952; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241953; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 01954; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1955; GISEL-GFX10-NEXT:    v_cmp_gt_f16_e64 s2, 0x5640, s21956; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s21957; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]1958; GISEL-GFX10-NEXT:    s_endpgm1959  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 4)1960  store i32 %result, ptr addrspace(1) %out1961  ret void1962}1963 1964 1965define amdgpu_kernel void @v_fcmp_f16_ole(ptr addrspace(1) %out, half %src) {1966; SDAG-GFX11-LABEL: v_fcmp_f16_ole:1967; SDAG-GFX11:       ; %bb.0:1968; SDAG-GFX11-NEXT:    s_clause 0x11969; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1970; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241971; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1972; SDAG-GFX11-NEXT:    v_cmp_ge_f16_e64 s2, 0x5640, s21973; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1974; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21975; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]1976; SDAG-GFX11-NEXT:    s_endpgm1977;1978; SDAG-GFX10-LABEL: v_fcmp_f16_ole:1979; SDAG-GFX10:       ; %bb.0:1980; SDAG-GFX10-NEXT:    s_clause 0x11981; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c1982; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241983; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 01984; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)1985; SDAG-GFX10-NEXT:    v_cmp_ge_f16_e64 s2, 0x5640, s21986; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s21987; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]1988; SDAG-GFX10-NEXT:    s_endpgm1989;1990; GISEL-GFX11-LABEL: v_fcmp_f16_ole:1991; GISEL-GFX11:       ; %bb.0:1992; GISEL-GFX11-NEXT:    s_clause 0x11993; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1994; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241995; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 01996; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1997; GISEL-GFX11-NEXT:    v_cmp_ge_f16_e64 s2, 0x5640, s21998; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1999; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22000; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2001; GISEL-GFX11-NEXT:    s_endpgm2002;2003; GISEL-GFX10-LABEL: v_fcmp_f16_ole:2004; GISEL-GFX10:       ; %bb.0:2005; GISEL-GFX10-NEXT:    s_clause 0x12006; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2007; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242008; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02009; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2010; GISEL-GFX10-NEXT:    v_cmp_ge_f16_e64 s2, 0x5640, s22011; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22012; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2013; GISEL-GFX10-NEXT:    s_endpgm2014  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 5)2015  store i32 %result, ptr addrspace(1) %out2016  ret void2017}2018 2019 2020define amdgpu_kernel void @v_fcmp_f16_ueq(ptr addrspace(1) %out, half %src) {2021; SDAG-GFX11-LABEL: v_fcmp_f16_ueq:2022; SDAG-GFX11:       ; %bb.0:2023; SDAG-GFX11-NEXT:    s_clause 0x12024; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2025; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242026; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2027; SDAG-GFX11-NEXT:    v_cmp_nlg_f16_e64 s2, 0x5640, s22028; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2029; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22030; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2031; SDAG-GFX11-NEXT:    s_endpgm2032;2033; SDAG-GFX10-LABEL: v_fcmp_f16_ueq:2034; SDAG-GFX10:       ; %bb.0:2035; SDAG-GFX10-NEXT:    s_clause 0x12036; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2037; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242038; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02039; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2040; SDAG-GFX10-NEXT:    v_cmp_nlg_f16_e64 s2, 0x5640, s22041; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22042; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2043; SDAG-GFX10-NEXT:    s_endpgm2044;2045; GISEL-GFX11-LABEL: v_fcmp_f16_ueq:2046; GISEL-GFX11:       ; %bb.0:2047; GISEL-GFX11-NEXT:    s_clause 0x12048; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2049; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242050; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02051; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2052; GISEL-GFX11-NEXT:    v_cmp_nlg_f16_e64 s2, 0x5640, s22053; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2054; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22055; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2056; GISEL-GFX11-NEXT:    s_endpgm2057;2058; GISEL-GFX10-LABEL: v_fcmp_f16_ueq:2059; GISEL-GFX10:       ; %bb.0:2060; GISEL-GFX10-NEXT:    s_clause 0x12061; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2062; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242063; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02064; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2065; GISEL-GFX10-NEXT:    v_cmp_nlg_f16_e64 s2, 0x5640, s22066; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22067; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2068; GISEL-GFX10-NEXT:    s_endpgm2069  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 9)2070  store i32 %result, ptr addrspace(1) %out2071  ret void2072}2073 2074 2075define amdgpu_kernel void @v_fcmp_f16_une(ptr addrspace(1) %out, half %src) {2076; SDAG-GFX11-LABEL: v_fcmp_f16_une:2077; SDAG-GFX11:       ; %bb.0:2078; SDAG-GFX11-NEXT:    s_clause 0x12079; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2080; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242081; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2082; SDAG-GFX11-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s22083; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2084; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22085; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2086; SDAG-GFX11-NEXT:    s_endpgm2087;2088; SDAG-GFX10-LABEL: v_fcmp_f16_une:2089; SDAG-GFX10:       ; %bb.0:2090; SDAG-GFX10-NEXT:    s_clause 0x12091; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2092; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242093; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02094; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2095; SDAG-GFX10-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s22096; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22097; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2098; SDAG-GFX10-NEXT:    s_endpgm2099;2100; GISEL-GFX11-LABEL: v_fcmp_f16_une:2101; GISEL-GFX11:       ; %bb.0:2102; GISEL-GFX11-NEXT:    s_clause 0x12103; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2104; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242105; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02106; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2107; GISEL-GFX11-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s22108; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2109; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22110; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2111; GISEL-GFX11-NEXT:    s_endpgm2112;2113; GISEL-GFX10-LABEL: v_fcmp_f16_une:2114; GISEL-GFX10:       ; %bb.0:2115; GISEL-GFX10-NEXT:    s_clause 0x12116; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2117; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242118; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02119; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2120; GISEL-GFX10-NEXT:    v_cmp_neq_f16_e64 s2, 0x5640, s22121; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22122; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2123; GISEL-GFX10-NEXT:    s_endpgm2124  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 14)2125  store i32 %result, ptr addrspace(1) %out2126  ret void2127}2128 2129 2130define amdgpu_kernel void @v_fcmp_f16_ugt(ptr addrspace(1) %out, half %src) {2131; SDAG-GFX11-LABEL: v_fcmp_f16_ugt:2132; SDAG-GFX11:       ; %bb.0:2133; SDAG-GFX11-NEXT:    s_clause 0x12134; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2135; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242136; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2137; SDAG-GFX11-NEXT:    v_cmp_nge_f16_e64 s2, 0x5640, s22138; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2139; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22140; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2141; SDAG-GFX11-NEXT:    s_endpgm2142;2143; SDAG-GFX10-LABEL: v_fcmp_f16_ugt:2144; SDAG-GFX10:       ; %bb.0:2145; SDAG-GFX10-NEXT:    s_clause 0x12146; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2147; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242148; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02149; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2150; SDAG-GFX10-NEXT:    v_cmp_nge_f16_e64 s2, 0x5640, s22151; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22152; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2153; SDAG-GFX10-NEXT:    s_endpgm2154;2155; GISEL-GFX11-LABEL: v_fcmp_f16_ugt:2156; GISEL-GFX11:       ; %bb.0:2157; GISEL-GFX11-NEXT:    s_clause 0x12158; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2159; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242160; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02161; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2162; GISEL-GFX11-NEXT:    v_cmp_nge_f16_e64 s2, 0x5640, s22163; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2164; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22165; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2166; GISEL-GFX11-NEXT:    s_endpgm2167;2168; GISEL-GFX10-LABEL: v_fcmp_f16_ugt:2169; GISEL-GFX10:       ; %bb.0:2170; GISEL-GFX10-NEXT:    s_clause 0x12171; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2172; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242173; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02174; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2175; GISEL-GFX10-NEXT:    v_cmp_nge_f16_e64 s2, 0x5640, s22176; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22177; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2178; GISEL-GFX10-NEXT:    s_endpgm2179  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 10)2180  store i32 %result, ptr addrspace(1) %out2181  ret void2182}2183 2184 2185define amdgpu_kernel void @v_fcmp_f16_uge(ptr addrspace(1) %out, half %src) {2186; SDAG-GFX11-LABEL: v_fcmp_f16_uge:2187; SDAG-GFX11:       ; %bb.0:2188; SDAG-GFX11-NEXT:    s_clause 0x12189; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2190; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242191; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2192; SDAG-GFX11-NEXT:    v_cmp_ngt_f16_e64 s2, 0x5640, s22193; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2194; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22195; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2196; SDAG-GFX11-NEXT:    s_endpgm2197;2198; SDAG-GFX10-LABEL: v_fcmp_f16_uge:2199; SDAG-GFX10:       ; %bb.0:2200; SDAG-GFX10-NEXT:    s_clause 0x12201; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2202; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242203; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02204; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2205; SDAG-GFX10-NEXT:    v_cmp_ngt_f16_e64 s2, 0x5640, s22206; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22207; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2208; SDAG-GFX10-NEXT:    s_endpgm2209;2210; GISEL-GFX11-LABEL: v_fcmp_f16_uge:2211; GISEL-GFX11:       ; %bb.0:2212; GISEL-GFX11-NEXT:    s_clause 0x12213; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2214; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242215; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02216; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2217; GISEL-GFX11-NEXT:    v_cmp_ngt_f16_e64 s2, 0x5640, s22218; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2219; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22220; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2221; GISEL-GFX11-NEXT:    s_endpgm2222;2223; GISEL-GFX10-LABEL: v_fcmp_f16_uge:2224; GISEL-GFX10:       ; %bb.0:2225; GISEL-GFX10-NEXT:    s_clause 0x12226; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2227; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242228; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02229; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2230; GISEL-GFX10-NEXT:    v_cmp_ngt_f16_e64 s2, 0x5640, s22231; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22232; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2233; GISEL-GFX10-NEXT:    s_endpgm2234  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 11)2235  store i32 %result, ptr addrspace(1) %out2236  ret void2237}2238 2239 2240define amdgpu_kernel void @v_fcmp_f16_ult(ptr addrspace(1) %out, half %src) {2241; SDAG-GFX11-LABEL: v_fcmp_f16_ult:2242; SDAG-GFX11:       ; %bb.0:2243; SDAG-GFX11-NEXT:    s_clause 0x12244; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2245; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242246; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2247; SDAG-GFX11-NEXT:    v_cmp_nle_f16_e64 s2, 0x5640, s22248; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2249; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22250; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2251; SDAG-GFX11-NEXT:    s_endpgm2252;2253; SDAG-GFX10-LABEL: v_fcmp_f16_ult:2254; SDAG-GFX10:       ; %bb.0:2255; SDAG-GFX10-NEXT:    s_clause 0x12256; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2257; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242258; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02259; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2260; SDAG-GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x5640, s22261; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22262; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2263; SDAG-GFX10-NEXT:    s_endpgm2264;2265; GISEL-GFX11-LABEL: v_fcmp_f16_ult:2266; GISEL-GFX11:       ; %bb.0:2267; GISEL-GFX11-NEXT:    s_clause 0x12268; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2269; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242270; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02271; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2272; GISEL-GFX11-NEXT:    v_cmp_nle_f16_e64 s2, 0x5640, s22273; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2274; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22275; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2276; GISEL-GFX11-NEXT:    s_endpgm2277;2278; GISEL-GFX10-LABEL: v_fcmp_f16_ult:2279; GISEL-GFX10:       ; %bb.0:2280; GISEL-GFX10-NEXT:    s_clause 0x12281; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2282; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242283; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02284; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2285; GISEL-GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x5640, s22286; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22287; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2288; GISEL-GFX10-NEXT:    s_endpgm2289  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 12)2290  store i32 %result, ptr addrspace(1) %out2291  ret void2292}2293 2294define amdgpu_kernel void @v_fcmp_f16_o(ptr addrspace(1) %out, half %src) {2295; SDAG-GFX11-LABEL: v_fcmp_f16_o:2296; SDAG-GFX11:       ; %bb.0:2297; SDAG-GFX11-NEXT:    s_clause 0x12298; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2299; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242300; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2301; SDAG-GFX11-NEXT:    v_cmp_o_f16_e64 s2, 0x5640, s22302; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2303; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22304; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2305; SDAG-GFX11-NEXT:    s_endpgm2306;2307; SDAG-GFX10-LABEL: v_fcmp_f16_o:2308; SDAG-GFX10:       ; %bb.0:2309; SDAG-GFX10-NEXT:    s_clause 0x12310; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2311; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242312; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02313; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2314; SDAG-GFX10-NEXT:    v_cmp_o_f16_e64 s2, 0x5640, s22315; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22316; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2317; SDAG-GFX10-NEXT:    s_endpgm2318;2319; GISEL-GFX11-LABEL: v_fcmp_f16_o:2320; GISEL-GFX11:       ; %bb.0:2321; GISEL-GFX11-NEXT:    s_clause 0x12322; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2323; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242324; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02325; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2326; GISEL-GFX11-NEXT:    v_cmp_o_f16_e64 s2, 0x5640, s22327; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2328; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22329; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2330; GISEL-GFX11-NEXT:    s_endpgm2331;2332; GISEL-GFX10-LABEL: v_fcmp_f16_o:2333; GISEL-GFX10:       ; %bb.0:2334; GISEL-GFX10-NEXT:    s_clause 0x12335; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2336; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242337; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02338; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2339; GISEL-GFX10-NEXT:    v_cmp_o_f16_e64 s2, 0x5640, s22340; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22341; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2342; GISEL-GFX10-NEXT:    s_endpgm2343  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 7)2344  store i32 %result, ptr addrspace(1) %out2345  ret void2346}2347 2348define amdgpu_kernel void @v_fcmp_f16_uo(ptr addrspace(1) %out, half %src) {2349; SDAG-GFX11-LABEL: v_fcmp_f16_uo:2350; SDAG-GFX11:       ; %bb.0:2351; SDAG-GFX11-NEXT:    s_clause 0x12352; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2353; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242354; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2355; SDAG-GFX11-NEXT:    v_cmp_u_f16_e64 s2, 0x5640, s22356; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2357; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22358; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2359; SDAG-GFX11-NEXT:    s_endpgm2360;2361; SDAG-GFX10-LABEL: v_fcmp_f16_uo:2362; SDAG-GFX10:       ; %bb.0:2363; SDAG-GFX10-NEXT:    s_clause 0x12364; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2365; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242366; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02367; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2368; SDAG-GFX10-NEXT:    v_cmp_u_f16_e64 s2, 0x5640, s22369; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22370; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2371; SDAG-GFX10-NEXT:    s_endpgm2372;2373; GISEL-GFX11-LABEL: v_fcmp_f16_uo:2374; GISEL-GFX11:       ; %bb.0:2375; GISEL-GFX11-NEXT:    s_clause 0x12376; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2377; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242378; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02379; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2380; GISEL-GFX11-NEXT:    v_cmp_u_f16_e64 s2, 0x5640, s22381; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2382; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22383; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2384; GISEL-GFX11-NEXT:    s_endpgm2385;2386; GISEL-GFX10-LABEL: v_fcmp_f16_uo:2387; GISEL-GFX10:       ; %bb.0:2388; GISEL-GFX10-NEXT:    s_clause 0x12389; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2390; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242391; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02392; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2393; GISEL-GFX10-NEXT:    v_cmp_u_f16_e64 s2, 0x5640, s22394; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22395; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2396; GISEL-GFX10-NEXT:    s_endpgm2397  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 8)2398  store i32 %result, ptr addrspace(1) %out2399  ret void2400}2401 2402define amdgpu_kernel void @v_fcmp_f16_ule(ptr addrspace(1) %out, half %src) {2403; SDAG-GFX11-LABEL: v_fcmp_f16_ule:2404; SDAG-GFX11:       ; %bb.0:2405; SDAG-GFX11-NEXT:    s_clause 0x12406; SDAG-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2407; SDAG-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242408; SDAG-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2409; SDAG-GFX11-NEXT:    v_cmp_nlt_f16_e64 s2, 0x5640, s22410; SDAG-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2411; SDAG-GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s22412; SDAG-GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]2413; SDAG-GFX11-NEXT:    s_endpgm2414;2415; SDAG-GFX10-LABEL: v_fcmp_f16_ule:2416; SDAG-GFX10:       ; %bb.0:2417; SDAG-GFX10-NEXT:    s_clause 0x12418; SDAG-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2419; SDAG-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242420; SDAG-GFX10-NEXT:    v_mov_b32_e32 v0, 02421; SDAG-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2422; SDAG-GFX10-NEXT:    v_cmp_nlt_f16_e64 s2, 0x5640, s22423; SDAG-GFX10-NEXT:    v_mov_b32_e32 v1, s22424; SDAG-GFX10-NEXT:    global_store_dword v0, v1, s[0:1]2425; SDAG-GFX10-NEXT:    s_endpgm2426;2427; GISEL-GFX11-LABEL: v_fcmp_f16_ule:2428; GISEL-GFX11:       ; %bb.0:2429; GISEL-GFX11-NEXT:    s_clause 0x12430; GISEL-GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c2431; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x242432; GISEL-GFX11-NEXT:    v_mov_b32_e32 v1, 02433; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)2434; GISEL-GFX11-NEXT:    v_cmp_nlt_f16_e64 s2, 0x5640, s22435; GISEL-GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2436; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, s22437; GISEL-GFX11-NEXT:    global_store_b32 v1, v0, s[0:1]2438; GISEL-GFX11-NEXT:    s_endpgm2439;2440; GISEL-GFX10-LABEL: v_fcmp_f16_ule:2441; GISEL-GFX10:       ; %bb.0:2442; GISEL-GFX10-NEXT:    s_clause 0x12443; GISEL-GFX10-NEXT:    s_load_dword s2, s[4:5], 0x2c2444; GISEL-GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x242445; GISEL-GFX10-NEXT:    v_mov_b32_e32 v1, 02446; GISEL-GFX10-NEXT:    s_waitcnt lgkmcnt(0)2447; GISEL-GFX10-NEXT:    v_cmp_nlt_f16_e64 s2, 0x5640, s22448; GISEL-GFX10-NEXT:    v_mov_b32_e32 v0, s22449; GISEL-GFX10-NEXT:    global_store_dword v1, v0, s[0:1]2450; GISEL-GFX10-NEXT:    s_endpgm2451  %result = call i32 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 13)2452  store i32 %result, ptr addrspace(1) %out2453  ret void2454}2455 2456attributes #0 = { nounwind readnone convergent }2457