brintos

brintos / llvm-project-archived public Read only

0
0
Text · 214.8 KiB · 17cc51d Raw
5177 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN:  llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn < %s | FileCheck -allow-deprecated-dag-overlap -enable-var-scope -check-prefixes=SI %s3; RUN:  llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=fiji -mattr=-flat-for-global < %s | FileCheck -allow-deprecated-dag-overlap -enable-var-scope -check-prefixes=VI %s4; RUN:  llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global,+real-true16 < %s | FileCheck -allow-deprecated-dag-overlap -enable-var-scope -check-prefixes=GFX11-TRUE16 %s5; RUN:  llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global,-real-true16 < %s | FileCheck -allow-deprecated-dag-overlap -enable-var-scope -check-prefixes=GFX11-FAKE16 %s6; RUN:  llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 -mattr=-flat-for-global < %s | FileCheck -allow-deprecated-dag-overlap -enable-var-scope -check-prefixes=GFX12,GFX12-TRUE16 %s7; RUN:  llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 -mattr=-flat-for-global < %s | FileCheck -allow-deprecated-dag-overlap -enable-var-scope -check-prefixes=GFX12,GFX12-FAKE16 %s8 9define amdgpu_kernel void @fcmp_f16_lt(10; SI-LABEL: fcmp_f16_lt:11; SI:       ; %bb.0: ; %entry12; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x913; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd14; SI-NEXT:    s_mov_b32 s11, 0xf00015; SI-NEXT:    s_mov_b32 s10, -116; SI-NEXT:    s_mov_b32 s14, s1017; SI-NEXT:    s_mov_b32 s15, s1118; SI-NEXT:    s_mov_b32 s6, s1019; SI-NEXT:    s_mov_b32 s7, s1120; SI-NEXT:    s_waitcnt lgkmcnt(0)21; SI-NEXT:    s_mov_b32 s12, s222; SI-NEXT:    s_mov_b32 s13, s323; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc24; SI-NEXT:    s_waitcnt vmcnt(0)25; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc26; SI-NEXT:    s_waitcnt vmcnt(0)27; SI-NEXT:    s_mov_b32 s8, s028; SI-NEXT:    s_mov_b32 s9, s129; SI-NEXT:    v_cvt_f32_f16_e32 v0, v030; SI-NEXT:    v_cvt_f32_f16_e32 v1, v131; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v0, v132; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc33; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 034; SI-NEXT:    s_endpgm35;36; VI-LABEL: fcmp_f16_lt:37; VI:       ; %bb.0: ; %entry38; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2439; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x3440; VI-NEXT:    s_mov_b32 s7, 0xf00041; VI-NEXT:    s_mov_b32 s6, -142; VI-NEXT:    s_mov_b32 s14, s643; VI-NEXT:    s_waitcnt lgkmcnt(0)44; VI-NEXT:    s_mov_b32 s12, s245; VI-NEXT:    s_mov_b32 s13, s346; VI-NEXT:    s_mov_b32 s15, s747; VI-NEXT:    s_mov_b32 s10, s648; VI-NEXT:    s_mov_b32 s11, s749; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc50; VI-NEXT:    s_waitcnt vmcnt(0)51; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc52; VI-NEXT:    s_waitcnt vmcnt(0)53; VI-NEXT:    s_mov_b32 s4, s054; VI-NEXT:    s_mov_b32 s5, s155; VI-NEXT:    v_cmp_lt_f16_e32 vcc, v0, v156; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc57; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 058; VI-NEXT:    s_endpgm59;60; GFX11-TRUE16-LABEL: fcmp_f16_lt:61; GFX11-TRUE16:       ; %bb.0: ; %entry62; GFX11-TRUE16-NEXT:    s_clause 0x163; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2464; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3465; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -166; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x3101600067; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s1068; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s1169; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s1070; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s1171; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)72; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s273; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s374; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc75; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)76; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc77; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)78; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s079; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s180; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0.l, v1.l81; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo82; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 083; GFX11-TRUE16-NEXT:    s_endpgm84;85; GFX11-FAKE16-LABEL: fcmp_f16_lt:86; GFX11-FAKE16:       ; %bb.0: ; %entry87; GFX11-FAKE16-NEXT:    s_clause 0x188; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2489; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3490; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -191; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x3101600092; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s1093; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s1194; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s1095; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s1196; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)97; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s298; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s399; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc100; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)101; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc102; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)103; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0104; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1105; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0, v1106; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo107; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0108; GFX11-FAKE16-NEXT:    s_endpgm109;110; GFX12-TRUE16-LABEL: fcmp_f16_lt:111; GFX12-TRUE16:       ; %bb.0: ; %entry112; GFX12-TRUE16-NEXT:    s_clause 0x1113; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24114; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34115; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -1116; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000117; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s10118; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s11119; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s10120; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s11121; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0122; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s2123; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s3124; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS125; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0126; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS127; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0128; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s0129; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s1130; GFX12-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0.l, v1.l131; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo132; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null133; GFX12-TRUE16-NEXT:    s_endpgm134;135; GFX12-FAKE16-LABEL: fcmp_f16_lt:136; GFX12-FAKE16:       ; %bb.0: ; %entry137; GFX12-FAKE16-NEXT:    s_clause 0x1138; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24139; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34140; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -1141; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000142; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s10143; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s11144; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s10145; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s11146; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0147; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s2148; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s3149; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS150; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0151; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS152; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0153; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s0154; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s1155; GFX12-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0, v1156; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo157; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null158; GFX12-FAKE16-NEXT:    s_endpgm159    ptr addrspace(1) %r,160    ptr addrspace(1) %a,161    ptr addrspace(1) %b) {162entry:163  %a.val = load volatile half, ptr addrspace(1) %a164  %b.val = load volatile half, ptr addrspace(1) %b165  %r.val = fcmp olt half %a.val, %b.val166  %r.val.sext = sext i1 %r.val to i32167  store i32 %r.val.sext, ptr addrspace(1) %r168  ret void169}170 171define amdgpu_kernel void @fcmp_f16_lt_abs(172; SI-LABEL: fcmp_f16_lt_abs:173; SI:       ; %bb.0: ; %entry174; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9175; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd176; SI-NEXT:    s_mov_b32 s11, 0xf000177; SI-NEXT:    s_mov_b32 s10, -1178; SI-NEXT:    s_mov_b32 s14, s10179; SI-NEXT:    s_mov_b32 s15, s11180; SI-NEXT:    s_mov_b32 s6, s10181; SI-NEXT:    s_mov_b32 s7, s11182; SI-NEXT:    s_waitcnt lgkmcnt(0)183; SI-NEXT:    s_mov_b32 s12, s2184; SI-NEXT:    s_mov_b32 s13, s3185; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc186; SI-NEXT:    s_waitcnt vmcnt(0)187; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc188; SI-NEXT:    s_waitcnt vmcnt(0)189; SI-NEXT:    s_mov_b32 s8, s0190; SI-NEXT:    s_mov_b32 s9, s1191; SI-NEXT:    v_cvt_f32_f16_e64 v0, |v0|192; SI-NEXT:    v_cvt_f32_f16_e64 v1, |v1|193; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v0, v1194; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc195; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0196; SI-NEXT:    s_endpgm197;198; VI-LABEL: fcmp_f16_lt_abs:199; VI:       ; %bb.0: ; %entry200; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24201; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x34202; VI-NEXT:    s_mov_b32 s7, 0xf000203; VI-NEXT:    s_mov_b32 s6, -1204; VI-NEXT:    s_mov_b32 s14, s6205; VI-NEXT:    s_waitcnt lgkmcnt(0)206; VI-NEXT:    s_mov_b32 s12, s2207; VI-NEXT:    s_mov_b32 s13, s3208; VI-NEXT:    s_mov_b32 s15, s7209; VI-NEXT:    s_mov_b32 s10, s6210; VI-NEXT:    s_mov_b32 s11, s7211; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc212; VI-NEXT:    s_waitcnt vmcnt(0)213; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc214; VI-NEXT:    s_waitcnt vmcnt(0)215; VI-NEXT:    s_mov_b32 s4, s0216; VI-NEXT:    s_mov_b32 s5, s1217; VI-NEXT:    v_cmp_lt_f16_e64 s[0:1], |v0|, |v1|218; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s[0:1]219; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0220; VI-NEXT:    s_endpgm221;222; GFX11-TRUE16-LABEL: fcmp_f16_lt_abs:223; GFX11-TRUE16:       ; %bb.0: ; %entry224; GFX11-TRUE16-NEXT:    s_clause 0x1225; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24226; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34227; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1228; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000229; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10230; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11231; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10232; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11233; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)234; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2235; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3236; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc237; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)238; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc239; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)240; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0241; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1242; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e64 s2, |v0.l|, |v1.l|243; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)244; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s2245; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0246; GFX11-TRUE16-NEXT:    s_endpgm247;248; GFX11-FAKE16-LABEL: fcmp_f16_lt_abs:249; GFX11-FAKE16:       ; %bb.0: ; %entry250; GFX11-FAKE16-NEXT:    s_clause 0x1251; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24252; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34253; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1254; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000255; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10256; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11257; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10258; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11259; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)260; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2261; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3262; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc263; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)264; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc265; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)266; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0267; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1268; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e64 s2, |v0|, |v1|269; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)270; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, s2271; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0272; GFX11-FAKE16-NEXT:    s_endpgm273;274; GFX12-TRUE16-LABEL: fcmp_f16_lt_abs:275; GFX12-TRUE16:       ; %bb.0: ; %entry276; GFX12-TRUE16-NEXT:    s_clause 0x1277; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24278; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34279; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -1280; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000281; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s10282; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s11283; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s10284; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s11285; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0286; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s2287; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s3288; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS289; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0290; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS291; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0292; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s0293; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s1294; GFX12-TRUE16-NEXT:    v_and_b32_e32 v0, 0x7fff, v0295; GFX12-TRUE16-NEXT:    v_and_b32_e32 v1, 0x7fff, v1296; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)297; GFX12-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0.l, v1.l298; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo299; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null300; GFX12-TRUE16-NEXT:    s_endpgm301;302; GFX12-FAKE16-LABEL: fcmp_f16_lt_abs:303; GFX12-FAKE16:       ; %bb.0: ; %entry304; GFX12-FAKE16-NEXT:    s_clause 0x1305; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24306; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34307; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -1308; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000309; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s10310; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s11311; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s10312; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s11313; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0314; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s2315; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s3316; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS317; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0318; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS319; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0320; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s0321; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s1322; GFX12-FAKE16-NEXT:    v_and_b32_e32 v0, 0x7fff, v0323; GFX12-FAKE16-NEXT:    v_and_b32_e32 v1, 0x7fff, v1324; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)325; GFX12-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v0, v1326; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo327; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null328; GFX12-FAKE16-NEXT:    s_endpgm329    ptr addrspace(1) %r,330    ptr addrspace(1) %a,331    ptr addrspace(1) %b) {332entry:333  %a.val = load volatile half, ptr addrspace(1) %a334  %b.val = load volatile half, ptr addrspace(1) %b335  %a.abs = call half @llvm.fabs.f16(half %a.val)336  %b.abs = call half @llvm.fabs.f16(half %b.val)337  %r.val = fcmp olt half %a.abs, %b.abs338  %r.val.sext = sext i1 %r.val to i32339  store i32 %r.val.sext, ptr addrspace(1) %r340  ret void341}342 343define amdgpu_kernel void @fcmp_f16_eq(344; SI-LABEL: fcmp_f16_eq:345; SI:       ; %bb.0: ; %entry346; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9347; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd348; SI-NEXT:    s_mov_b32 s11, 0xf000349; SI-NEXT:    s_mov_b32 s10, -1350; SI-NEXT:    s_mov_b32 s14, s10351; SI-NEXT:    s_mov_b32 s15, s11352; SI-NEXT:    s_mov_b32 s6, s10353; SI-NEXT:    s_mov_b32 s7, s11354; SI-NEXT:    s_waitcnt lgkmcnt(0)355; SI-NEXT:    s_mov_b32 s12, s2356; SI-NEXT:    s_mov_b32 s13, s3357; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc358; SI-NEXT:    s_waitcnt vmcnt(0)359; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc360; SI-NEXT:    s_waitcnt vmcnt(0)361; SI-NEXT:    s_mov_b32 s8, s0362; SI-NEXT:    s_mov_b32 s9, s1363; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0364; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1365; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v0, v1366; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc367; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0368; SI-NEXT:    s_endpgm369;370; VI-LABEL: fcmp_f16_eq:371; VI:       ; %bb.0: ; %entry372; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24373; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x34374; VI-NEXT:    s_mov_b32 s7, 0xf000375; VI-NEXT:    s_mov_b32 s6, -1376; VI-NEXT:    s_mov_b32 s14, s6377; VI-NEXT:    s_waitcnt lgkmcnt(0)378; VI-NEXT:    s_mov_b32 s12, s2379; VI-NEXT:    s_mov_b32 s13, s3380; VI-NEXT:    s_mov_b32 s15, s7381; VI-NEXT:    s_mov_b32 s10, s6382; VI-NEXT:    s_mov_b32 s11, s7383; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc384; VI-NEXT:    s_waitcnt vmcnt(0)385; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc386; VI-NEXT:    s_waitcnt vmcnt(0)387; VI-NEXT:    s_mov_b32 s4, s0388; VI-NEXT:    s_mov_b32 s5, s1389; VI-NEXT:    v_cmp_eq_f16_e32 vcc, v0, v1390; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc391; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0392; VI-NEXT:    s_endpgm393;394; GFX11-TRUE16-LABEL: fcmp_f16_eq:395; GFX11-TRUE16:       ; %bb.0: ; %entry396; GFX11-TRUE16-NEXT:    s_clause 0x1397; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24398; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34399; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1400; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000401; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10402; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11403; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10404; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11405; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)406; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2407; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3408; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc409; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)410; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc411; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)412; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0413; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1414; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v0.l, v1.l415; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo416; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0417; GFX11-TRUE16-NEXT:    s_endpgm418;419; GFX11-FAKE16-LABEL: fcmp_f16_eq:420; GFX11-FAKE16:       ; %bb.0: ; %entry421; GFX11-FAKE16-NEXT:    s_clause 0x1422; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24423; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34424; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1425; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000426; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10427; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11428; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10429; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11430; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)431; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2432; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3433; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc434; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)435; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc436; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)437; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0438; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1439; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v0, v1440; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo441; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0442; GFX11-FAKE16-NEXT:    s_endpgm443;444; GFX12-TRUE16-LABEL: fcmp_f16_eq:445; GFX12-TRUE16:       ; %bb.0: ; %entry446; GFX12-TRUE16-NEXT:    s_clause 0x1447; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24448; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34449; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -1450; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000451; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s10452; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s11453; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s10454; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s11455; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0456; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s2457; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s3458; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS459; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0460; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS461; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0462; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s0463; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s1464; GFX12-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v0.l, v1.l465; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo466; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null467; GFX12-TRUE16-NEXT:    s_endpgm468;469; GFX12-FAKE16-LABEL: fcmp_f16_eq:470; GFX12-FAKE16:       ; %bb.0: ; %entry471; GFX12-FAKE16-NEXT:    s_clause 0x1472; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24473; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34474; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -1475; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000476; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s10477; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s11478; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s10479; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s11480; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0481; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s2482; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s3483; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS484; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0485; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS486; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0487; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s0488; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s1489; GFX12-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v0, v1490; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo491; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null492; GFX12-FAKE16-NEXT:    s_endpgm493    ptr addrspace(1) %r,494    ptr addrspace(1) %a,495    ptr addrspace(1) %b) {496entry:497  %a.val = load volatile half, ptr addrspace(1) %a498  %b.val = load volatile half, ptr addrspace(1) %b499  %r.val = fcmp oeq half %a.val, %b.val500  %r.val.sext = sext i1 %r.val to i32501  store i32 %r.val.sext, ptr addrspace(1) %r502  ret void503}504 505define amdgpu_kernel void @fcmp_f16_le(506; SI-LABEL: fcmp_f16_le:507; SI:       ; %bb.0: ; %entry508; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9509; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd510; SI-NEXT:    s_mov_b32 s11, 0xf000511; SI-NEXT:    s_mov_b32 s10, -1512; SI-NEXT:    s_mov_b32 s14, s10513; SI-NEXT:    s_mov_b32 s15, s11514; SI-NEXT:    s_mov_b32 s6, s10515; SI-NEXT:    s_mov_b32 s7, s11516; SI-NEXT:    s_waitcnt lgkmcnt(0)517; SI-NEXT:    s_mov_b32 s12, s2518; SI-NEXT:    s_mov_b32 s13, s3519; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc520; SI-NEXT:    s_waitcnt vmcnt(0)521; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc522; SI-NEXT:    s_waitcnt vmcnt(0)523; SI-NEXT:    s_mov_b32 s8, s0524; SI-NEXT:    s_mov_b32 s9, s1525; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0526; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1527; SI-NEXT:    v_cmp_le_f32_e32 vcc, v0, v1528; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc529; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0530; SI-NEXT:    s_endpgm531;532; VI-LABEL: fcmp_f16_le:533; VI:       ; %bb.0: ; %entry534; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24535; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x34536; VI-NEXT:    s_mov_b32 s7, 0xf000537; VI-NEXT:    s_mov_b32 s6, -1538; VI-NEXT:    s_mov_b32 s14, s6539; VI-NEXT:    s_waitcnt lgkmcnt(0)540; VI-NEXT:    s_mov_b32 s12, s2541; VI-NEXT:    s_mov_b32 s13, s3542; VI-NEXT:    s_mov_b32 s15, s7543; VI-NEXT:    s_mov_b32 s10, s6544; VI-NEXT:    s_mov_b32 s11, s7545; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc546; VI-NEXT:    s_waitcnt vmcnt(0)547; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc548; VI-NEXT:    s_waitcnt vmcnt(0)549; VI-NEXT:    s_mov_b32 s4, s0550; VI-NEXT:    s_mov_b32 s5, s1551; VI-NEXT:    v_cmp_le_f16_e32 vcc, v0, v1552; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc553; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0554; VI-NEXT:    s_endpgm555;556; GFX11-TRUE16-LABEL: fcmp_f16_le:557; GFX11-TRUE16:       ; %bb.0: ; %entry558; GFX11-TRUE16-NEXT:    s_clause 0x1559; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24560; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34561; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1562; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000563; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10564; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11565; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10566; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11567; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)568; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2569; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3570; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc571; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)572; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc573; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)574; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0575; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1576; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0.l, v1.l577; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo578; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0579; GFX11-TRUE16-NEXT:    s_endpgm580;581; GFX11-FAKE16-LABEL: fcmp_f16_le:582; GFX11-FAKE16:       ; %bb.0: ; %entry583; GFX11-FAKE16-NEXT:    s_clause 0x1584; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24585; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34586; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1587; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000588; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10589; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11590; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10591; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11592; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)593; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2594; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3595; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc596; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)597; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc598; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)599; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0600; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1601; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0, v1602; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo603; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0604; GFX11-FAKE16-NEXT:    s_endpgm605;606; GFX12-TRUE16-LABEL: fcmp_f16_le:607; GFX12-TRUE16:       ; %bb.0: ; %entry608; GFX12-TRUE16-NEXT:    s_clause 0x1609; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24610; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34611; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -1612; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000613; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s10614; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s11615; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s10616; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s11617; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0618; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s2619; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s3620; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS621; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0622; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS623; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0624; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s0625; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s1626; GFX12-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0.l, v1.l627; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo628; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null629; GFX12-TRUE16-NEXT:    s_endpgm630;631; GFX12-FAKE16-LABEL: fcmp_f16_le:632; GFX12-FAKE16:       ; %bb.0: ; %entry633; GFX12-FAKE16-NEXT:    s_clause 0x1634; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24635; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34636; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -1637; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000638; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s10639; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s11640; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s10641; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s11642; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0643; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s2644; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s3645; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS646; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0647; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS648; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0649; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s0650; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s1651; GFX12-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v0, v1652; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo653; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null654; GFX12-FAKE16-NEXT:    s_endpgm655    ptr addrspace(1) %r,656    ptr addrspace(1) %a,657    ptr addrspace(1) %b) {658entry:659  %a.val = load volatile half, ptr addrspace(1) %a660  %b.val = load volatile half, ptr addrspace(1) %b661  %r.val = fcmp ole half %a.val, %b.val662  %r.val.sext = sext i1 %r.val to i32663  store i32 %r.val.sext, ptr addrspace(1) %r664  ret void665}666 667define amdgpu_kernel void @fcmp_f16_gt(668; SI-LABEL: fcmp_f16_gt:669; SI:       ; %bb.0: ; %entry670; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9671; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd672; SI-NEXT:    s_mov_b32 s11, 0xf000673; SI-NEXT:    s_mov_b32 s10, -1674; SI-NEXT:    s_mov_b32 s14, s10675; SI-NEXT:    s_mov_b32 s15, s11676; SI-NEXT:    s_mov_b32 s6, s10677; SI-NEXT:    s_mov_b32 s7, s11678; SI-NEXT:    s_waitcnt lgkmcnt(0)679; SI-NEXT:    s_mov_b32 s12, s2680; SI-NEXT:    s_mov_b32 s13, s3681; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc682; SI-NEXT:    s_waitcnt vmcnt(0)683; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc684; SI-NEXT:    s_waitcnt vmcnt(0)685; SI-NEXT:    s_mov_b32 s8, s0686; SI-NEXT:    s_mov_b32 s9, s1687; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0688; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1689; SI-NEXT:    v_cmp_gt_f32_e32 vcc, v0, v1690; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc691; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0692; SI-NEXT:    s_endpgm693;694; VI-LABEL: fcmp_f16_gt:695; VI:       ; %bb.0: ; %entry696; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24697; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x34698; VI-NEXT:    s_mov_b32 s7, 0xf000699; VI-NEXT:    s_mov_b32 s6, -1700; VI-NEXT:    s_mov_b32 s14, s6701; VI-NEXT:    s_waitcnt lgkmcnt(0)702; VI-NEXT:    s_mov_b32 s12, s2703; VI-NEXT:    s_mov_b32 s13, s3704; VI-NEXT:    s_mov_b32 s15, s7705; VI-NEXT:    s_mov_b32 s10, s6706; VI-NEXT:    s_mov_b32 s11, s7707; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc708; VI-NEXT:    s_waitcnt vmcnt(0)709; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc710; VI-NEXT:    s_waitcnt vmcnt(0)711; VI-NEXT:    s_mov_b32 s4, s0712; VI-NEXT:    s_mov_b32 s5, s1713; VI-NEXT:    v_cmp_gt_f16_e32 vcc, v0, v1714; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc715; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0716; VI-NEXT:    s_endpgm717;718; GFX11-TRUE16-LABEL: fcmp_f16_gt:719; GFX11-TRUE16:       ; %bb.0: ; %entry720; GFX11-TRUE16-NEXT:    s_clause 0x1721; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24722; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34723; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1724; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000725; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10726; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11727; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10728; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11729; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)730; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2731; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3732; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc733; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)734; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc735; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)736; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0737; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1738; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v0.l, v1.l739; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo740; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0741; GFX11-TRUE16-NEXT:    s_endpgm742;743; GFX11-FAKE16-LABEL: fcmp_f16_gt:744; GFX11-FAKE16:       ; %bb.0: ; %entry745; GFX11-FAKE16-NEXT:    s_clause 0x1746; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24747; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34748; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1749; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000750; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10751; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11752; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10753; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11754; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)755; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2756; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3757; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc758; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)759; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc760; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)761; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0762; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1763; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v0, v1764; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo765; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0766; GFX11-FAKE16-NEXT:    s_endpgm767;768; GFX12-TRUE16-LABEL: fcmp_f16_gt:769; GFX12-TRUE16:       ; %bb.0: ; %entry770; GFX12-TRUE16-NEXT:    s_clause 0x1771; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24772; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34773; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -1774; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000775; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s10776; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s11777; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s10778; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s11779; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0780; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s2781; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s3782; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS783; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0784; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS785; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0786; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s0787; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s1788; GFX12-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v0.l, v1.l789; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo790; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null791; GFX12-TRUE16-NEXT:    s_endpgm792;793; GFX12-FAKE16-LABEL: fcmp_f16_gt:794; GFX12-FAKE16:       ; %bb.0: ; %entry795; GFX12-FAKE16-NEXT:    s_clause 0x1796; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24797; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34798; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -1799; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000800; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s10801; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s11802; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s10803; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s11804; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0805; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s2806; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s3807; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS808; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0809; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS810; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0811; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s0812; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s1813; GFX12-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v0, v1814; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo815; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null816; GFX12-FAKE16-NEXT:    s_endpgm817    ptr addrspace(1) %r,818    ptr addrspace(1) %a,819    ptr addrspace(1) %b) {820entry:821  %a.val = load volatile half, ptr addrspace(1) %a822  %b.val = load volatile half, ptr addrspace(1) %b823  %r.val = fcmp ogt half %a.val, %b.val824  %r.val.sext = sext i1 %r.val to i32825  store i32 %r.val.sext, ptr addrspace(1) %r826  ret void827}828 829define amdgpu_kernel void @fcmp_f16_lg(830; SI-LABEL: fcmp_f16_lg:831; SI:       ; %bb.0: ; %entry832; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9833; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd834; SI-NEXT:    s_mov_b32 s11, 0xf000835; SI-NEXT:    s_mov_b32 s10, -1836; SI-NEXT:    s_mov_b32 s14, s10837; SI-NEXT:    s_mov_b32 s15, s11838; SI-NEXT:    s_mov_b32 s6, s10839; SI-NEXT:    s_mov_b32 s7, s11840; SI-NEXT:    s_waitcnt lgkmcnt(0)841; SI-NEXT:    s_mov_b32 s12, s2842; SI-NEXT:    s_mov_b32 s13, s3843; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc844; SI-NEXT:    s_waitcnt vmcnt(0)845; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc846; SI-NEXT:    s_waitcnt vmcnt(0)847; SI-NEXT:    s_mov_b32 s8, s0848; SI-NEXT:    s_mov_b32 s9, s1849; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0850; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1851; SI-NEXT:    v_cmp_lg_f32_e32 vcc, v0, v1852; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc853; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 0854; SI-NEXT:    s_endpgm855;856; VI-LABEL: fcmp_f16_lg:857; VI:       ; %bb.0: ; %entry858; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24859; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x34860; VI-NEXT:    s_mov_b32 s7, 0xf000861; VI-NEXT:    s_mov_b32 s6, -1862; VI-NEXT:    s_mov_b32 s14, s6863; VI-NEXT:    s_waitcnt lgkmcnt(0)864; VI-NEXT:    s_mov_b32 s12, s2865; VI-NEXT:    s_mov_b32 s13, s3866; VI-NEXT:    s_mov_b32 s15, s7867; VI-NEXT:    s_mov_b32 s10, s6868; VI-NEXT:    s_mov_b32 s11, s7869; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc870; VI-NEXT:    s_waitcnt vmcnt(0)871; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc872; VI-NEXT:    s_waitcnt vmcnt(0)873; VI-NEXT:    s_mov_b32 s4, s0874; VI-NEXT:    s_mov_b32 s5, s1875; VI-NEXT:    v_cmp_lg_f16_e32 vcc, v0, v1876; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc877; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 0878; VI-NEXT:    s_endpgm879;880; GFX11-TRUE16-LABEL: fcmp_f16_lg:881; GFX11-TRUE16:       ; %bb.0: ; %entry882; GFX11-TRUE16-NEXT:    s_clause 0x1883; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24884; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34885; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -1886; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000887; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s10888; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s11889; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s10890; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s11891; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)892; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s2893; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s3894; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc895; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)896; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc897; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)898; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s0899; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s1900; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v0.l, v1.l901; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo902; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0903; GFX11-TRUE16-NEXT:    s_endpgm904;905; GFX11-FAKE16-LABEL: fcmp_f16_lg:906; GFX11-FAKE16:       ; %bb.0: ; %entry907; GFX11-FAKE16-NEXT:    s_clause 0x1908; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24909; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34910; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -1911; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000912; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s10913; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s11914; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s10915; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s11916; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)917; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s2918; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s3919; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc920; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)921; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc922; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)923; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s0924; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s1925; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v0, v1926; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo927; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 0928; GFX11-FAKE16-NEXT:    s_endpgm929;930; GFX12-TRUE16-LABEL: fcmp_f16_lg:931; GFX12-TRUE16:       ; %bb.0: ; %entry932; GFX12-TRUE16-NEXT:    s_clause 0x1933; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24934; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34935; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -1936; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x31016000937; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s10938; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s11939; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s10940; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s11941; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0942; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s2943; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s3944; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS945; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0946; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS947; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x0948; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s0949; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s1950; GFX12-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v0.l, v1.l951; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo952; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null953; GFX12-TRUE16-NEXT:    s_endpgm954;955; GFX12-FAKE16-LABEL: fcmp_f16_lg:956; GFX12-FAKE16:       ; %bb.0: ; %entry957; GFX12-FAKE16-NEXT:    s_clause 0x1958; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24959; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34960; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -1961; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x31016000962; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s10963; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s11964; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s10965; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s11966; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0967; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s2968; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s3969; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS970; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0971; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS972; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x0973; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s0974; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s1975; GFX12-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v0, v1976; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo977; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null978; GFX12-FAKE16-NEXT:    s_endpgm979    ptr addrspace(1) %r,980    ptr addrspace(1) %a,981    ptr addrspace(1) %b) {982entry:983  %a.val = load volatile half, ptr addrspace(1) %a984  %b.val = load volatile half, ptr addrspace(1) %b985  %r.val = fcmp one half %a.val, %b.val986  %r.val.sext = sext i1 %r.val to i32987  store i32 %r.val.sext, ptr addrspace(1) %r988  ret void989}990 991define amdgpu_kernel void @fcmp_f16_ge(992; SI-LABEL: fcmp_f16_ge:993; SI:       ; %bb.0: ; %entry994; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9995; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd996; SI-NEXT:    s_mov_b32 s11, 0xf000997; SI-NEXT:    s_mov_b32 s10, -1998; SI-NEXT:    s_mov_b32 s14, s10999; SI-NEXT:    s_mov_b32 s15, s111000; SI-NEXT:    s_mov_b32 s6, s101001; SI-NEXT:    s_mov_b32 s7, s111002; SI-NEXT:    s_waitcnt lgkmcnt(0)1003; SI-NEXT:    s_mov_b32 s12, s21004; SI-NEXT:    s_mov_b32 s13, s31005; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1006; SI-NEXT:    s_waitcnt vmcnt(0)1007; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1008; SI-NEXT:    s_waitcnt vmcnt(0)1009; SI-NEXT:    s_mov_b32 s8, s01010; SI-NEXT:    s_mov_b32 s9, s11011; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01012; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11013; SI-NEXT:    v_cmp_ge_f32_e32 vcc, v0, v11014; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1015; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01016; SI-NEXT:    s_endpgm1017;1018; VI-LABEL: fcmp_f16_ge:1019; VI:       ; %bb.0: ; %entry1020; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241021; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341022; VI-NEXT:    s_mov_b32 s7, 0xf0001023; VI-NEXT:    s_mov_b32 s6, -11024; VI-NEXT:    s_mov_b32 s14, s61025; VI-NEXT:    s_waitcnt lgkmcnt(0)1026; VI-NEXT:    s_mov_b32 s12, s21027; VI-NEXT:    s_mov_b32 s13, s31028; VI-NEXT:    s_mov_b32 s15, s71029; VI-NEXT:    s_mov_b32 s10, s61030; VI-NEXT:    s_mov_b32 s11, s71031; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1032; VI-NEXT:    s_waitcnt vmcnt(0)1033; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc1034; VI-NEXT:    s_waitcnt vmcnt(0)1035; VI-NEXT:    s_mov_b32 s4, s01036; VI-NEXT:    s_mov_b32 s5, s11037; VI-NEXT:    v_cmp_ge_f16_e32 vcc, v0, v11038; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1039; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 01040; VI-NEXT:    s_endpgm1041;1042; GFX11-TRUE16-LABEL: fcmp_f16_ge:1043; GFX11-TRUE16:       ; %bb.0: ; %entry1044; GFX11-TRUE16-NEXT:    s_clause 0x11045; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241046; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341047; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -11048; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001049; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s101050; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s111051; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s101052; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s111053; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1054; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s21055; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s31056; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1057; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1058; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1059; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1060; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s01061; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s11062; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0.l, v1.l1063; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1064; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01065; GFX11-TRUE16-NEXT:    s_endpgm1066;1067; GFX11-FAKE16-LABEL: fcmp_f16_ge:1068; GFX11-FAKE16:       ; %bb.0: ; %entry1069; GFX11-FAKE16-NEXT:    s_clause 0x11070; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241071; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341072; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -11073; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001074; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s101075; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s111076; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s101077; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s111078; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1079; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s21080; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s31081; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1082; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1083; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1084; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1085; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s01086; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s11087; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0, v11088; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1089; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01090; GFX11-FAKE16-NEXT:    s_endpgm1091;1092; GFX12-TRUE16-LABEL: fcmp_f16_ge:1093; GFX12-TRUE16:       ; %bb.0: ; %entry1094; GFX12-TRUE16-NEXT:    s_clause 0x11095; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241096; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341097; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -11098; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001099; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s101100; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s111101; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s101102; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s111103; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01104; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s21105; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s31106; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1107; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01108; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1109; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01110; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s01111; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s11112; GFX12-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0.l, v1.l1113; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1114; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1115; GFX12-TRUE16-NEXT:    s_endpgm1116;1117; GFX12-FAKE16-LABEL: fcmp_f16_ge:1118; GFX12-FAKE16:       ; %bb.0: ; %entry1119; GFX12-FAKE16-NEXT:    s_clause 0x11120; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241121; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341122; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -11123; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001124; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s101125; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s111126; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s101127; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s111128; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01129; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s21130; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s31131; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1132; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01133; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1134; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01135; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s01136; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s11137; GFX12-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v0, v11138; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1139; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1140; GFX12-FAKE16-NEXT:    s_endpgm1141    ptr addrspace(1) %r,1142    ptr addrspace(1) %a,1143    ptr addrspace(1) %b) {1144entry:1145  %a.val = load volatile half, ptr addrspace(1) %a1146  %b.val = load volatile half, ptr addrspace(1) %b1147  %r.val = fcmp oge half %a.val, %b.val1148  %r.val.sext = sext i1 %r.val to i321149  store i32 %r.val.sext, ptr addrspace(1) %r1150  ret void1151}1152 1153define amdgpu_kernel void @fcmp_f16_o(1154; SI-LABEL: fcmp_f16_o:1155; SI:       ; %bb.0: ; %entry1156; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91157; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1158; SI-NEXT:    s_mov_b32 s11, 0xf0001159; SI-NEXT:    s_mov_b32 s10, -11160; SI-NEXT:    s_mov_b32 s14, s101161; SI-NEXT:    s_mov_b32 s15, s111162; SI-NEXT:    s_mov_b32 s6, s101163; SI-NEXT:    s_mov_b32 s7, s111164; SI-NEXT:    s_waitcnt lgkmcnt(0)1165; SI-NEXT:    s_mov_b32 s12, s21166; SI-NEXT:    s_mov_b32 s13, s31167; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1168; SI-NEXT:    s_waitcnt vmcnt(0)1169; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1170; SI-NEXT:    s_waitcnt vmcnt(0)1171; SI-NEXT:    s_mov_b32 s8, s01172; SI-NEXT:    s_mov_b32 s9, s11173; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01174; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11175; SI-NEXT:    v_cmp_o_f32_e32 vcc, v0, v11176; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1177; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01178; SI-NEXT:    s_endpgm1179;1180; VI-LABEL: fcmp_f16_o:1181; VI:       ; %bb.0: ; %entry1182; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241183; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341184; VI-NEXT:    s_mov_b32 s7, 0xf0001185; VI-NEXT:    s_mov_b32 s6, -11186; VI-NEXT:    s_mov_b32 s14, s61187; VI-NEXT:    s_waitcnt lgkmcnt(0)1188; VI-NEXT:    s_mov_b32 s12, s21189; VI-NEXT:    s_mov_b32 s13, s31190; VI-NEXT:    s_mov_b32 s15, s71191; VI-NEXT:    s_mov_b32 s10, s61192; VI-NEXT:    s_mov_b32 s11, s71193; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1194; VI-NEXT:    s_waitcnt vmcnt(0)1195; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc1196; VI-NEXT:    s_waitcnt vmcnt(0)1197; VI-NEXT:    s_mov_b32 s4, s01198; VI-NEXT:    s_mov_b32 s5, s11199; VI-NEXT:    v_cmp_o_f16_e32 vcc, v0, v11200; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1201; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 01202; VI-NEXT:    s_endpgm1203;1204; GFX11-TRUE16-LABEL: fcmp_f16_o:1205; GFX11-TRUE16:       ; %bb.0: ; %entry1206; GFX11-TRUE16-NEXT:    s_clause 0x11207; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241208; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341209; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -11210; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001211; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s101212; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s111213; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s101214; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s111215; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1216; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s21217; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s31218; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1219; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1220; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1221; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1222; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s01223; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s11224; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v0.l, v1.l1225; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1226; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01227; GFX11-TRUE16-NEXT:    s_endpgm1228;1229; GFX11-FAKE16-LABEL: fcmp_f16_o:1230; GFX11-FAKE16:       ; %bb.0: ; %entry1231; GFX11-FAKE16-NEXT:    s_clause 0x11232; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241233; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341234; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -11235; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001236; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s101237; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s111238; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s101239; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s111240; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1241; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s21242; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s31243; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1244; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1245; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1246; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1247; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s01248; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s11249; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v0, v11250; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1251; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01252; GFX11-FAKE16-NEXT:    s_endpgm1253;1254; GFX12-TRUE16-LABEL: fcmp_f16_o:1255; GFX12-TRUE16:       ; %bb.0: ; %entry1256; GFX12-TRUE16-NEXT:    s_clause 0x11257; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241258; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341259; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -11260; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001261; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s101262; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s111263; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s101264; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s111265; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01266; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s21267; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s31268; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1269; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01270; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1271; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01272; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s01273; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s11274; GFX12-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v0.l, v1.l1275; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1276; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1277; GFX12-TRUE16-NEXT:    s_endpgm1278;1279; GFX12-FAKE16-LABEL: fcmp_f16_o:1280; GFX12-FAKE16:       ; %bb.0: ; %entry1281; GFX12-FAKE16-NEXT:    s_clause 0x11282; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241283; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341284; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -11285; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001286; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s101287; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s111288; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s101289; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s111290; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01291; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s21292; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s31293; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1294; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01295; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1296; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01297; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s01298; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s11299; GFX12-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v0, v11300; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1301; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1302; GFX12-FAKE16-NEXT:    s_endpgm1303    ptr addrspace(1) %r,1304    ptr addrspace(1) %a,1305    ptr addrspace(1) %b) {1306entry:1307  %a.val = load volatile half, ptr addrspace(1) %a1308  %b.val = load volatile half, ptr addrspace(1) %b1309  %r.val = fcmp ord half %a.val, %b.val1310  %r.val.sext = sext i1 %r.val to i321311  store i32 %r.val.sext, ptr addrspace(1) %r1312  ret void1313}1314 1315define amdgpu_kernel void @fcmp_f16_u(1316; SI-LABEL: fcmp_f16_u:1317; SI:       ; %bb.0: ; %entry1318; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91319; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1320; SI-NEXT:    s_mov_b32 s11, 0xf0001321; SI-NEXT:    s_mov_b32 s10, -11322; SI-NEXT:    s_mov_b32 s14, s101323; SI-NEXT:    s_mov_b32 s15, s111324; SI-NEXT:    s_mov_b32 s6, s101325; SI-NEXT:    s_mov_b32 s7, s111326; SI-NEXT:    s_waitcnt lgkmcnt(0)1327; SI-NEXT:    s_mov_b32 s12, s21328; SI-NEXT:    s_mov_b32 s13, s31329; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1330; SI-NEXT:    s_waitcnt vmcnt(0)1331; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1332; SI-NEXT:    s_waitcnt vmcnt(0)1333; SI-NEXT:    s_mov_b32 s8, s01334; SI-NEXT:    s_mov_b32 s9, s11335; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01336; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11337; SI-NEXT:    v_cmp_u_f32_e32 vcc, v0, v11338; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1339; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01340; SI-NEXT:    s_endpgm1341;1342; VI-LABEL: fcmp_f16_u:1343; VI:       ; %bb.0: ; %entry1344; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241345; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341346; VI-NEXT:    s_mov_b32 s7, 0xf0001347; VI-NEXT:    s_mov_b32 s6, -11348; VI-NEXT:    s_mov_b32 s14, s61349; VI-NEXT:    s_waitcnt lgkmcnt(0)1350; VI-NEXT:    s_mov_b32 s12, s21351; VI-NEXT:    s_mov_b32 s13, s31352; VI-NEXT:    s_mov_b32 s15, s71353; VI-NEXT:    s_mov_b32 s10, s61354; VI-NEXT:    s_mov_b32 s11, s71355; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1356; VI-NEXT:    s_waitcnt vmcnt(0)1357; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc1358; VI-NEXT:    s_waitcnt vmcnt(0)1359; VI-NEXT:    s_mov_b32 s4, s01360; VI-NEXT:    s_mov_b32 s5, s11361; VI-NEXT:    v_cmp_u_f16_e32 vcc, v0, v11362; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1363; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 01364; VI-NEXT:    s_endpgm1365;1366; GFX11-TRUE16-LABEL: fcmp_f16_u:1367; GFX11-TRUE16:       ; %bb.0: ; %entry1368; GFX11-TRUE16-NEXT:    s_clause 0x11369; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241370; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341371; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -11372; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001373; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s101374; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s111375; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s101376; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s111377; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1378; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s21379; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s31380; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1381; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1382; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1383; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1384; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s01385; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s11386; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v0.l, v1.l1387; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1388; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01389; GFX11-TRUE16-NEXT:    s_endpgm1390;1391; GFX11-FAKE16-LABEL: fcmp_f16_u:1392; GFX11-FAKE16:       ; %bb.0: ; %entry1393; GFX11-FAKE16-NEXT:    s_clause 0x11394; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241395; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341396; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -11397; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001398; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s101399; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s111400; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s101401; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s111402; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1403; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s21404; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s31405; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1406; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1407; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1408; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1409; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s01410; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s11411; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v0, v11412; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1413; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01414; GFX11-FAKE16-NEXT:    s_endpgm1415;1416; GFX12-TRUE16-LABEL: fcmp_f16_u:1417; GFX12-TRUE16:       ; %bb.0: ; %entry1418; GFX12-TRUE16-NEXT:    s_clause 0x11419; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241420; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341421; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -11422; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001423; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s101424; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s111425; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s101426; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s111427; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01428; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s21429; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s31430; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1431; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01432; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1433; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01434; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s01435; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s11436; GFX12-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v0.l, v1.l1437; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1438; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1439; GFX12-TRUE16-NEXT:    s_endpgm1440;1441; GFX12-FAKE16-LABEL: fcmp_f16_u:1442; GFX12-FAKE16:       ; %bb.0: ; %entry1443; GFX12-FAKE16-NEXT:    s_clause 0x11444; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241445; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341446; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -11447; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001448; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s101449; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s111450; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s101451; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s111452; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01453; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s21454; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s31455; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1456; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01457; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1458; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01459; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s01460; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s11461; GFX12-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v0, v11462; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1463; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1464; GFX12-FAKE16-NEXT:    s_endpgm1465    ptr addrspace(1) %r,1466    ptr addrspace(1) %a,1467    ptr addrspace(1) %b) {1468entry:1469  %a.val = load volatile half, ptr addrspace(1) %a1470  %b.val = load volatile half, ptr addrspace(1) %b1471  %r.val = fcmp uno half %a.val, %b.val1472  %r.val.sext = sext i1 %r.val to i321473  store i32 %r.val.sext, ptr addrspace(1) %r1474  ret void1475}1476 1477define amdgpu_kernel void @fcmp_f16_nge(1478; SI-LABEL: fcmp_f16_nge:1479; SI:       ; %bb.0: ; %entry1480; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91481; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1482; SI-NEXT:    s_mov_b32 s11, 0xf0001483; SI-NEXT:    s_mov_b32 s10, -11484; SI-NEXT:    s_mov_b32 s14, s101485; SI-NEXT:    s_mov_b32 s15, s111486; SI-NEXT:    s_mov_b32 s6, s101487; SI-NEXT:    s_mov_b32 s7, s111488; SI-NEXT:    s_waitcnt lgkmcnt(0)1489; SI-NEXT:    s_mov_b32 s12, s21490; SI-NEXT:    s_mov_b32 s13, s31491; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1492; SI-NEXT:    s_waitcnt vmcnt(0)1493; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1494; SI-NEXT:    s_waitcnt vmcnt(0)1495; SI-NEXT:    s_mov_b32 s8, s01496; SI-NEXT:    s_mov_b32 s9, s11497; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01498; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11499; SI-NEXT:    v_cmp_nge_f32_e32 vcc, v0, v11500; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1501; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01502; SI-NEXT:    s_endpgm1503;1504; VI-LABEL: fcmp_f16_nge:1505; VI:       ; %bb.0: ; %entry1506; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241507; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341508; VI-NEXT:    s_mov_b32 s7, 0xf0001509; VI-NEXT:    s_mov_b32 s6, -11510; VI-NEXT:    s_mov_b32 s14, s61511; VI-NEXT:    s_waitcnt lgkmcnt(0)1512; VI-NEXT:    s_mov_b32 s12, s21513; VI-NEXT:    s_mov_b32 s13, s31514; VI-NEXT:    s_mov_b32 s15, s71515; VI-NEXT:    s_mov_b32 s10, s61516; VI-NEXT:    s_mov_b32 s11, s71517; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1518; VI-NEXT:    s_waitcnt vmcnt(0)1519; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc1520; VI-NEXT:    s_waitcnt vmcnt(0)1521; VI-NEXT:    s_mov_b32 s4, s01522; VI-NEXT:    s_mov_b32 s5, s11523; VI-NEXT:    v_cmp_nge_f16_e32 vcc, v0, v11524; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1525; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 01526; VI-NEXT:    s_endpgm1527;1528; GFX11-TRUE16-LABEL: fcmp_f16_nge:1529; GFX11-TRUE16:       ; %bb.0: ; %entry1530; GFX11-TRUE16-NEXT:    s_clause 0x11531; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241532; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341533; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -11534; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001535; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s101536; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s111537; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s101538; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s111539; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1540; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s21541; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s31542; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1543; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1544; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1545; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1546; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s01547; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s11548; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v0.l, v1.l1549; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1550; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01551; GFX11-TRUE16-NEXT:    s_endpgm1552;1553; GFX11-FAKE16-LABEL: fcmp_f16_nge:1554; GFX11-FAKE16:       ; %bb.0: ; %entry1555; GFX11-FAKE16-NEXT:    s_clause 0x11556; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241557; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341558; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -11559; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001560; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s101561; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s111562; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s101563; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s111564; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1565; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s21566; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s31567; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1568; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1569; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1570; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1571; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s01572; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s11573; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v0, v11574; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1575; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01576; GFX11-FAKE16-NEXT:    s_endpgm1577;1578; GFX12-TRUE16-LABEL: fcmp_f16_nge:1579; GFX12-TRUE16:       ; %bb.0: ; %entry1580; GFX12-TRUE16-NEXT:    s_clause 0x11581; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241582; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341583; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -11584; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001585; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s101586; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s111587; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s101588; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s111589; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01590; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s21591; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s31592; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1593; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01594; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1595; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01596; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s01597; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s11598; GFX12-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v0.l, v1.l1599; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1600; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1601; GFX12-TRUE16-NEXT:    s_endpgm1602;1603; GFX12-FAKE16-LABEL: fcmp_f16_nge:1604; GFX12-FAKE16:       ; %bb.0: ; %entry1605; GFX12-FAKE16-NEXT:    s_clause 0x11606; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241607; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341608; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -11609; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001610; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s101611; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s111612; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s101613; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s111614; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01615; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s21616; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s31617; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1618; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01619; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1620; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01621; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s01622; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s11623; GFX12-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v0, v11624; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1625; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1626; GFX12-FAKE16-NEXT:    s_endpgm1627    ptr addrspace(1) %r,1628    ptr addrspace(1) %a,1629    ptr addrspace(1) %b) {1630entry:1631  %a.val = load volatile half, ptr addrspace(1) %a1632  %b.val = load volatile half, ptr addrspace(1) %b1633  %r.val = fcmp ult half %a.val, %b.val1634  %r.val.sext = sext i1 %r.val to i321635  store i32 %r.val.sext, ptr addrspace(1) %r1636  ret void1637}1638 1639define amdgpu_kernel void @fcmp_f16_nlg(1640; SI-LABEL: fcmp_f16_nlg:1641; SI:       ; %bb.0: ; %entry1642; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91643; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1644; SI-NEXT:    s_mov_b32 s11, 0xf0001645; SI-NEXT:    s_mov_b32 s10, -11646; SI-NEXT:    s_mov_b32 s14, s101647; SI-NEXT:    s_mov_b32 s15, s111648; SI-NEXT:    s_mov_b32 s6, s101649; SI-NEXT:    s_mov_b32 s7, s111650; SI-NEXT:    s_waitcnt lgkmcnt(0)1651; SI-NEXT:    s_mov_b32 s12, s21652; SI-NEXT:    s_mov_b32 s13, s31653; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1654; SI-NEXT:    s_waitcnt vmcnt(0)1655; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1656; SI-NEXT:    s_waitcnt vmcnt(0)1657; SI-NEXT:    s_mov_b32 s8, s01658; SI-NEXT:    s_mov_b32 s9, s11659; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01660; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11661; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, v0, v11662; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1663; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01664; SI-NEXT:    s_endpgm1665;1666; VI-LABEL: fcmp_f16_nlg:1667; VI:       ; %bb.0: ; %entry1668; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241669; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341670; VI-NEXT:    s_mov_b32 s7, 0xf0001671; VI-NEXT:    s_mov_b32 s6, -11672; VI-NEXT:    s_mov_b32 s14, s61673; VI-NEXT:    s_waitcnt lgkmcnt(0)1674; VI-NEXT:    s_mov_b32 s12, s21675; VI-NEXT:    s_mov_b32 s13, s31676; VI-NEXT:    s_mov_b32 s15, s71677; VI-NEXT:    s_mov_b32 s10, s61678; VI-NEXT:    s_mov_b32 s11, s71679; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1680; VI-NEXT:    s_waitcnt vmcnt(0)1681; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc1682; VI-NEXT:    s_waitcnt vmcnt(0)1683; VI-NEXT:    s_mov_b32 s4, s01684; VI-NEXT:    s_mov_b32 s5, s11685; VI-NEXT:    v_cmp_nlg_f16_e32 vcc, v0, v11686; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1687; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 01688; VI-NEXT:    s_endpgm1689;1690; GFX11-TRUE16-LABEL: fcmp_f16_nlg:1691; GFX11-TRUE16:       ; %bb.0: ; %entry1692; GFX11-TRUE16-NEXT:    s_clause 0x11693; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241694; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341695; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -11696; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001697; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s101698; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s111699; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s101700; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s111701; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1702; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s21703; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s31704; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1705; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1706; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1707; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1708; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s01709; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s11710; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v0.l, v1.l1711; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1712; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01713; GFX11-TRUE16-NEXT:    s_endpgm1714;1715; GFX11-FAKE16-LABEL: fcmp_f16_nlg:1716; GFX11-FAKE16:       ; %bb.0: ; %entry1717; GFX11-FAKE16-NEXT:    s_clause 0x11718; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241719; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341720; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -11721; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001722; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s101723; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s111724; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s101725; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s111726; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1727; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s21728; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s31729; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1730; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1731; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1732; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1733; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s01734; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s11735; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v0, v11736; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1737; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01738; GFX11-FAKE16-NEXT:    s_endpgm1739;1740; GFX12-TRUE16-LABEL: fcmp_f16_nlg:1741; GFX12-TRUE16:       ; %bb.0: ; %entry1742; GFX12-TRUE16-NEXT:    s_clause 0x11743; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241744; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341745; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -11746; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001747; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s101748; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s111749; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s101750; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s111751; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01752; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s21753; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s31754; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1755; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01756; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1757; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01758; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s01759; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s11760; GFX12-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v0.l, v1.l1761; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1762; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1763; GFX12-TRUE16-NEXT:    s_endpgm1764;1765; GFX12-FAKE16-LABEL: fcmp_f16_nlg:1766; GFX12-FAKE16:       ; %bb.0: ; %entry1767; GFX12-FAKE16-NEXT:    s_clause 0x11768; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241769; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341770; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -11771; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001772; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s101773; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s111774; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s101775; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s111776; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01777; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s21778; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s31779; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1780; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01781; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1782; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01783; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s01784; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s11785; GFX12-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v0, v11786; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1787; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1788; GFX12-FAKE16-NEXT:    s_endpgm1789    ptr addrspace(1) %r,1790    ptr addrspace(1) %a,1791    ptr addrspace(1) %b) {1792entry:1793  %a.val = load volatile half, ptr addrspace(1) %a1794  %b.val = load volatile half, ptr addrspace(1) %b1795  %r.val = fcmp ueq half %a.val, %b.val1796  %r.val.sext = sext i1 %r.val to i321797  store i32 %r.val.sext, ptr addrspace(1) %r1798  ret void1799}1800 1801define amdgpu_kernel void @fcmp_f16_ngt(1802; SI-LABEL: fcmp_f16_ngt:1803; SI:       ; %bb.0: ; %entry1804; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91805; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1806; SI-NEXT:    s_mov_b32 s11, 0xf0001807; SI-NEXT:    s_mov_b32 s10, -11808; SI-NEXT:    s_mov_b32 s14, s101809; SI-NEXT:    s_mov_b32 s15, s111810; SI-NEXT:    s_mov_b32 s6, s101811; SI-NEXT:    s_mov_b32 s7, s111812; SI-NEXT:    s_waitcnt lgkmcnt(0)1813; SI-NEXT:    s_mov_b32 s12, s21814; SI-NEXT:    s_mov_b32 s13, s31815; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1816; SI-NEXT:    s_waitcnt vmcnt(0)1817; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1818; SI-NEXT:    s_waitcnt vmcnt(0)1819; SI-NEXT:    s_mov_b32 s8, s01820; SI-NEXT:    s_mov_b32 s9, s11821; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01822; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11823; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v0, v11824; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1825; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01826; SI-NEXT:    s_endpgm1827;1828; VI-LABEL: fcmp_f16_ngt:1829; VI:       ; %bb.0: ; %entry1830; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241831; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341832; VI-NEXT:    s_mov_b32 s7, 0xf0001833; VI-NEXT:    s_mov_b32 s6, -11834; VI-NEXT:    s_mov_b32 s14, s61835; VI-NEXT:    s_waitcnt lgkmcnt(0)1836; VI-NEXT:    s_mov_b32 s12, s21837; VI-NEXT:    s_mov_b32 s13, s31838; VI-NEXT:    s_mov_b32 s15, s71839; VI-NEXT:    s_mov_b32 s10, s61840; VI-NEXT:    s_mov_b32 s11, s71841; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1842; VI-NEXT:    s_waitcnt vmcnt(0)1843; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc1844; VI-NEXT:    s_waitcnt vmcnt(0)1845; VI-NEXT:    s_mov_b32 s4, s01846; VI-NEXT:    s_mov_b32 s5, s11847; VI-NEXT:    v_cmp_ngt_f16_e32 vcc, v0, v11848; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1849; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 01850; VI-NEXT:    s_endpgm1851;1852; GFX11-TRUE16-LABEL: fcmp_f16_ngt:1853; GFX11-TRUE16:       ; %bb.0: ; %entry1854; GFX11-TRUE16-NEXT:    s_clause 0x11855; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241856; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341857; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -11858; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001859; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s101860; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s111861; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s101862; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s111863; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1864; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s21865; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s31866; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1867; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1868; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1869; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1870; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s01871; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s11872; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v0.l, v1.l1873; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1874; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01875; GFX11-TRUE16-NEXT:    s_endpgm1876;1877; GFX11-FAKE16-LABEL: fcmp_f16_ngt:1878; GFX11-FAKE16:       ; %bb.0: ; %entry1879; GFX11-FAKE16-NEXT:    s_clause 0x11880; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241881; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341882; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -11883; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001884; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s101885; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s111886; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s101887; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s111888; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1889; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s21890; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s31891; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc1892; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1893; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc1894; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1895; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s01896; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s11897; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v0, v11898; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1899; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 01900; GFX11-FAKE16-NEXT:    s_endpgm1901;1902; GFX12-TRUE16-LABEL: fcmp_f16_ngt:1903; GFX12-TRUE16:       ; %bb.0: ; %entry1904; GFX12-TRUE16-NEXT:    s_clause 0x11905; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241906; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341907; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -11908; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160001909; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s101910; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s111911; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s101912; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s111913; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x01914; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s21915; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s31916; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1917; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01918; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1919; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x01920; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s01921; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s11922; GFX12-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v0.l, v1.l1923; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1924; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1925; GFX12-TRUE16-NEXT:    s_endpgm1926;1927; GFX12-FAKE16-LABEL: fcmp_f16_ngt:1928; GFX12-FAKE16:       ; %bb.0: ; %entry1929; GFX12-FAKE16-NEXT:    s_clause 0x11930; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241931; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341932; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -11933; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160001934; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s101935; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s111936; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s101937; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s111938; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x01939; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s21940; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s31941; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS1942; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01943; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS1944; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x01945; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s01946; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s11947; GFX12-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v0, v11948; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo1949; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null1950; GFX12-FAKE16-NEXT:    s_endpgm1951    ptr addrspace(1) %r,1952    ptr addrspace(1) %a,1953    ptr addrspace(1) %b) {1954entry:1955  %a.val = load volatile half, ptr addrspace(1) %a1956  %b.val = load volatile half, ptr addrspace(1) %b1957  %r.val = fcmp ule half %a.val, %b.val1958  %r.val.sext = sext i1 %r.val to i321959  store i32 %r.val.sext, ptr addrspace(1) %r1960  ret void1961}1962 1963define amdgpu_kernel void @fcmp_f16_nle(1964; SI-LABEL: fcmp_f16_nle:1965; SI:       ; %bb.0: ; %entry1966; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91967; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1968; SI-NEXT:    s_mov_b32 s11, 0xf0001969; SI-NEXT:    s_mov_b32 s10, -11970; SI-NEXT:    s_mov_b32 s14, s101971; SI-NEXT:    s_mov_b32 s15, s111972; SI-NEXT:    s_mov_b32 s6, s101973; SI-NEXT:    s_mov_b32 s7, s111974; SI-NEXT:    s_waitcnt lgkmcnt(0)1975; SI-NEXT:    s_mov_b32 s12, s21976; SI-NEXT:    s_mov_b32 s13, s31977; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc1978; SI-NEXT:    s_waitcnt vmcnt(0)1979; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc1980; SI-NEXT:    s_waitcnt vmcnt(0)1981; SI-NEXT:    s_mov_b32 s8, s01982; SI-NEXT:    s_mov_b32 s9, s11983; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01984; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11985; SI-NEXT:    v_cmp_nle_f32_e32 vcc, v0, v11986; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1987; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 01988; SI-NEXT:    s_endpgm1989;1990; VI-LABEL: fcmp_f16_nle:1991; VI:       ; %bb.0: ; %entry1992; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241993; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x341994; VI-NEXT:    s_mov_b32 s7, 0xf0001995; VI-NEXT:    s_mov_b32 s6, -11996; VI-NEXT:    s_mov_b32 s14, s61997; VI-NEXT:    s_waitcnt lgkmcnt(0)1998; VI-NEXT:    s_mov_b32 s12, s21999; VI-NEXT:    s_mov_b32 s13, s32000; VI-NEXT:    s_mov_b32 s15, s72001; VI-NEXT:    s_mov_b32 s10, s62002; VI-NEXT:    s_mov_b32 s11, s72003; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc2004; VI-NEXT:    s_waitcnt vmcnt(0)2005; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc2006; VI-NEXT:    s_waitcnt vmcnt(0)2007; VI-NEXT:    s_mov_b32 s4, s02008; VI-NEXT:    s_mov_b32 s5, s12009; VI-NEXT:    v_cmp_nle_f16_e32 vcc, v0, v12010; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2011; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 02012; VI-NEXT:    s_endpgm2013;2014; GFX11-TRUE16-LABEL: fcmp_f16_nle:2015; GFX11-TRUE16:       ; %bb.0: ; %entry2016; GFX11-TRUE16-NEXT:    s_clause 0x12017; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242018; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342019; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -12020; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002021; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s102022; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s112023; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s102024; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s112025; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2026; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s22027; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s32028; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc2029; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2030; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc2031; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2032; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s02033; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s12034; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v0.l, v1.l2035; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2036; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 02037; GFX11-TRUE16-NEXT:    s_endpgm2038;2039; GFX11-FAKE16-LABEL: fcmp_f16_nle:2040; GFX11-FAKE16:       ; %bb.0: ; %entry2041; GFX11-FAKE16-NEXT:    s_clause 0x12042; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242043; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342044; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -12045; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002046; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s102047; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s112048; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s102049; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s112050; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2051; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s22052; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s32053; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc2054; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2055; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc2056; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2057; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s02058; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s12059; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v0, v12060; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2061; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 02062; GFX11-FAKE16-NEXT:    s_endpgm2063;2064; GFX12-TRUE16-LABEL: fcmp_f16_nle:2065; GFX12-TRUE16:       ; %bb.0: ; %entry2066; GFX12-TRUE16-NEXT:    s_clause 0x12067; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242068; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342069; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -12070; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002071; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s102072; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s112073; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s102074; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s112075; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02076; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s22077; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s32078; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS2079; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02080; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS2081; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02082; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s02083; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s12084; GFX12-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v0.l, v1.l2085; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2086; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null2087; GFX12-TRUE16-NEXT:    s_endpgm2088;2089; GFX12-FAKE16-LABEL: fcmp_f16_nle:2090; GFX12-FAKE16:       ; %bb.0: ; %entry2091; GFX12-FAKE16-NEXT:    s_clause 0x12092; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242093; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342094; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -12095; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002096; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s102097; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s112098; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s102099; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s112100; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02101; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s22102; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s32103; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS2104; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02105; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS2106; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02107; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s02108; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s12109; GFX12-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v0, v12110; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2111; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null2112; GFX12-FAKE16-NEXT:    s_endpgm2113    ptr addrspace(1) %r,2114    ptr addrspace(1) %a,2115    ptr addrspace(1) %b) {2116entry:2117  %a.val = load volatile half, ptr addrspace(1) %a2118  %b.val = load volatile half, ptr addrspace(1) %b2119  %r.val = fcmp ugt half %a.val, %b.val2120  %r.val.sext = sext i1 %r.val to i322121  store i32 %r.val.sext, ptr addrspace(1) %r2122  ret void2123}2124 2125define amdgpu_kernel void @fcmp_f16_neq(2126; SI-LABEL: fcmp_f16_neq:2127; SI:       ; %bb.0: ; %entry2128; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92129; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2130; SI-NEXT:    s_mov_b32 s11, 0xf0002131; SI-NEXT:    s_mov_b32 s10, -12132; SI-NEXT:    s_mov_b32 s14, s102133; SI-NEXT:    s_mov_b32 s15, s112134; SI-NEXT:    s_mov_b32 s6, s102135; SI-NEXT:    s_mov_b32 s7, s112136; SI-NEXT:    s_waitcnt lgkmcnt(0)2137; SI-NEXT:    s_mov_b32 s12, s22138; SI-NEXT:    s_mov_b32 s13, s32139; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc2140; SI-NEXT:    s_waitcnt vmcnt(0)2141; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc2142; SI-NEXT:    s_waitcnt vmcnt(0)2143; SI-NEXT:    s_mov_b32 s8, s02144; SI-NEXT:    s_mov_b32 s9, s12145; SI-NEXT:    v_cvt_f32_f16_e32 v0, v02146; SI-NEXT:    v_cvt_f32_f16_e32 v1, v12147; SI-NEXT:    v_cmp_neq_f32_e32 vcc, v0, v12148; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2149; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 02150; SI-NEXT:    s_endpgm2151;2152; VI-LABEL: fcmp_f16_neq:2153; VI:       ; %bb.0: ; %entry2154; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242155; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x342156; VI-NEXT:    s_mov_b32 s7, 0xf0002157; VI-NEXT:    s_mov_b32 s6, -12158; VI-NEXT:    s_mov_b32 s14, s62159; VI-NEXT:    s_waitcnt lgkmcnt(0)2160; VI-NEXT:    s_mov_b32 s12, s22161; VI-NEXT:    s_mov_b32 s13, s32162; VI-NEXT:    s_mov_b32 s15, s72163; VI-NEXT:    s_mov_b32 s10, s62164; VI-NEXT:    s_mov_b32 s11, s72165; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc2166; VI-NEXT:    s_waitcnt vmcnt(0)2167; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc2168; VI-NEXT:    s_waitcnt vmcnt(0)2169; VI-NEXT:    s_mov_b32 s4, s02170; VI-NEXT:    s_mov_b32 s5, s12171; VI-NEXT:    v_cmp_neq_f16_e32 vcc, v0, v12172; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2173; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 02174; VI-NEXT:    s_endpgm2175;2176; GFX11-TRUE16-LABEL: fcmp_f16_neq:2177; GFX11-TRUE16:       ; %bb.0: ; %entry2178; GFX11-TRUE16-NEXT:    s_clause 0x12179; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242180; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342181; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -12182; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002183; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s102184; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s112185; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s102186; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s112187; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2188; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s22189; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s32190; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc2191; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2192; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc2193; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2194; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s02195; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s12196; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v0.l, v1.l2197; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2198; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 02199; GFX11-TRUE16-NEXT:    s_endpgm2200;2201; GFX11-FAKE16-LABEL: fcmp_f16_neq:2202; GFX11-FAKE16:       ; %bb.0: ; %entry2203; GFX11-FAKE16-NEXT:    s_clause 0x12204; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242205; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342206; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -12207; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002208; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s102209; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s112210; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s102211; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s112212; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2213; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s22214; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s32215; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc2216; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2217; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc2218; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2219; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s02220; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s12221; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v0, v12222; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2223; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 02224; GFX11-FAKE16-NEXT:    s_endpgm2225;2226; GFX12-TRUE16-LABEL: fcmp_f16_neq:2227; GFX12-TRUE16:       ; %bb.0: ; %entry2228; GFX12-TRUE16-NEXT:    s_clause 0x12229; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242230; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342231; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -12232; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002233; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s102234; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s112235; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s102236; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s112237; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02238; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s22239; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s32240; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS2241; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02242; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS2243; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02244; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s02245; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s12246; GFX12-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v0.l, v1.l2247; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2248; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null2249; GFX12-TRUE16-NEXT:    s_endpgm2250;2251; GFX12-FAKE16-LABEL: fcmp_f16_neq:2252; GFX12-FAKE16:       ; %bb.0: ; %entry2253; GFX12-FAKE16-NEXT:    s_clause 0x12254; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242255; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342256; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -12257; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002258; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s102259; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s112260; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s102261; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s112262; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02263; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s22264; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s32265; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS2266; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02267; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS2268; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02269; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s02270; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s12271; GFX12-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v0, v12272; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2273; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null2274; GFX12-FAKE16-NEXT:    s_endpgm2275    ptr addrspace(1) %r,2276    ptr addrspace(1) %a,2277    ptr addrspace(1) %b) {2278entry:2279  %a.val = load volatile half, ptr addrspace(1) %a2280  %b.val = load volatile half, ptr addrspace(1) %b2281  %r.val = fcmp une half %a.val, %b.val2282  %r.val.sext = sext i1 %r.val to i322283  store i32 %r.val.sext, ptr addrspace(1) %r2284  ret void2285}2286 2287define amdgpu_kernel void @fcmp_f16_nlt(2288; SI-LABEL: fcmp_f16_nlt:2289; SI:       ; %bb.0: ; %entry2290; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92291; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2292; SI-NEXT:    s_mov_b32 s11, 0xf0002293; SI-NEXT:    s_mov_b32 s10, -12294; SI-NEXT:    s_mov_b32 s14, s102295; SI-NEXT:    s_mov_b32 s15, s112296; SI-NEXT:    s_mov_b32 s6, s102297; SI-NEXT:    s_mov_b32 s7, s112298; SI-NEXT:    s_waitcnt lgkmcnt(0)2299; SI-NEXT:    s_mov_b32 s12, s22300; SI-NEXT:    s_mov_b32 s13, s32301; SI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc2302; SI-NEXT:    s_waitcnt vmcnt(0)2303; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 glc2304; SI-NEXT:    s_waitcnt vmcnt(0)2305; SI-NEXT:    s_mov_b32 s8, s02306; SI-NEXT:    s_mov_b32 s9, s12307; SI-NEXT:    v_cvt_f32_f16_e32 v0, v02308; SI-NEXT:    v_cvt_f32_f16_e32 v1, v12309; SI-NEXT:    v_cmp_nlt_f32_e32 vcc, v0, v12310; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2311; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 02312; SI-NEXT:    s_endpgm2313;2314; VI-LABEL: fcmp_f16_nlt:2315; VI:       ; %bb.0: ; %entry2316; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242317; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x342318; VI-NEXT:    s_mov_b32 s7, 0xf0002319; VI-NEXT:    s_mov_b32 s6, -12320; VI-NEXT:    s_mov_b32 s14, s62321; VI-NEXT:    s_waitcnt lgkmcnt(0)2322; VI-NEXT:    s_mov_b32 s12, s22323; VI-NEXT:    s_mov_b32 s13, s32324; VI-NEXT:    s_mov_b32 s15, s72325; VI-NEXT:    s_mov_b32 s10, s62326; VI-NEXT:    s_mov_b32 s11, s72327; VI-NEXT:    buffer_load_ushort v0, off, s[12:15], 0 glc2328; VI-NEXT:    s_waitcnt vmcnt(0)2329; VI-NEXT:    buffer_load_ushort v1, off, s[8:11], 0 glc2330; VI-NEXT:    s_waitcnt vmcnt(0)2331; VI-NEXT:    s_mov_b32 s4, s02332; VI-NEXT:    s_mov_b32 s5, s12333; VI-NEXT:    v_cmp_nlt_f16_e32 vcc, v0, v12334; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2335; VI-NEXT:    buffer_store_dword v0, off, s[4:7], 02336; VI-NEXT:    s_endpgm2337;2338; GFX11-TRUE16-LABEL: fcmp_f16_nlt:2339; GFX11-TRUE16:       ; %bb.0: ; %entry2340; GFX11-TRUE16-NEXT:    s_clause 0x12341; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242342; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342343; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -12344; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002345; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s102346; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s112347; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s102348; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s112349; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2350; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s22351; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s32352; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc2353; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2354; GFX11-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc2355; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2356; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s02357; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s12358; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v0.l, v1.l2359; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2360; GFX11-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 02361; GFX11-TRUE16-NEXT:    s_endpgm2362;2363; GFX11-FAKE16-LABEL: fcmp_f16_nlt:2364; GFX11-FAKE16:       ; %bb.0: ; %entry2365; GFX11-FAKE16-NEXT:    s_clause 0x12366; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242367; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342368; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -12369; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002370; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s102371; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s112372; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s102373; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s112374; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2375; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s22376; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s32377; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], 0 glc dlc2378; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2379; GFX11-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], 0 glc dlc2380; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2381; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s02382; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s12383; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v0, v12384; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2385; GFX11-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], 02386; GFX11-FAKE16-NEXT:    s_endpgm2387;2388; GFX12-TRUE16-LABEL: fcmp_f16_nlt:2389; GFX12-TRUE16:       ; %bb.0: ; %entry2390; GFX12-TRUE16-NEXT:    s_clause 0x12391; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242392; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342393; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -12394; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002395; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s102396; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s112397; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s102398; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s112399; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02400; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s22401; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s32402; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS2403; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02404; GFX12-TRUE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS2405; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02406; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s02407; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s12408; GFX12-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v0.l, v1.l2409; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2410; GFX12-TRUE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null2411; GFX12-TRUE16-NEXT:    s_endpgm2412;2413; GFX12-FAKE16-LABEL: fcmp_f16_nlt:2414; GFX12-FAKE16:       ; %bb.0: ; %entry2415; GFX12-FAKE16-NEXT:    s_clause 0x12416; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242417; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342418; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -12419; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002420; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s102421; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s112422; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s102423; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s112424; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02425; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s22426; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s32427; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[12:15], null scope:SCOPE_SYS2428; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02429; GFX12-FAKE16-NEXT:    buffer_load_u16 v1, off, s[4:7], null scope:SCOPE_SYS2430; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02431; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s02432; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s12433; GFX12-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v0, v12434; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2435; GFX12-FAKE16-NEXT:    buffer_store_b32 v0, off, s[8:11], null2436; GFX12-FAKE16-NEXT:    s_endpgm2437    ptr addrspace(1) %r,2438    ptr addrspace(1) %a,2439    ptr addrspace(1) %b) {2440entry:2441  %a.val = load volatile half, ptr addrspace(1) %a2442  %b.val = load volatile half, ptr addrspace(1) %b2443  %r.val = fcmp uge half %a.val, %b.val2444  %r.val.sext = sext i1 %r.val to i322445  store i32 %r.val.sext, ptr addrspace(1) %r2446  ret void2447}2448 2449define amdgpu_kernel void @fcmp_v2f16_lt(2450; SI-LABEL: fcmp_v2f16_lt:2451; SI:       ; %bb.0: ; %entry2452; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92453; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2454; SI-NEXT:    s_mov_b32 s11, 0xf0002455; SI-NEXT:    s_mov_b32 s10, -12456; SI-NEXT:    s_mov_b32 s14, s102457; SI-NEXT:    s_mov_b32 s15, s112458; SI-NEXT:    s_waitcnt lgkmcnt(0)2459; SI-NEXT:    s_mov_b32 s12, s22460; SI-NEXT:    s_mov_b32 s13, s32461; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 02462; SI-NEXT:    s_mov_b32 s6, s102463; SI-NEXT:    s_mov_b32 s7, s112464; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 02465; SI-NEXT:    s_mov_b32 s8, s02466; SI-NEXT:    s_mov_b32 s9, s12467; SI-NEXT:    s_waitcnt vmcnt(1)2468; SI-NEXT:    v_cvt_f32_f16_e32 v2, v02469; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v02470; SI-NEXT:    s_waitcnt vmcnt(0)2471; SI-NEXT:    v_cvt_f32_f16_e32 v3, v12472; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v12473; SI-NEXT:    v_cvt_f32_f16_e32 v4, v02474; SI-NEXT:    v_cvt_f32_f16_e32 v1, v12475; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v2, v32476; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2477; SI-NEXT:    v_cmp_lt_f32_e32 vcc, v4, v12478; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc2479; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 02480; SI-NEXT:    s_endpgm2481;2482; VI-LABEL: fcmp_v2f16_lt:2483; VI:       ; %bb.0: ; %entry2484; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242485; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x342486; VI-NEXT:    s_mov_b32 s7, 0xf0002487; VI-NEXT:    s_mov_b32 s6, -12488; VI-NEXT:    s_mov_b32 s10, s62489; VI-NEXT:    s_mov_b32 s11, s72490; VI-NEXT:    s_waitcnt lgkmcnt(0)2491; VI-NEXT:    s_mov_b32 s12, s22492; VI-NEXT:    s_mov_b32 s13, s32493; VI-NEXT:    s_mov_b32 s14, s62494; VI-NEXT:    s_mov_b32 s15, s72495; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 02496; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 02497; VI-NEXT:    s_mov_b32 s4, s02498; VI-NEXT:    s_mov_b32 s5, s12499; VI-NEXT:    s_waitcnt vmcnt(1)2500; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v02501; VI-NEXT:    s_waitcnt vmcnt(0)2502; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v12503; VI-NEXT:    v_cmp_lt_f16_e32 vcc, v1, v02504; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2505; VI-NEXT:    v_cmp_lt_f16_e32 vcc, v3, v22506; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc2507; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 02508; VI-NEXT:    s_endpgm2509;2510; GFX11-TRUE16-LABEL: fcmp_v2f16_lt:2511; GFX11-TRUE16:       ; %bb.0: ; %entry2512; GFX11-TRUE16-NEXT:    s_clause 0x12513; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242514; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342515; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -12516; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002517; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s102518; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s112519; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s102520; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s112521; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2522; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s22523; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s32524; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 02525; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 02526; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s02527; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s12528; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)2529; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02530; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2531; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12532; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1.l, v0.l2533; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2534; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2535; GFX11-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v3.l, v2.l2536; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2537; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 02538; GFX11-TRUE16-NEXT:    s_endpgm2539;2540; GFX11-FAKE16-LABEL: fcmp_v2f16_lt:2541; GFX11-FAKE16:       ; %bb.0: ; %entry2542; GFX11-FAKE16-NEXT:    s_clause 0x12543; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242544; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342545; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -12546; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002547; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s102548; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s112549; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s102550; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s112551; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2552; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s22553; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s32554; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 02555; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 02556; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s02557; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s12558; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)2559; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02560; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2561; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12562; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1, v02563; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2564; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2565; GFX11-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v3, v22566; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2567; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 02568; GFX11-FAKE16-NEXT:    s_endpgm2569;2570; GFX12-TRUE16-LABEL: fcmp_v2f16_lt:2571; GFX12-TRUE16:       ; %bb.0: ; %entry2572; GFX12-TRUE16-NEXT:    s_clause 0x12573; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242574; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342575; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -12576; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002577; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s102578; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s112579; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s102580; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s112581; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02582; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s22583; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s32584; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null2585; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null2586; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s02587; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s12588; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x12589; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02590; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02591; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12592; GFX12-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1.l, v0.l2593; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2594; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2595; GFX12-TRUE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v3.l, v2.l2596; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)2597; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2598; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null2599; GFX12-TRUE16-NEXT:    s_endpgm2600;2601; GFX12-FAKE16-LABEL: fcmp_v2f16_lt:2602; GFX12-FAKE16:       ; %bb.0: ; %entry2603; GFX12-FAKE16-NEXT:    s_clause 0x12604; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242605; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342606; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -12607; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002608; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s102609; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s112610; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s102611; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s112612; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02613; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s22614; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s32615; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null2616; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null2617; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s02618; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s12619; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x12620; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02621; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02622; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12623; GFX12-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v1, v02624; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2625; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2626; GFX12-FAKE16-NEXT:    v_cmp_lt_f16_e32 vcc_lo, v3, v22627; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)2628; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2629; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null2630; GFX12-FAKE16-NEXT:    s_endpgm2631    ptr addrspace(1) %r,2632    ptr addrspace(1) %a,2633    ptr addrspace(1) %b) {2634entry:2635  %a.val = load <2 x half>, ptr addrspace(1) %a2636  %b.val = load <2 x half>, ptr addrspace(1) %b2637  %r.val = fcmp olt <2 x half> %a.val, %b.val2638  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>2639  store <2 x i32> %r.val.sext, ptr addrspace(1) %r2640  ret void2641}2642 2643 2644define amdgpu_kernel void @fcmp_v2f16_eq(2645; SI-LABEL: fcmp_v2f16_eq:2646; SI:       ; %bb.0: ; %entry2647; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92648; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2649; SI-NEXT:    s_mov_b32 s11, 0xf0002650; SI-NEXT:    s_mov_b32 s10, -12651; SI-NEXT:    s_mov_b32 s14, s102652; SI-NEXT:    s_mov_b32 s15, s112653; SI-NEXT:    s_waitcnt lgkmcnt(0)2654; SI-NEXT:    s_mov_b32 s12, s22655; SI-NEXT:    s_mov_b32 s13, s32656; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 02657; SI-NEXT:    s_mov_b32 s6, s102658; SI-NEXT:    s_mov_b32 s7, s112659; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 02660; SI-NEXT:    s_mov_b32 s8, s02661; SI-NEXT:    s_mov_b32 s9, s12662; SI-NEXT:    s_waitcnt vmcnt(1)2663; SI-NEXT:    v_cvt_f32_f16_e32 v2, v02664; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v02665; SI-NEXT:    s_waitcnt vmcnt(0)2666; SI-NEXT:    v_cvt_f32_f16_e32 v3, v12667; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v12668; SI-NEXT:    v_cvt_f32_f16_e32 v4, v02669; SI-NEXT:    v_cvt_f32_f16_e32 v1, v12670; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v2, v32671; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2672; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v12673; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc2674; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 02675; SI-NEXT:    s_endpgm2676;2677; VI-LABEL: fcmp_v2f16_eq:2678; VI:       ; %bb.0: ; %entry2679; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242680; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x342681; VI-NEXT:    s_mov_b32 s7, 0xf0002682; VI-NEXT:    s_mov_b32 s6, -12683; VI-NEXT:    s_mov_b32 s10, s62684; VI-NEXT:    s_mov_b32 s11, s72685; VI-NEXT:    s_waitcnt lgkmcnt(0)2686; VI-NEXT:    s_mov_b32 s12, s22687; VI-NEXT:    s_mov_b32 s13, s32688; VI-NEXT:    s_mov_b32 s14, s62689; VI-NEXT:    s_mov_b32 s15, s72690; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 02691; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 02692; VI-NEXT:    s_mov_b32 s4, s02693; VI-NEXT:    s_mov_b32 s5, s12694; VI-NEXT:    s_waitcnt vmcnt(1)2695; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v02696; VI-NEXT:    s_waitcnt vmcnt(0)2697; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v12698; VI-NEXT:    v_cmp_eq_f16_e32 vcc, v1, v02699; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2700; VI-NEXT:    v_cmp_eq_f16_e32 vcc, v3, v22701; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc2702; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 02703; VI-NEXT:    s_endpgm2704;2705; GFX11-TRUE16-LABEL: fcmp_v2f16_eq:2706; GFX11-TRUE16:       ; %bb.0: ; %entry2707; GFX11-TRUE16-NEXT:    s_clause 0x12708; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242709; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342710; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -12711; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002712; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s102713; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s112714; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s102715; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s112716; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2717; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s22718; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s32719; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 02720; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 02721; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s02722; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s12723; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)2724; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02725; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2726; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12727; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v1.l, v0.l2728; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2729; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2730; GFX11-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v3.l, v2.l2731; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2732; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 02733; GFX11-TRUE16-NEXT:    s_endpgm2734;2735; GFX11-FAKE16-LABEL: fcmp_v2f16_eq:2736; GFX11-FAKE16:       ; %bb.0: ; %entry2737; GFX11-FAKE16-NEXT:    s_clause 0x12738; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242739; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342740; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -12741; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002742; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s102743; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s112744; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s102745; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s112746; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2747; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s22748; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s32749; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 02750; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 02751; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s02752; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s12753; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)2754; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02755; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2756; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12757; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v1, v02758; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2759; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2760; GFX11-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v3, v22761; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2762; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 02763; GFX11-FAKE16-NEXT:    s_endpgm2764;2765; GFX12-TRUE16-LABEL: fcmp_v2f16_eq:2766; GFX12-TRUE16:       ; %bb.0: ; %entry2767; GFX12-TRUE16-NEXT:    s_clause 0x12768; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242769; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342770; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -12771; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002772; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s102773; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s112774; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s102775; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s112776; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02777; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s22778; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s32779; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null2780; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null2781; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s02782; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s12783; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x12784; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02785; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02786; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12787; GFX12-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v1.l, v0.l2788; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2789; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2790; GFX12-TRUE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v3.l, v2.l2791; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)2792; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2793; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null2794; GFX12-TRUE16-NEXT:    s_endpgm2795;2796; GFX12-FAKE16-LABEL: fcmp_v2f16_eq:2797; GFX12-FAKE16:       ; %bb.0: ; %entry2798; GFX12-FAKE16-NEXT:    s_clause 0x12799; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242800; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342801; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -12802; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002803; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s102804; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s112805; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s102806; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s112807; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x02808; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s22809; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s32810; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null2811; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null2812; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s02813; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s12814; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x12815; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02816; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x02817; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12818; GFX12-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v1, v02819; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2820; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2821; GFX12-FAKE16-NEXT:    v_cmp_eq_f16_e32 vcc_lo, v3, v22822; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)2823; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2824; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null2825; GFX12-FAKE16-NEXT:    s_endpgm2826    ptr addrspace(1) %r,2827    ptr addrspace(1) %a,2828    ptr addrspace(1) %b) {2829entry:2830  %a.val = load <2 x half>, ptr addrspace(1) %a2831  %b.val = load <2 x half>, ptr addrspace(1) %b2832  %r.val = fcmp oeq <2 x half> %a.val, %b.val2833  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>2834  store <2 x i32> %r.val.sext, ptr addrspace(1) %r2835  ret void2836}2837 2838define amdgpu_kernel void @fcmp_v2f16_le(2839; SI-LABEL: fcmp_v2f16_le:2840; SI:       ; %bb.0: ; %entry2841; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92842; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2843; SI-NEXT:    s_mov_b32 s11, 0xf0002844; SI-NEXT:    s_mov_b32 s10, -12845; SI-NEXT:    s_mov_b32 s14, s102846; SI-NEXT:    s_mov_b32 s15, s112847; SI-NEXT:    s_waitcnt lgkmcnt(0)2848; SI-NEXT:    s_mov_b32 s12, s22849; SI-NEXT:    s_mov_b32 s13, s32850; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 02851; SI-NEXT:    s_mov_b32 s6, s102852; SI-NEXT:    s_mov_b32 s7, s112853; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 02854; SI-NEXT:    s_mov_b32 s8, s02855; SI-NEXT:    s_mov_b32 s9, s12856; SI-NEXT:    s_waitcnt vmcnt(1)2857; SI-NEXT:    v_cvt_f32_f16_e32 v2, v02858; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v02859; SI-NEXT:    s_waitcnt vmcnt(0)2860; SI-NEXT:    v_cvt_f32_f16_e32 v3, v12861; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v12862; SI-NEXT:    v_cvt_f32_f16_e32 v4, v02863; SI-NEXT:    v_cvt_f32_f16_e32 v1, v12864; SI-NEXT:    v_cmp_le_f32_e32 vcc, v2, v32865; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2866; SI-NEXT:    v_cmp_le_f32_e32 vcc, v4, v12867; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc2868; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 02869; SI-NEXT:    s_endpgm2870;2871; VI-LABEL: fcmp_v2f16_le:2872; VI:       ; %bb.0: ; %entry2873; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242874; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x342875; VI-NEXT:    s_mov_b32 s7, 0xf0002876; VI-NEXT:    s_mov_b32 s6, -12877; VI-NEXT:    s_mov_b32 s10, s62878; VI-NEXT:    s_mov_b32 s11, s72879; VI-NEXT:    s_waitcnt lgkmcnt(0)2880; VI-NEXT:    s_mov_b32 s12, s22881; VI-NEXT:    s_mov_b32 s13, s32882; VI-NEXT:    s_mov_b32 s14, s62883; VI-NEXT:    s_mov_b32 s15, s72884; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 02885; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 02886; VI-NEXT:    s_mov_b32 s4, s02887; VI-NEXT:    s_mov_b32 s5, s12888; VI-NEXT:    s_waitcnt vmcnt(1)2889; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v02890; VI-NEXT:    s_waitcnt vmcnt(0)2891; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v12892; VI-NEXT:    v_cmp_le_f16_e32 vcc, v1, v02893; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2894; VI-NEXT:    v_cmp_le_f16_e32 vcc, v3, v22895; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc2896; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 02897; VI-NEXT:    s_endpgm2898;2899; GFX11-TRUE16-LABEL: fcmp_v2f16_le:2900; GFX11-TRUE16:       ; %bb.0: ; %entry2901; GFX11-TRUE16-NEXT:    s_clause 0x12902; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242903; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342904; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -12905; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002906; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s102907; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s112908; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s102909; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s112910; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)2911; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s22912; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s32913; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 02914; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 02915; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s02916; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s12917; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)2918; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02919; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)2920; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12921; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1.l, v0.l2922; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2923; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2924; GFX11-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v3.l, v2.l2925; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2926; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 02927; GFX11-TRUE16-NEXT:    s_endpgm2928;2929; GFX11-FAKE16-LABEL: fcmp_v2f16_le:2930; GFX11-FAKE16:       ; %bb.0: ; %entry2931; GFX11-FAKE16-NEXT:    s_clause 0x12932; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242933; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342934; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -12935; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002936; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s102937; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s112938; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s102939; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s112940; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)2941; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s22942; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s32943; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 02944; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 02945; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s02946; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s12947; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)2948; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02949; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)2950; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12951; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1, v02952; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2953; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2954; GFX11-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v3, v22955; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2956; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 02957; GFX11-FAKE16-NEXT:    s_endpgm2958;2959; GFX12-TRUE16-LABEL: fcmp_v2f16_le:2960; GFX12-TRUE16:       ; %bb.0: ; %entry2961; GFX12-TRUE16-NEXT:    s_clause 0x12962; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242963; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342964; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -12965; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160002966; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s102967; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s112968; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s102969; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s112970; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x02971; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s22972; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s32973; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null2974; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null2975; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s02976; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s12977; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x12978; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v02979; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x02980; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v12981; GFX12-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1.l, v0.l2982; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo2983; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)2984; GFX12-TRUE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v3.l, v2.l2985; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)2986; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo2987; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null2988; GFX12-TRUE16-NEXT:    s_endpgm2989;2990; GFX12-FAKE16-LABEL: fcmp_v2f16_le:2991; GFX12-FAKE16:       ; %bb.0: ; %entry2992; GFX12-FAKE16-NEXT:    s_clause 0x12993; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242994; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342995; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -12996; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160002997; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s102998; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s112999; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s103000; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s113001; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03002; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s23003; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s33004; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3005; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3006; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s03007; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s13008; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x13009; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03010; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03011; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13012; GFX12-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v1, v03013; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3014; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3015; GFX12-FAKE16-NEXT:    v_cmp_le_f16_e32 vcc_lo, v3, v23016; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3017; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3018; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3019; GFX12-FAKE16-NEXT:    s_endpgm3020    ptr addrspace(1) %r,3021    ptr addrspace(1) %a,3022    ptr addrspace(1) %b) {3023entry:3024  %a.val = load <2 x half>, ptr addrspace(1) %a3025  %b.val = load <2 x half>, ptr addrspace(1) %b3026  %r.val = fcmp ole <2 x half> %a.val, %b.val3027  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>3028  store <2 x i32> %r.val.sext, ptr addrspace(1) %r3029  ret void3030}3031 3032define amdgpu_kernel void @fcmp_v2f16_gt(3033; SI-LABEL: fcmp_v2f16_gt:3034; SI:       ; %bb.0: ; %entry3035; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93036; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3037; SI-NEXT:    s_mov_b32 s11, 0xf0003038; SI-NEXT:    s_mov_b32 s10, -13039; SI-NEXT:    s_mov_b32 s14, s103040; SI-NEXT:    s_mov_b32 s15, s113041; SI-NEXT:    s_waitcnt lgkmcnt(0)3042; SI-NEXT:    s_mov_b32 s12, s23043; SI-NEXT:    s_mov_b32 s13, s33044; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 03045; SI-NEXT:    s_mov_b32 s6, s103046; SI-NEXT:    s_mov_b32 s7, s113047; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 03048; SI-NEXT:    s_mov_b32 s8, s03049; SI-NEXT:    s_mov_b32 s9, s13050; SI-NEXT:    s_waitcnt vmcnt(1)3051; SI-NEXT:    v_cvt_f32_f16_e32 v2, v03052; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v03053; SI-NEXT:    s_waitcnt vmcnt(0)3054; SI-NEXT:    v_cvt_f32_f16_e32 v3, v13055; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v13056; SI-NEXT:    v_cvt_f32_f16_e32 v4, v03057; SI-NEXT:    v_cvt_f32_f16_e32 v1, v13058; SI-NEXT:    v_cmp_gt_f32_e32 vcc, v2, v33059; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3060; SI-NEXT:    v_cmp_gt_f32_e32 vcc, v4, v13061; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3062; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 03063; SI-NEXT:    s_endpgm3064;3065; VI-LABEL: fcmp_v2f16_gt:3066; VI:       ; %bb.0: ; %entry3067; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243068; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x343069; VI-NEXT:    s_mov_b32 s7, 0xf0003070; VI-NEXT:    s_mov_b32 s6, -13071; VI-NEXT:    s_mov_b32 s10, s63072; VI-NEXT:    s_mov_b32 s11, s73073; VI-NEXT:    s_waitcnt lgkmcnt(0)3074; VI-NEXT:    s_mov_b32 s12, s23075; VI-NEXT:    s_mov_b32 s13, s33076; VI-NEXT:    s_mov_b32 s14, s63077; VI-NEXT:    s_mov_b32 s15, s73078; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 03079; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 03080; VI-NEXT:    s_mov_b32 s4, s03081; VI-NEXT:    s_mov_b32 s5, s13082; VI-NEXT:    s_waitcnt vmcnt(1)3083; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v03084; VI-NEXT:    s_waitcnt vmcnt(0)3085; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v13086; VI-NEXT:    v_cmp_gt_f16_e32 vcc, v1, v03087; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3088; VI-NEXT:    v_cmp_gt_f16_e32 vcc, v3, v23089; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3090; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 03091; VI-NEXT:    s_endpgm3092;3093; GFX11-TRUE16-LABEL: fcmp_v2f16_gt:3094; GFX11-TRUE16:       ; %bb.0: ; %entry3095; GFX11-TRUE16-NEXT:    s_clause 0x13096; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243097; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343098; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -13099; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003100; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s103101; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s113102; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s103103; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s113104; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3105; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s23106; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s33107; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03108; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03109; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s03110; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s13111; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)3112; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03113; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)3114; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13115; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1.l, v0.l3116; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3117; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3118; GFX11-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v3.l, v2.l3119; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3120; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03121; GFX11-TRUE16-NEXT:    s_endpgm3122;3123; GFX11-FAKE16-LABEL: fcmp_v2f16_gt:3124; GFX11-FAKE16:       ; %bb.0: ; %entry3125; GFX11-FAKE16-NEXT:    s_clause 0x13126; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243127; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343128; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -13129; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003130; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s103131; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s113132; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s103133; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s113134; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3135; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s23136; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s33137; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03138; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03139; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s03140; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s13141; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)3142; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03143; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)3144; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13145; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1, v03146; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3147; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3148; GFX11-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v3, v23149; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3150; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03151; GFX11-FAKE16-NEXT:    s_endpgm3152;3153; GFX12-TRUE16-LABEL: fcmp_v2f16_gt:3154; GFX12-TRUE16:       ; %bb.0: ; %entry3155; GFX12-TRUE16-NEXT:    s_clause 0x13156; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243157; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343158; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -13159; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003160; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s103161; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s113162; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s103163; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s113164; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03165; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s23166; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s33167; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3168; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3169; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s03170; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s13171; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x13172; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03173; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03174; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13175; GFX12-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1.l, v0.l3176; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3177; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3178; GFX12-TRUE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v3.l, v2.l3179; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3180; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3181; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3182; GFX12-TRUE16-NEXT:    s_endpgm3183;3184; GFX12-FAKE16-LABEL: fcmp_v2f16_gt:3185; GFX12-FAKE16:       ; %bb.0: ; %entry3186; GFX12-FAKE16-NEXT:    s_clause 0x13187; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243188; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343189; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -13190; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003191; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s103192; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s113193; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s103194; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s113195; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03196; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s23197; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s33198; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3199; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3200; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s03201; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s13202; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x13203; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03204; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03205; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13206; GFX12-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v1, v03207; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3208; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3209; GFX12-FAKE16-NEXT:    v_cmp_gt_f16_e32 vcc_lo, v3, v23210; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3211; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3212; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3213; GFX12-FAKE16-NEXT:    s_endpgm3214    ptr addrspace(1) %r,3215    ptr addrspace(1) %a,3216    ptr addrspace(1) %b) {3217entry:3218  %a.val = load <2 x half>, ptr addrspace(1) %a3219  %b.val = load <2 x half>, ptr addrspace(1) %b3220  %r.val = fcmp ogt <2 x half> %a.val, %b.val3221  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>3222  store <2 x i32> %r.val.sext, ptr addrspace(1) %r3223  ret void3224}3225 3226 3227define amdgpu_kernel void @fcmp_v2f16_lg(3228; SI-LABEL: fcmp_v2f16_lg:3229; SI:       ; %bb.0: ; %entry3230; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93231; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3232; SI-NEXT:    s_mov_b32 s11, 0xf0003233; SI-NEXT:    s_mov_b32 s10, -13234; SI-NEXT:    s_mov_b32 s14, s103235; SI-NEXT:    s_mov_b32 s15, s113236; SI-NEXT:    s_waitcnt lgkmcnt(0)3237; SI-NEXT:    s_mov_b32 s12, s23238; SI-NEXT:    s_mov_b32 s13, s33239; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 03240; SI-NEXT:    s_mov_b32 s6, s103241; SI-NEXT:    s_mov_b32 s7, s113242; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 03243; SI-NEXT:    s_mov_b32 s8, s03244; SI-NEXT:    s_mov_b32 s9, s13245; SI-NEXT:    s_waitcnt vmcnt(1)3246; SI-NEXT:    v_cvt_f32_f16_e32 v2, v03247; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v03248; SI-NEXT:    s_waitcnt vmcnt(0)3249; SI-NEXT:    v_cvt_f32_f16_e32 v3, v13250; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v13251; SI-NEXT:    v_cvt_f32_f16_e32 v4, v03252; SI-NEXT:    v_cvt_f32_f16_e32 v1, v13253; SI-NEXT:    v_cmp_lg_f32_e32 vcc, v2, v33254; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3255; SI-NEXT:    v_cmp_lg_f32_e32 vcc, v4, v13256; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3257; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 03258; SI-NEXT:    s_endpgm3259;3260; VI-LABEL: fcmp_v2f16_lg:3261; VI:       ; %bb.0: ; %entry3262; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243263; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x343264; VI-NEXT:    s_mov_b32 s7, 0xf0003265; VI-NEXT:    s_mov_b32 s6, -13266; VI-NEXT:    s_mov_b32 s10, s63267; VI-NEXT:    s_mov_b32 s11, s73268; VI-NEXT:    s_waitcnt lgkmcnt(0)3269; VI-NEXT:    s_mov_b32 s12, s23270; VI-NEXT:    s_mov_b32 s13, s33271; VI-NEXT:    s_mov_b32 s14, s63272; VI-NEXT:    s_mov_b32 s15, s73273; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 03274; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 03275; VI-NEXT:    s_mov_b32 s4, s03276; VI-NEXT:    s_mov_b32 s5, s13277; VI-NEXT:    s_waitcnt vmcnt(1)3278; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v03279; VI-NEXT:    s_waitcnt vmcnt(0)3280; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v13281; VI-NEXT:    v_cmp_lg_f16_e32 vcc, v1, v03282; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3283; VI-NEXT:    v_cmp_lg_f16_e32 vcc, v3, v23284; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3285; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 03286; VI-NEXT:    s_endpgm3287;3288; GFX11-TRUE16-LABEL: fcmp_v2f16_lg:3289; GFX11-TRUE16:       ; %bb.0: ; %entry3290; GFX11-TRUE16-NEXT:    s_clause 0x13291; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243292; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343293; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -13294; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003295; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s103296; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s113297; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s103298; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s113299; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3300; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s23301; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s33302; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03303; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03304; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s03305; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s13306; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)3307; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03308; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)3309; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13310; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v1.l, v0.l3311; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3312; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3313; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v3.l, v2.l3314; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3315; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03316; GFX11-TRUE16-NEXT:    s_endpgm3317;3318; GFX11-FAKE16-LABEL: fcmp_v2f16_lg:3319; GFX11-FAKE16:       ; %bb.0: ; %entry3320; GFX11-FAKE16-NEXT:    s_clause 0x13321; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243322; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343323; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -13324; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003325; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s103326; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s113327; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s103328; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s113329; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3330; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s23331; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s33332; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03333; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03334; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s03335; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s13336; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)3337; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03338; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)3339; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13340; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v1, v03341; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3342; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3343; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v3, v23344; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3345; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03346; GFX11-FAKE16-NEXT:    s_endpgm3347;3348; GFX12-TRUE16-LABEL: fcmp_v2f16_lg:3349; GFX12-TRUE16:       ; %bb.0: ; %entry3350; GFX12-TRUE16-NEXT:    s_clause 0x13351; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243352; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343353; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -13354; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003355; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s103356; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s113357; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s103358; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s113359; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03360; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s23361; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s33362; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3363; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3364; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s03365; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s13366; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x13367; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03368; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03369; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13370; GFX12-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v1.l, v0.l3371; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3372; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3373; GFX12-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v3.l, v2.l3374; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3375; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3376; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3377; GFX12-TRUE16-NEXT:    s_endpgm3378;3379; GFX12-FAKE16-LABEL: fcmp_v2f16_lg:3380; GFX12-FAKE16:       ; %bb.0: ; %entry3381; GFX12-FAKE16-NEXT:    s_clause 0x13382; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243383; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343384; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -13385; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003386; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s103387; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s113388; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s103389; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s113390; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03391; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s23392; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s33393; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3394; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3395; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s03396; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s13397; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x13398; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03399; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03400; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13401; GFX12-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v1, v03402; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3403; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3404; GFX12-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, v3, v23405; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3406; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3407; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3408; GFX12-FAKE16-NEXT:    s_endpgm3409    ptr addrspace(1) %r,3410    ptr addrspace(1) %a,3411    ptr addrspace(1) %b) {3412entry:3413  %a.val = load <2 x half>, ptr addrspace(1) %a3414  %b.val = load <2 x half>, ptr addrspace(1) %b3415  %r.val = fcmp one <2 x half> %a.val, %b.val3416  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>3417  store <2 x i32> %r.val.sext, ptr addrspace(1) %r3418  ret void3419}3420 3421 3422define amdgpu_kernel void @fcmp_v2f16_ge(3423; SI-LABEL: fcmp_v2f16_ge:3424; SI:       ; %bb.0: ; %entry3425; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93426; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3427; SI-NEXT:    s_mov_b32 s11, 0xf0003428; SI-NEXT:    s_mov_b32 s10, -13429; SI-NEXT:    s_mov_b32 s14, s103430; SI-NEXT:    s_mov_b32 s15, s113431; SI-NEXT:    s_waitcnt lgkmcnt(0)3432; SI-NEXT:    s_mov_b32 s12, s23433; SI-NEXT:    s_mov_b32 s13, s33434; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 03435; SI-NEXT:    s_mov_b32 s6, s103436; SI-NEXT:    s_mov_b32 s7, s113437; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 03438; SI-NEXT:    s_mov_b32 s8, s03439; SI-NEXT:    s_mov_b32 s9, s13440; SI-NEXT:    s_waitcnt vmcnt(1)3441; SI-NEXT:    v_cvt_f32_f16_e32 v2, v03442; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v03443; SI-NEXT:    s_waitcnt vmcnt(0)3444; SI-NEXT:    v_cvt_f32_f16_e32 v3, v13445; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v13446; SI-NEXT:    v_cvt_f32_f16_e32 v4, v03447; SI-NEXT:    v_cvt_f32_f16_e32 v1, v13448; SI-NEXT:    v_cmp_ge_f32_e32 vcc, v2, v33449; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3450; SI-NEXT:    v_cmp_ge_f32_e32 vcc, v4, v13451; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3452; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 03453; SI-NEXT:    s_endpgm3454;3455; VI-LABEL: fcmp_v2f16_ge:3456; VI:       ; %bb.0: ; %entry3457; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243458; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x343459; VI-NEXT:    s_mov_b32 s7, 0xf0003460; VI-NEXT:    s_mov_b32 s6, -13461; VI-NEXT:    s_mov_b32 s10, s63462; VI-NEXT:    s_mov_b32 s11, s73463; VI-NEXT:    s_waitcnt lgkmcnt(0)3464; VI-NEXT:    s_mov_b32 s12, s23465; VI-NEXT:    s_mov_b32 s13, s33466; VI-NEXT:    s_mov_b32 s14, s63467; VI-NEXT:    s_mov_b32 s15, s73468; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 03469; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 03470; VI-NEXT:    s_mov_b32 s4, s03471; VI-NEXT:    s_mov_b32 s5, s13472; VI-NEXT:    s_waitcnt vmcnt(1)3473; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v03474; VI-NEXT:    s_waitcnt vmcnt(0)3475; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v13476; VI-NEXT:    v_cmp_ge_f16_e32 vcc, v1, v03477; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3478; VI-NEXT:    v_cmp_ge_f16_e32 vcc, v3, v23479; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3480; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 03481; VI-NEXT:    s_endpgm3482;3483; GFX11-TRUE16-LABEL: fcmp_v2f16_ge:3484; GFX11-TRUE16:       ; %bb.0: ; %entry3485; GFX11-TRUE16-NEXT:    s_clause 0x13486; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243487; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343488; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -13489; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003490; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s103491; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s113492; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s103493; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s113494; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3495; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s23496; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s33497; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03498; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03499; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s03500; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s13501; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)3502; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03503; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)3504; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13505; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v1.l, v0.l3506; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3507; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3508; GFX11-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v3.l, v2.l3509; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3510; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03511; GFX11-TRUE16-NEXT:    s_endpgm3512;3513; GFX11-FAKE16-LABEL: fcmp_v2f16_ge:3514; GFX11-FAKE16:       ; %bb.0: ; %entry3515; GFX11-FAKE16-NEXT:    s_clause 0x13516; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243517; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343518; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -13519; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003520; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s103521; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s113522; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s103523; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s113524; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3525; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s23526; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s33527; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03528; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03529; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s03530; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s13531; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)3532; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03533; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)3534; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13535; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v1, v03536; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3537; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3538; GFX11-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v3, v23539; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3540; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03541; GFX11-FAKE16-NEXT:    s_endpgm3542;3543; GFX12-TRUE16-LABEL: fcmp_v2f16_ge:3544; GFX12-TRUE16:       ; %bb.0: ; %entry3545; GFX12-TRUE16-NEXT:    s_clause 0x13546; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243547; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343548; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -13549; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003550; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s103551; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s113552; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s103553; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s113554; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03555; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s23556; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s33557; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3558; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3559; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s03560; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s13561; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x13562; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03563; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03564; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13565; GFX12-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v1.l, v0.l3566; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3567; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3568; GFX12-TRUE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v3.l, v2.l3569; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3570; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3571; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3572; GFX12-TRUE16-NEXT:    s_endpgm3573;3574; GFX12-FAKE16-LABEL: fcmp_v2f16_ge:3575; GFX12-FAKE16:       ; %bb.0: ; %entry3576; GFX12-FAKE16-NEXT:    s_clause 0x13577; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243578; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343579; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -13580; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003581; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s103582; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s113583; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s103584; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s113585; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03586; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s23587; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s33588; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3589; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3590; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s03591; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s13592; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x13593; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03594; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03595; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13596; GFX12-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v1, v03597; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3598; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3599; GFX12-FAKE16-NEXT:    v_cmp_ge_f16_e32 vcc_lo, v3, v23600; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3601; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3602; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3603; GFX12-FAKE16-NEXT:    s_endpgm3604    ptr addrspace(1) %r,3605    ptr addrspace(1) %a,3606    ptr addrspace(1) %b) {3607entry:3608  %a.val = load <2 x half>, ptr addrspace(1) %a3609  %b.val = load <2 x half>, ptr addrspace(1) %b3610  %r.val = fcmp oge <2 x half> %a.val, %b.val3611  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>3612  store <2 x i32> %r.val.sext, ptr addrspace(1) %r3613  ret void3614}3615 3616 3617define amdgpu_kernel void @fcmp_v2f16_o(3618; SI-LABEL: fcmp_v2f16_o:3619; SI:       ; %bb.0: ; %entry3620; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93621; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3622; SI-NEXT:    s_mov_b32 s11, 0xf0003623; SI-NEXT:    s_mov_b32 s10, -13624; SI-NEXT:    s_mov_b32 s14, s103625; SI-NEXT:    s_mov_b32 s15, s113626; SI-NEXT:    s_waitcnt lgkmcnt(0)3627; SI-NEXT:    s_mov_b32 s12, s23628; SI-NEXT:    s_mov_b32 s13, s33629; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 03630; SI-NEXT:    s_mov_b32 s6, s103631; SI-NEXT:    s_mov_b32 s7, s113632; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 03633; SI-NEXT:    s_mov_b32 s8, s03634; SI-NEXT:    s_mov_b32 s9, s13635; SI-NEXT:    s_waitcnt vmcnt(1)3636; SI-NEXT:    v_cvt_f32_f16_e32 v2, v03637; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v03638; SI-NEXT:    s_waitcnt vmcnt(0)3639; SI-NEXT:    v_cvt_f32_f16_e32 v3, v13640; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v13641; SI-NEXT:    v_cvt_f32_f16_e32 v4, v03642; SI-NEXT:    v_cvt_f32_f16_e32 v1, v13643; SI-NEXT:    v_cmp_o_f32_e32 vcc, v2, v33644; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3645; SI-NEXT:    v_cmp_o_f32_e32 vcc, v4, v13646; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3647; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 03648; SI-NEXT:    s_endpgm3649;3650; VI-LABEL: fcmp_v2f16_o:3651; VI:       ; %bb.0: ; %entry3652; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243653; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x343654; VI-NEXT:    s_mov_b32 s7, 0xf0003655; VI-NEXT:    s_mov_b32 s6, -13656; VI-NEXT:    s_mov_b32 s10, s63657; VI-NEXT:    s_mov_b32 s11, s73658; VI-NEXT:    s_waitcnt lgkmcnt(0)3659; VI-NEXT:    s_mov_b32 s12, s23660; VI-NEXT:    s_mov_b32 s13, s33661; VI-NEXT:    s_mov_b32 s14, s63662; VI-NEXT:    s_mov_b32 s15, s73663; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 03664; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 03665; VI-NEXT:    s_mov_b32 s4, s03666; VI-NEXT:    s_mov_b32 s5, s13667; VI-NEXT:    s_waitcnt vmcnt(1)3668; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v03669; VI-NEXT:    s_waitcnt vmcnt(0)3670; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v13671; VI-NEXT:    v_cmp_o_f16_e32 vcc, v1, v03672; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3673; VI-NEXT:    v_cmp_o_f16_e32 vcc, v3, v23674; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3675; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 03676; VI-NEXT:    s_endpgm3677;3678; GFX11-TRUE16-LABEL: fcmp_v2f16_o:3679; GFX11-TRUE16:       ; %bb.0: ; %entry3680; GFX11-TRUE16-NEXT:    s_clause 0x13681; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243682; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343683; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -13684; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003685; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s103686; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s113687; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s103688; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s113689; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3690; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s23691; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s33692; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03693; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03694; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s03695; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s13696; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)3697; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03698; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)3699; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13700; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v1.l, v0.l3701; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3702; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3703; GFX11-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v3.l, v2.l3704; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3705; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03706; GFX11-TRUE16-NEXT:    s_endpgm3707;3708; GFX11-FAKE16-LABEL: fcmp_v2f16_o:3709; GFX11-FAKE16:       ; %bb.0: ; %entry3710; GFX11-FAKE16-NEXT:    s_clause 0x13711; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243712; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343713; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -13714; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003715; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s103716; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s113717; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s103718; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s113719; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3720; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s23721; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s33722; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03723; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03724; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s03725; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s13726; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)3727; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03728; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)3729; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13730; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v1, v03731; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3732; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3733; GFX11-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v3, v23734; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3735; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03736; GFX11-FAKE16-NEXT:    s_endpgm3737;3738; GFX12-TRUE16-LABEL: fcmp_v2f16_o:3739; GFX12-TRUE16:       ; %bb.0: ; %entry3740; GFX12-TRUE16-NEXT:    s_clause 0x13741; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243742; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343743; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -13744; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003745; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s103746; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s113747; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s103748; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s113749; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03750; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s23751; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s33752; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3753; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3754; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s03755; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s13756; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x13757; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03758; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03759; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13760; GFX12-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v1.l, v0.l3761; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3762; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3763; GFX12-TRUE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v3.l, v2.l3764; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3765; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3766; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3767; GFX12-TRUE16-NEXT:    s_endpgm3768;3769; GFX12-FAKE16-LABEL: fcmp_v2f16_o:3770; GFX12-FAKE16:       ; %bb.0: ; %entry3771; GFX12-FAKE16-NEXT:    s_clause 0x13772; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243773; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343774; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -13775; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003776; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s103777; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s113778; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s103779; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s113780; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03781; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s23782; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s33783; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3784; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3785; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s03786; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s13787; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x13788; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03789; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03790; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13791; GFX12-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v1, v03792; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3793; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3794; GFX12-FAKE16-NEXT:    v_cmp_o_f16_e32 vcc_lo, v3, v23795; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3796; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3797; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3798; GFX12-FAKE16-NEXT:    s_endpgm3799    ptr addrspace(1) %r,3800    ptr addrspace(1) %a,3801    ptr addrspace(1) %b) {3802entry:3803  %a.val = load <2 x half>, ptr addrspace(1) %a3804  %b.val = load <2 x half>, ptr addrspace(1) %b3805  %r.val = fcmp ord <2 x half> %a.val, %b.val3806  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>3807  store <2 x i32> %r.val.sext, ptr addrspace(1) %r3808  ret void3809}3810 3811 3812define amdgpu_kernel void @fcmp_v2f16_u(3813; SI-LABEL: fcmp_v2f16_u:3814; SI:       ; %bb.0: ; %entry3815; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93816; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3817; SI-NEXT:    s_mov_b32 s11, 0xf0003818; SI-NEXT:    s_mov_b32 s10, -13819; SI-NEXT:    s_mov_b32 s14, s103820; SI-NEXT:    s_mov_b32 s15, s113821; SI-NEXT:    s_waitcnt lgkmcnt(0)3822; SI-NEXT:    s_mov_b32 s12, s23823; SI-NEXT:    s_mov_b32 s13, s33824; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 03825; SI-NEXT:    s_mov_b32 s6, s103826; SI-NEXT:    s_mov_b32 s7, s113827; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 03828; SI-NEXT:    s_mov_b32 s8, s03829; SI-NEXT:    s_mov_b32 s9, s13830; SI-NEXT:    s_waitcnt vmcnt(1)3831; SI-NEXT:    v_cvt_f32_f16_e32 v2, v03832; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v03833; SI-NEXT:    s_waitcnt vmcnt(0)3834; SI-NEXT:    v_cvt_f32_f16_e32 v3, v13835; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v13836; SI-NEXT:    v_cvt_f32_f16_e32 v4, v03837; SI-NEXT:    v_cvt_f32_f16_e32 v1, v13838; SI-NEXT:    v_cmp_u_f32_e32 vcc, v2, v33839; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3840; SI-NEXT:    v_cmp_u_f32_e32 vcc, v4, v13841; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3842; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 03843; SI-NEXT:    s_endpgm3844;3845; VI-LABEL: fcmp_v2f16_u:3846; VI:       ; %bb.0: ; %entry3847; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243848; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x343849; VI-NEXT:    s_mov_b32 s7, 0xf0003850; VI-NEXT:    s_mov_b32 s6, -13851; VI-NEXT:    s_mov_b32 s10, s63852; VI-NEXT:    s_mov_b32 s11, s73853; VI-NEXT:    s_waitcnt lgkmcnt(0)3854; VI-NEXT:    s_mov_b32 s12, s23855; VI-NEXT:    s_mov_b32 s13, s33856; VI-NEXT:    s_mov_b32 s14, s63857; VI-NEXT:    s_mov_b32 s15, s73858; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 03859; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 03860; VI-NEXT:    s_mov_b32 s4, s03861; VI-NEXT:    s_mov_b32 s5, s13862; VI-NEXT:    s_waitcnt vmcnt(1)3863; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v03864; VI-NEXT:    s_waitcnt vmcnt(0)3865; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v13866; VI-NEXT:    v_cmp_u_f16_e32 vcc, v1, v03867; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc3868; VI-NEXT:    v_cmp_u_f16_e32 vcc, v3, v23869; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc3870; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 03871; VI-NEXT:    s_endpgm3872;3873; GFX11-TRUE16-LABEL: fcmp_v2f16_u:3874; GFX11-TRUE16:       ; %bb.0: ; %entry3875; GFX11-TRUE16-NEXT:    s_clause 0x13876; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243877; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343878; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -13879; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003880; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s103881; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s113882; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s103883; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s113884; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)3885; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s23886; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s33887; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03888; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03889; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s03890; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s13891; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)3892; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03893; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)3894; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13895; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v1.l, v0.l3896; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3897; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3898; GFX11-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v3.l, v2.l3899; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3900; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03901; GFX11-TRUE16-NEXT:    s_endpgm3902;3903; GFX11-FAKE16-LABEL: fcmp_v2f16_u:3904; GFX11-FAKE16:       ; %bb.0: ; %entry3905; GFX11-FAKE16-NEXT:    s_clause 0x13906; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243907; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343908; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -13909; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003910; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s103911; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s113912; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s103913; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s113914; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)3915; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s23916; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s33917; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 03918; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 03919; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s03920; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s13921; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)3922; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03923; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)3924; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13925; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v1, v03926; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3927; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3928; GFX11-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v3, v23929; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3930; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 03931; GFX11-FAKE16-NEXT:    s_endpgm3932;3933; GFX12-TRUE16-LABEL: fcmp_v2f16_u:3934; GFX12-TRUE16:       ; %bb.0: ; %entry3935; GFX12-TRUE16-NEXT:    s_clause 0x13936; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243937; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343938; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -13939; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160003940; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s103941; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s113942; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s103943; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s113944; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x03945; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s23946; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s33947; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3948; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3949; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s03950; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s13951; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x13952; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03953; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x03954; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13955; GFX12-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v1.l, v0.l3956; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3957; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3958; GFX12-TRUE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v3.l, v2.l3959; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)3960; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3961; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3962; GFX12-TRUE16-NEXT:    s_endpgm3963;3964; GFX12-FAKE16-LABEL: fcmp_v2f16_u:3965; GFX12-FAKE16:       ; %bb.0: ; %entry3966; GFX12-FAKE16-NEXT:    s_clause 0x13967; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243968; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343969; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -13970; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160003971; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s103972; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s113973; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s103974; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s113975; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x03976; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s23977; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s33978; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null3979; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null3980; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s03981; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s13982; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x13983; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v03984; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x03985; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v13986; GFX12-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v1, v03987; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo3988; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)3989; GFX12-FAKE16-NEXT:    v_cmp_u_f16_e32 vcc_lo, v3, v23990; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)3991; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo3992; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null3993; GFX12-FAKE16-NEXT:    s_endpgm3994    ptr addrspace(1) %r,3995    ptr addrspace(1) %a,3996    ptr addrspace(1) %b) {3997entry:3998  %a.val = load <2 x half>, ptr addrspace(1) %a3999  %b.val = load <2 x half>, ptr addrspace(1) %b4000  %r.val = fcmp uno <2 x half> %a.val, %b.val4001  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>4002  store <2 x i32> %r.val.sext, ptr addrspace(1) %r4003  ret void4004}4005 4006define amdgpu_kernel void @fcmp_v2f16_nge(4007; SI-LABEL: fcmp_v2f16_nge:4008; SI:       ; %bb.0: ; %entry4009; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94010; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4011; SI-NEXT:    s_mov_b32 s11, 0xf0004012; SI-NEXT:    s_mov_b32 s10, -14013; SI-NEXT:    s_mov_b32 s14, s104014; SI-NEXT:    s_mov_b32 s15, s114015; SI-NEXT:    s_waitcnt lgkmcnt(0)4016; SI-NEXT:    s_mov_b32 s12, s24017; SI-NEXT:    s_mov_b32 s13, s34018; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 04019; SI-NEXT:    s_mov_b32 s6, s104020; SI-NEXT:    s_mov_b32 s7, s114021; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04022; SI-NEXT:    s_mov_b32 s8, s04023; SI-NEXT:    s_mov_b32 s9, s14024; SI-NEXT:    s_waitcnt vmcnt(1)4025; SI-NEXT:    v_cvt_f32_f16_e32 v2, v04026; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v04027; SI-NEXT:    s_waitcnt vmcnt(0)4028; SI-NEXT:    v_cvt_f32_f16_e32 v3, v14029; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14030; SI-NEXT:    v_cvt_f32_f16_e32 v4, v04031; SI-NEXT:    v_cvt_f32_f16_e32 v1, v14032; SI-NEXT:    v_cmp_nge_f32_e32 vcc, v2, v34033; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4034; SI-NEXT:    v_cmp_nge_f32_e32 vcc, v4, v14035; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4036; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04037; SI-NEXT:    s_endpgm4038;4039; VI-LABEL: fcmp_v2f16_nge:4040; VI:       ; %bb.0: ; %entry4041; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244042; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x344043; VI-NEXT:    s_mov_b32 s7, 0xf0004044; VI-NEXT:    s_mov_b32 s6, -14045; VI-NEXT:    s_mov_b32 s10, s64046; VI-NEXT:    s_mov_b32 s11, s74047; VI-NEXT:    s_waitcnt lgkmcnt(0)4048; VI-NEXT:    s_mov_b32 s12, s24049; VI-NEXT:    s_mov_b32 s13, s34050; VI-NEXT:    s_mov_b32 s14, s64051; VI-NEXT:    s_mov_b32 s15, s74052; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 04053; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 04054; VI-NEXT:    s_mov_b32 s4, s04055; VI-NEXT:    s_mov_b32 s5, s14056; VI-NEXT:    s_waitcnt vmcnt(1)4057; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v04058; VI-NEXT:    s_waitcnt vmcnt(0)4059; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v14060; VI-NEXT:    v_cmp_nge_f16_e32 vcc, v1, v04061; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4062; VI-NEXT:    v_cmp_nge_f16_e32 vcc, v3, v24063; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4064; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04065; VI-NEXT:    s_endpgm4066;4067; GFX11-TRUE16-LABEL: fcmp_v2f16_nge:4068; GFX11-TRUE16:       ; %bb.0: ; %entry4069; GFX11-TRUE16-NEXT:    s_clause 0x14070; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244071; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344072; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -14073; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004074; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s104075; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s114076; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s104077; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s114078; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4079; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s24080; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s34081; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04082; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04083; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s04084; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s14085; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)4086; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04087; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4088; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14089; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v1.l, v0.l4090; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4091; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4092; GFX11-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v3.l, v2.l4093; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4094; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04095; GFX11-TRUE16-NEXT:    s_endpgm4096;4097; GFX11-FAKE16-LABEL: fcmp_v2f16_nge:4098; GFX11-FAKE16:       ; %bb.0: ; %entry4099; GFX11-FAKE16-NEXT:    s_clause 0x14100; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244101; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344102; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -14103; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004104; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s104105; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s114106; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s104107; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s114108; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4109; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s24110; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s34111; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04112; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04113; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s04114; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s14115; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)4116; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04117; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4118; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14119; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v1, v04120; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4121; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4122; GFX11-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v3, v24123; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4124; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04125; GFX11-FAKE16-NEXT:    s_endpgm4126;4127; GFX12-TRUE16-LABEL: fcmp_v2f16_nge:4128; GFX12-TRUE16:       ; %bb.0: ; %entry4129; GFX12-TRUE16-NEXT:    s_clause 0x14130; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244131; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344132; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -14133; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004134; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s104135; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s114136; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s104137; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s114138; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04139; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s24140; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s34141; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4142; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4143; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s04144; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s14145; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x14146; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04147; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04148; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14149; GFX12-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v1.l, v0.l4150; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4151; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4152; GFX12-TRUE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v3.l, v2.l4153; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4154; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4155; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4156; GFX12-TRUE16-NEXT:    s_endpgm4157;4158; GFX12-FAKE16-LABEL: fcmp_v2f16_nge:4159; GFX12-FAKE16:       ; %bb.0: ; %entry4160; GFX12-FAKE16-NEXT:    s_clause 0x14161; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244162; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344163; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -14164; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004165; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s104166; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s114167; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s104168; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s114169; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04170; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s24171; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s34172; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4173; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4174; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s04175; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s14176; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x14177; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04178; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04179; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14180; GFX12-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v1, v04181; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4182; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4183; GFX12-FAKE16-NEXT:    v_cmp_nge_f16_e32 vcc_lo, v3, v24184; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4185; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4186; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4187; GFX12-FAKE16-NEXT:    s_endpgm4188    ptr addrspace(1) %r,4189    ptr addrspace(1) %a,4190    ptr addrspace(1) %b) {4191entry:4192  %a.val = load <2 x half>, ptr addrspace(1) %a4193  %b.val = load <2 x half>, ptr addrspace(1) %b4194  %r.val = fcmp ult <2 x half> %a.val, %b.val4195  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>4196  store <2 x i32> %r.val.sext, ptr addrspace(1) %r4197  ret void4198}4199 4200define amdgpu_kernel void @fcmp_v2f16_nlg(4201; SI-LABEL: fcmp_v2f16_nlg:4202; SI:       ; %bb.0: ; %entry4203; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94204; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4205; SI-NEXT:    s_mov_b32 s11, 0xf0004206; SI-NEXT:    s_mov_b32 s10, -14207; SI-NEXT:    s_mov_b32 s14, s104208; SI-NEXT:    s_mov_b32 s15, s114209; SI-NEXT:    s_waitcnt lgkmcnt(0)4210; SI-NEXT:    s_mov_b32 s12, s24211; SI-NEXT:    s_mov_b32 s13, s34212; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 04213; SI-NEXT:    s_mov_b32 s6, s104214; SI-NEXT:    s_mov_b32 s7, s114215; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04216; SI-NEXT:    s_mov_b32 s8, s04217; SI-NEXT:    s_mov_b32 s9, s14218; SI-NEXT:    s_waitcnt vmcnt(1)4219; SI-NEXT:    v_cvt_f32_f16_e32 v2, v04220; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v04221; SI-NEXT:    s_waitcnt vmcnt(0)4222; SI-NEXT:    v_cvt_f32_f16_e32 v3, v14223; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14224; SI-NEXT:    v_cvt_f32_f16_e32 v4, v04225; SI-NEXT:    v_cvt_f32_f16_e32 v1, v14226; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, v2, v34227; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4228; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, v4, v14229; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4230; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04231; SI-NEXT:    s_endpgm4232;4233; VI-LABEL: fcmp_v2f16_nlg:4234; VI:       ; %bb.0: ; %entry4235; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244236; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x344237; VI-NEXT:    s_mov_b32 s7, 0xf0004238; VI-NEXT:    s_mov_b32 s6, -14239; VI-NEXT:    s_mov_b32 s10, s64240; VI-NEXT:    s_mov_b32 s11, s74241; VI-NEXT:    s_waitcnt lgkmcnt(0)4242; VI-NEXT:    s_mov_b32 s12, s24243; VI-NEXT:    s_mov_b32 s13, s34244; VI-NEXT:    s_mov_b32 s14, s64245; VI-NEXT:    s_mov_b32 s15, s74246; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 04247; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 04248; VI-NEXT:    s_mov_b32 s4, s04249; VI-NEXT:    s_mov_b32 s5, s14250; VI-NEXT:    s_waitcnt vmcnt(1)4251; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v04252; VI-NEXT:    s_waitcnt vmcnt(0)4253; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v14254; VI-NEXT:    v_cmp_nlg_f16_e32 vcc, v1, v04255; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4256; VI-NEXT:    v_cmp_nlg_f16_e32 vcc, v3, v24257; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4258; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04259; VI-NEXT:    s_endpgm4260;4261; GFX11-TRUE16-LABEL: fcmp_v2f16_nlg:4262; GFX11-TRUE16:       ; %bb.0: ; %entry4263; GFX11-TRUE16-NEXT:    s_clause 0x14264; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244265; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344266; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -14267; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004268; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s104269; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s114270; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s104271; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s114272; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4273; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s24274; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s34275; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04276; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04277; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s04278; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s14279; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)4280; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04281; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4282; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14283; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v1.l, v0.l4284; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4285; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4286; GFX11-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v3.l, v2.l4287; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4288; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04289; GFX11-TRUE16-NEXT:    s_endpgm4290;4291; GFX11-FAKE16-LABEL: fcmp_v2f16_nlg:4292; GFX11-FAKE16:       ; %bb.0: ; %entry4293; GFX11-FAKE16-NEXT:    s_clause 0x14294; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244295; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344296; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -14297; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004298; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s104299; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s114300; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s104301; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s114302; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4303; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s24304; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s34305; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04306; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04307; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s04308; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s14309; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)4310; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04311; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4312; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14313; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v1, v04314; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4315; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4316; GFX11-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v3, v24317; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4318; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04319; GFX11-FAKE16-NEXT:    s_endpgm4320;4321; GFX12-TRUE16-LABEL: fcmp_v2f16_nlg:4322; GFX12-TRUE16:       ; %bb.0: ; %entry4323; GFX12-TRUE16-NEXT:    s_clause 0x14324; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244325; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344326; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -14327; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004328; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s104329; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s114330; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s104331; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s114332; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04333; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s24334; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s34335; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4336; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4337; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s04338; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s14339; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x14340; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04341; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04342; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14343; GFX12-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v1.l, v0.l4344; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4345; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4346; GFX12-TRUE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v3.l, v2.l4347; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4348; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4349; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4350; GFX12-TRUE16-NEXT:    s_endpgm4351;4352; GFX12-FAKE16-LABEL: fcmp_v2f16_nlg:4353; GFX12-FAKE16:       ; %bb.0: ; %entry4354; GFX12-FAKE16-NEXT:    s_clause 0x14355; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244356; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344357; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -14358; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004359; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s104360; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s114361; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s104362; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s114363; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04364; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s24365; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s34366; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4367; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4368; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s04369; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s14370; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x14371; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04372; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04373; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14374; GFX12-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v1, v04375; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4376; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4377; GFX12-FAKE16-NEXT:    v_cmp_nlg_f16_e32 vcc_lo, v3, v24378; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4379; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4380; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4381; GFX12-FAKE16-NEXT:    s_endpgm4382    ptr addrspace(1) %r,4383    ptr addrspace(1) %a,4384    ptr addrspace(1) %b) {4385entry:4386  %a.val = load <2 x half>, ptr addrspace(1) %a4387  %b.val = load <2 x half>, ptr addrspace(1) %b4388  %r.val = fcmp ueq <2 x half> %a.val, %b.val4389  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>4390  store <2 x i32> %r.val.sext, ptr addrspace(1) %r4391  ret void4392}4393 4394 4395define amdgpu_kernel void @fcmp_v2f16_ngt(4396; SI-LABEL: fcmp_v2f16_ngt:4397; SI:       ; %bb.0: ; %entry4398; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94399; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4400; SI-NEXT:    s_mov_b32 s11, 0xf0004401; SI-NEXT:    s_mov_b32 s10, -14402; SI-NEXT:    s_mov_b32 s14, s104403; SI-NEXT:    s_mov_b32 s15, s114404; SI-NEXT:    s_waitcnt lgkmcnt(0)4405; SI-NEXT:    s_mov_b32 s12, s24406; SI-NEXT:    s_mov_b32 s13, s34407; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 04408; SI-NEXT:    s_mov_b32 s6, s104409; SI-NEXT:    s_mov_b32 s7, s114410; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04411; SI-NEXT:    s_mov_b32 s8, s04412; SI-NEXT:    s_mov_b32 s9, s14413; SI-NEXT:    s_waitcnt vmcnt(1)4414; SI-NEXT:    v_cvt_f32_f16_e32 v2, v04415; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v04416; SI-NEXT:    s_waitcnt vmcnt(0)4417; SI-NEXT:    v_cvt_f32_f16_e32 v3, v14418; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14419; SI-NEXT:    v_cvt_f32_f16_e32 v4, v04420; SI-NEXT:    v_cvt_f32_f16_e32 v1, v14421; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v2, v34422; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4423; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v4, v14424; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4425; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04426; SI-NEXT:    s_endpgm4427;4428; VI-LABEL: fcmp_v2f16_ngt:4429; VI:       ; %bb.0: ; %entry4430; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244431; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x344432; VI-NEXT:    s_mov_b32 s7, 0xf0004433; VI-NEXT:    s_mov_b32 s6, -14434; VI-NEXT:    s_mov_b32 s10, s64435; VI-NEXT:    s_mov_b32 s11, s74436; VI-NEXT:    s_waitcnt lgkmcnt(0)4437; VI-NEXT:    s_mov_b32 s12, s24438; VI-NEXT:    s_mov_b32 s13, s34439; VI-NEXT:    s_mov_b32 s14, s64440; VI-NEXT:    s_mov_b32 s15, s74441; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 04442; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 04443; VI-NEXT:    s_mov_b32 s4, s04444; VI-NEXT:    s_mov_b32 s5, s14445; VI-NEXT:    s_waitcnt vmcnt(1)4446; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v04447; VI-NEXT:    s_waitcnt vmcnt(0)4448; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v14449; VI-NEXT:    v_cmp_ngt_f16_e32 vcc, v1, v04450; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4451; VI-NEXT:    v_cmp_ngt_f16_e32 vcc, v3, v24452; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4453; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04454; VI-NEXT:    s_endpgm4455;4456; GFX11-TRUE16-LABEL: fcmp_v2f16_ngt:4457; GFX11-TRUE16:       ; %bb.0: ; %entry4458; GFX11-TRUE16-NEXT:    s_clause 0x14459; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244460; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344461; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -14462; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004463; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s104464; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s114465; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s104466; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s114467; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4468; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s24469; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s34470; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04471; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04472; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s04473; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s14474; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)4475; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04476; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4477; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14478; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v1.l, v0.l4479; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4480; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4481; GFX11-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v3.l, v2.l4482; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4483; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04484; GFX11-TRUE16-NEXT:    s_endpgm4485;4486; GFX11-FAKE16-LABEL: fcmp_v2f16_ngt:4487; GFX11-FAKE16:       ; %bb.0: ; %entry4488; GFX11-FAKE16-NEXT:    s_clause 0x14489; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244490; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344491; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -14492; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004493; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s104494; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s114495; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s104496; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s114497; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4498; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s24499; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s34500; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04501; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04502; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s04503; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s14504; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)4505; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04506; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4507; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14508; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v1, v04509; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4510; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4511; GFX11-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v3, v24512; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4513; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04514; GFX11-FAKE16-NEXT:    s_endpgm4515;4516; GFX12-TRUE16-LABEL: fcmp_v2f16_ngt:4517; GFX12-TRUE16:       ; %bb.0: ; %entry4518; GFX12-TRUE16-NEXT:    s_clause 0x14519; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244520; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344521; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -14522; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004523; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s104524; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s114525; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s104526; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s114527; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04528; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s24529; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s34530; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4531; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4532; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s04533; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s14534; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x14535; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04536; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04537; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14538; GFX12-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v1.l, v0.l4539; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4540; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4541; GFX12-TRUE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v3.l, v2.l4542; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4543; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4544; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4545; GFX12-TRUE16-NEXT:    s_endpgm4546;4547; GFX12-FAKE16-LABEL: fcmp_v2f16_ngt:4548; GFX12-FAKE16:       ; %bb.0: ; %entry4549; GFX12-FAKE16-NEXT:    s_clause 0x14550; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244551; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344552; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -14553; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004554; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s104555; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s114556; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s104557; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s114558; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04559; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s24560; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s34561; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4562; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4563; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s04564; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s14565; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x14566; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04567; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04568; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14569; GFX12-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v1, v04570; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4571; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4572; GFX12-FAKE16-NEXT:    v_cmp_ngt_f16_e32 vcc_lo, v3, v24573; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4574; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4575; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4576; GFX12-FAKE16-NEXT:    s_endpgm4577    ptr addrspace(1) %r,4578    ptr addrspace(1) %a,4579    ptr addrspace(1) %b) {4580entry:4581  %a.val = load <2 x half>, ptr addrspace(1) %a4582  %b.val = load <2 x half>, ptr addrspace(1) %b4583  %r.val = fcmp ule <2 x half> %a.val, %b.val4584  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>4585  store <2 x i32> %r.val.sext, ptr addrspace(1) %r4586  ret void4587}4588 4589define amdgpu_kernel void @fcmp_v2f16_nle(4590; SI-LABEL: fcmp_v2f16_nle:4591; SI:       ; %bb.0: ; %entry4592; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94593; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4594; SI-NEXT:    s_mov_b32 s11, 0xf0004595; SI-NEXT:    s_mov_b32 s10, -14596; SI-NEXT:    s_mov_b32 s14, s104597; SI-NEXT:    s_mov_b32 s15, s114598; SI-NEXT:    s_waitcnt lgkmcnt(0)4599; SI-NEXT:    s_mov_b32 s12, s24600; SI-NEXT:    s_mov_b32 s13, s34601; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 04602; SI-NEXT:    s_mov_b32 s6, s104603; SI-NEXT:    s_mov_b32 s7, s114604; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04605; SI-NEXT:    s_mov_b32 s8, s04606; SI-NEXT:    s_mov_b32 s9, s14607; SI-NEXT:    s_waitcnt vmcnt(1)4608; SI-NEXT:    v_cvt_f32_f16_e32 v2, v04609; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v04610; SI-NEXT:    s_waitcnt vmcnt(0)4611; SI-NEXT:    v_cvt_f32_f16_e32 v3, v14612; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14613; SI-NEXT:    v_cvt_f32_f16_e32 v4, v04614; SI-NEXT:    v_cvt_f32_f16_e32 v1, v14615; SI-NEXT:    v_cmp_nle_f32_e32 vcc, v2, v34616; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4617; SI-NEXT:    v_cmp_nle_f32_e32 vcc, v4, v14618; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4619; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04620; SI-NEXT:    s_endpgm4621;4622; VI-LABEL: fcmp_v2f16_nle:4623; VI:       ; %bb.0: ; %entry4624; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244625; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x344626; VI-NEXT:    s_mov_b32 s7, 0xf0004627; VI-NEXT:    s_mov_b32 s6, -14628; VI-NEXT:    s_mov_b32 s10, s64629; VI-NEXT:    s_mov_b32 s11, s74630; VI-NEXT:    s_waitcnt lgkmcnt(0)4631; VI-NEXT:    s_mov_b32 s12, s24632; VI-NEXT:    s_mov_b32 s13, s34633; VI-NEXT:    s_mov_b32 s14, s64634; VI-NEXT:    s_mov_b32 s15, s74635; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 04636; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 04637; VI-NEXT:    s_mov_b32 s4, s04638; VI-NEXT:    s_mov_b32 s5, s14639; VI-NEXT:    s_waitcnt vmcnt(1)4640; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v04641; VI-NEXT:    s_waitcnt vmcnt(0)4642; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v14643; VI-NEXT:    v_cmp_nle_f16_e32 vcc, v1, v04644; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4645; VI-NEXT:    v_cmp_nle_f16_e32 vcc, v3, v24646; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4647; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04648; VI-NEXT:    s_endpgm4649;4650; GFX11-TRUE16-LABEL: fcmp_v2f16_nle:4651; GFX11-TRUE16:       ; %bb.0: ; %entry4652; GFX11-TRUE16-NEXT:    s_clause 0x14653; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244654; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344655; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -14656; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004657; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s104658; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s114659; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s104660; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s114661; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4662; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s24663; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s34664; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04665; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04666; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s04667; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s14668; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)4669; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04670; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4671; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14672; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v1.l, v0.l4673; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4674; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4675; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v3.l, v2.l4676; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4677; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04678; GFX11-TRUE16-NEXT:    s_endpgm4679;4680; GFX11-FAKE16-LABEL: fcmp_v2f16_nle:4681; GFX11-FAKE16:       ; %bb.0: ; %entry4682; GFX11-FAKE16-NEXT:    s_clause 0x14683; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244684; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344685; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -14686; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004687; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s104688; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s114689; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s104690; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s114691; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4692; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s24693; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s34694; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04695; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04696; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s04697; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s14698; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)4699; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04700; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4701; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14702; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v1, v04703; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4704; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4705; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v3, v24706; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4707; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04708; GFX11-FAKE16-NEXT:    s_endpgm4709;4710; GFX12-TRUE16-LABEL: fcmp_v2f16_nle:4711; GFX12-TRUE16:       ; %bb.0: ; %entry4712; GFX12-TRUE16-NEXT:    s_clause 0x14713; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244714; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344715; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -14716; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004717; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s104718; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s114719; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s104720; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s114721; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04722; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s24723; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s34724; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4725; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4726; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s04727; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s14728; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x14729; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04730; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04731; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14732; GFX12-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v1.l, v0.l4733; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4734; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4735; GFX12-TRUE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v3.l, v2.l4736; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4737; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4738; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4739; GFX12-TRUE16-NEXT:    s_endpgm4740;4741; GFX12-FAKE16-LABEL: fcmp_v2f16_nle:4742; GFX12-FAKE16:       ; %bb.0: ; %entry4743; GFX12-FAKE16-NEXT:    s_clause 0x14744; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244745; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344746; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -14747; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004748; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s104749; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s114750; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s104751; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s114752; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04753; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s24754; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s34755; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4756; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4757; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s04758; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s14759; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x14760; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04761; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04762; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14763; GFX12-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v1, v04764; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4765; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4766; GFX12-FAKE16-NEXT:    v_cmp_nle_f16_e32 vcc_lo, v3, v24767; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4768; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4769; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4770; GFX12-FAKE16-NEXT:    s_endpgm4771    ptr addrspace(1) %r,4772    ptr addrspace(1) %a,4773    ptr addrspace(1) %b) {4774entry:4775  %a.val = load <2 x half>, ptr addrspace(1) %a4776  %b.val = load <2 x half>, ptr addrspace(1) %b4777  %r.val = fcmp ugt <2 x half> %a.val, %b.val4778  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>4779  store <2 x i32> %r.val.sext, ptr addrspace(1) %r4780  ret void4781}4782 4783define amdgpu_kernel void @fcmp_v2f16_neq(4784; SI-LABEL: fcmp_v2f16_neq:4785; SI:       ; %bb.0: ; %entry4786; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94787; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4788; SI-NEXT:    s_mov_b32 s11, 0xf0004789; SI-NEXT:    s_mov_b32 s10, -14790; SI-NEXT:    s_mov_b32 s14, s104791; SI-NEXT:    s_mov_b32 s15, s114792; SI-NEXT:    s_waitcnt lgkmcnt(0)4793; SI-NEXT:    s_mov_b32 s12, s24794; SI-NEXT:    s_mov_b32 s13, s34795; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 04796; SI-NEXT:    s_mov_b32 s6, s104797; SI-NEXT:    s_mov_b32 s7, s114798; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04799; SI-NEXT:    s_mov_b32 s8, s04800; SI-NEXT:    s_mov_b32 s9, s14801; SI-NEXT:    s_waitcnt vmcnt(1)4802; SI-NEXT:    v_cvt_f32_f16_e32 v2, v04803; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v04804; SI-NEXT:    s_waitcnt vmcnt(0)4805; SI-NEXT:    v_cvt_f32_f16_e32 v3, v14806; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v14807; SI-NEXT:    v_cvt_f32_f16_e32 v4, v04808; SI-NEXT:    v_cvt_f32_f16_e32 v1, v14809; SI-NEXT:    v_cmp_neq_f32_e32 vcc, v2, v34810; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4811; SI-NEXT:    v_cmp_neq_f32_e32 vcc, v4, v14812; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4813; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04814; SI-NEXT:    s_endpgm4815;4816; VI-LABEL: fcmp_v2f16_neq:4817; VI:       ; %bb.0: ; %entry4818; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244819; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x344820; VI-NEXT:    s_mov_b32 s7, 0xf0004821; VI-NEXT:    s_mov_b32 s6, -14822; VI-NEXT:    s_mov_b32 s10, s64823; VI-NEXT:    s_mov_b32 s11, s74824; VI-NEXT:    s_waitcnt lgkmcnt(0)4825; VI-NEXT:    s_mov_b32 s12, s24826; VI-NEXT:    s_mov_b32 s13, s34827; VI-NEXT:    s_mov_b32 s14, s64828; VI-NEXT:    s_mov_b32 s15, s74829; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 04830; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 04831; VI-NEXT:    s_mov_b32 s4, s04832; VI-NEXT:    s_mov_b32 s5, s14833; VI-NEXT:    s_waitcnt vmcnt(1)4834; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v04835; VI-NEXT:    s_waitcnt vmcnt(0)4836; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v14837; VI-NEXT:    v_cmp_neq_f16_e32 vcc, v1, v04838; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc4839; VI-NEXT:    v_cmp_neq_f16_e32 vcc, v3, v24840; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc4841; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04842; VI-NEXT:    s_endpgm4843;4844; GFX11-TRUE16-LABEL: fcmp_v2f16_neq:4845; GFX11-TRUE16:       ; %bb.0: ; %entry4846; GFX11-TRUE16-NEXT:    s_clause 0x14847; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244848; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344849; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -14850; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004851; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s104852; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s114853; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s104854; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s114855; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)4856; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s24857; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s34858; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04859; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04860; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s04861; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s14862; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)4863; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04864; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)4865; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14866; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v1.l, v0.l4867; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4868; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4869; GFX11-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v3.l, v2.l4870; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4871; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04872; GFX11-TRUE16-NEXT:    s_endpgm4873;4874; GFX11-FAKE16-LABEL: fcmp_v2f16_neq:4875; GFX11-FAKE16:       ; %bb.0: ; %entry4876; GFX11-FAKE16-NEXT:    s_clause 0x14877; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244878; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344879; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -14880; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004881; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s104882; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s114883; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s104884; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s114885; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)4886; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s24887; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s34888; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 04889; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 04890; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s04891; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s14892; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)4893; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04894; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)4895; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14896; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v1, v04897; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4898; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4899; GFX11-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v3, v24900; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4901; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 04902; GFX11-FAKE16-NEXT:    s_endpgm4903;4904; GFX12-TRUE16-LABEL: fcmp_v2f16_neq:4905; GFX12-TRUE16:       ; %bb.0: ; %entry4906; GFX12-TRUE16-NEXT:    s_clause 0x14907; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244908; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344909; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -14910; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160004911; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s104912; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s114913; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s104914; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s114915; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x04916; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s24917; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s34918; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4919; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4920; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s04921; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s14922; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x14923; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04924; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x04925; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14926; GFX12-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v1.l, v0.l4927; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4928; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4929; GFX12-TRUE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v3.l, v2.l4930; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)4931; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4932; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4933; GFX12-TRUE16-NEXT:    s_endpgm4934;4935; GFX12-FAKE16-LABEL: fcmp_v2f16_neq:4936; GFX12-FAKE16:       ; %bb.0: ; %entry4937; GFX12-FAKE16-NEXT:    s_clause 0x14938; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244939; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344940; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -14941; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160004942; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s104943; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s114944; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s104945; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s114946; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x04947; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s24948; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s34949; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null4950; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null4951; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s04952; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s14953; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x14954; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v04955; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x04956; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v14957; GFX12-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v1, v04958; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo4959; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)4960; GFX12-FAKE16-NEXT:    v_cmp_neq_f16_e32 vcc_lo, v3, v24961; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)4962; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo4963; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null4964; GFX12-FAKE16-NEXT:    s_endpgm4965    ptr addrspace(1) %r,4966    ptr addrspace(1) %a,4967    ptr addrspace(1) %b) {4968entry:4969  %a.val = load <2 x half>, ptr addrspace(1) %a4970  %b.val = load <2 x half>, ptr addrspace(1) %b4971  %r.val = fcmp une <2 x half> %a.val, %b.val4972  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>4973  store <2 x i32> %r.val.sext, ptr addrspace(1) %r4974  ret void4975}4976 4977define amdgpu_kernel void @fcmp_v2f16_nlt(4978; SI-LABEL: fcmp_v2f16_nlt:4979; SI:       ; %bb.0: ; %entry4980; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94981; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4982; SI-NEXT:    s_mov_b32 s11, 0xf0004983; SI-NEXT:    s_mov_b32 s10, -14984; SI-NEXT:    s_mov_b32 s14, s104985; SI-NEXT:    s_mov_b32 s15, s114986; SI-NEXT:    s_waitcnt lgkmcnt(0)4987; SI-NEXT:    s_mov_b32 s12, s24988; SI-NEXT:    s_mov_b32 s13, s34989; SI-NEXT:    buffer_load_dword v0, off, s[12:15], 04990; SI-NEXT:    s_mov_b32 s6, s104991; SI-NEXT:    s_mov_b32 s7, s114992; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04993; SI-NEXT:    s_mov_b32 s8, s04994; SI-NEXT:    s_mov_b32 s9, s14995; SI-NEXT:    s_waitcnt vmcnt(1)4996; SI-NEXT:    v_cvt_f32_f16_e32 v2, v04997; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v04998; SI-NEXT:    s_waitcnt vmcnt(0)4999; SI-NEXT:    v_cvt_f32_f16_e32 v3, v15000; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v15001; SI-NEXT:    v_cvt_f32_f16_e32 v4, v05002; SI-NEXT:    v_cvt_f32_f16_e32 v1, v15003; SI-NEXT:    v_cmp_nlt_f32_e32 vcc, v2, v35004; SI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc5005; SI-NEXT:    v_cmp_nlt_f32_e32 vcc, v4, v15006; SI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc5007; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 05008; SI-NEXT:    s_endpgm5009;5010; VI-LABEL: fcmp_v2f16_nlt:5011; VI:       ; %bb.0: ; %entry5012; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x245013; VI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x345014; VI-NEXT:    s_mov_b32 s7, 0xf0005015; VI-NEXT:    s_mov_b32 s6, -15016; VI-NEXT:    s_mov_b32 s10, s65017; VI-NEXT:    s_mov_b32 s11, s75018; VI-NEXT:    s_waitcnt lgkmcnt(0)5019; VI-NEXT:    s_mov_b32 s12, s25020; VI-NEXT:    s_mov_b32 s13, s35021; VI-NEXT:    s_mov_b32 s14, s65022; VI-NEXT:    s_mov_b32 s15, s75023; VI-NEXT:    buffer_load_dword v0, off, s[8:11], 05024; VI-NEXT:    buffer_load_dword v1, off, s[12:15], 05025; VI-NEXT:    s_mov_b32 s4, s05026; VI-NEXT:    s_mov_b32 s5, s15027; VI-NEXT:    s_waitcnt vmcnt(1)5028; VI-NEXT:    v_lshrrev_b32_e32 v2, 16, v05029; VI-NEXT:    s_waitcnt vmcnt(0)5030; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v15031; VI-NEXT:    v_cmp_nlt_f16_e32 vcc, v1, v05032; VI-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc5033; VI-NEXT:    v_cmp_nlt_f16_e32 vcc, v3, v25034; VI-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc5035; VI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 05036; VI-NEXT:    s_endpgm5037;5038; GFX11-TRUE16-LABEL: fcmp_v2f16_nlt:5039; GFX11-TRUE16:       ; %bb.0: ; %entry5040; GFX11-TRUE16-NEXT:    s_clause 0x15041; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x245042; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x345043; GFX11-TRUE16-NEXT:    s_mov_b32 s10, -15044; GFX11-TRUE16-NEXT:    s_mov_b32 s11, 0x310160005045; GFX11-TRUE16-NEXT:    s_mov_b32 s6, s105046; GFX11-TRUE16-NEXT:    s_mov_b32 s7, s115047; GFX11-TRUE16-NEXT:    s_mov_b32 s14, s105048; GFX11-TRUE16-NEXT:    s_mov_b32 s15, s115049; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5050; GFX11-TRUE16-NEXT:    s_mov_b32 s12, s25051; GFX11-TRUE16-NEXT:    s_mov_b32 s13, s35052; GFX11-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 05053; GFX11-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 05054; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s05055; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s15056; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)5057; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v05058; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5059; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v15060; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v1.l, v0.l5061; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo5062; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)5063; GFX11-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v3.l, v2.l5064; GFX11-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo5065; GFX11-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 05066; GFX11-TRUE16-NEXT:    s_endpgm5067;5068; GFX11-FAKE16-LABEL: fcmp_v2f16_nlt:5069; GFX11-FAKE16:       ; %bb.0: ; %entry5070; GFX11-FAKE16-NEXT:    s_clause 0x15071; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x245072; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x345073; GFX11-FAKE16-NEXT:    s_mov_b32 s10, -15074; GFX11-FAKE16-NEXT:    s_mov_b32 s11, 0x310160005075; GFX11-FAKE16-NEXT:    s_mov_b32 s6, s105076; GFX11-FAKE16-NEXT:    s_mov_b32 s7, s115077; GFX11-FAKE16-NEXT:    s_mov_b32 s14, s105078; GFX11-FAKE16-NEXT:    s_mov_b32 s15, s115079; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5080; GFX11-FAKE16-NEXT:    s_mov_b32 s12, s25081; GFX11-FAKE16-NEXT:    s_mov_b32 s13, s35082; GFX11-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], 05083; GFX11-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], 05084; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s05085; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s15086; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)5087; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v05088; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5089; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v15090; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v1, v05091; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo5092; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)5093; GFX11-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v3, v25094; GFX11-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo5095; GFX11-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], 05096; GFX11-FAKE16-NEXT:    s_endpgm5097;5098; GFX12-TRUE16-LABEL: fcmp_v2f16_nlt:5099; GFX12-TRUE16:       ; %bb.0: ; %entry5100; GFX12-TRUE16-NEXT:    s_clause 0x15101; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x245102; GFX12-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x345103; GFX12-TRUE16-NEXT:    s_mov_b32 s10, -15104; GFX12-TRUE16-NEXT:    s_mov_b32 s11, 0x310160005105; GFX12-TRUE16-NEXT:    s_mov_b32 s6, s105106; GFX12-TRUE16-NEXT:    s_mov_b32 s7, s115107; GFX12-TRUE16-NEXT:    s_mov_b32 s14, s105108; GFX12-TRUE16-NEXT:    s_mov_b32 s15, s115109; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x05110; GFX12-TRUE16-NEXT:    s_mov_b32 s12, s25111; GFX12-TRUE16-NEXT:    s_mov_b32 s13, s35112; GFX12-TRUE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null5113; GFX12-TRUE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null5114; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s05115; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s15116; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x15117; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v05118; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x05119; GFX12-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v15120; GFX12-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v1.l, v0.l5121; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo5122; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)5123; GFX12-TRUE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v3.l, v2.l5124; GFX12-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)5125; GFX12-TRUE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo5126; GFX12-TRUE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null5127; GFX12-TRUE16-NEXT:    s_endpgm5128;5129; GFX12-FAKE16-LABEL: fcmp_v2f16_nlt:5130; GFX12-FAKE16:       ; %bb.0: ; %entry5131; GFX12-FAKE16-NEXT:    s_clause 0x15132; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x245133; GFX12-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x345134; GFX12-FAKE16-NEXT:    s_mov_b32 s10, -15135; GFX12-FAKE16-NEXT:    s_mov_b32 s11, 0x310160005136; GFX12-FAKE16-NEXT:    s_mov_b32 s6, s105137; GFX12-FAKE16-NEXT:    s_mov_b32 s7, s115138; GFX12-FAKE16-NEXT:    s_mov_b32 s14, s105139; GFX12-FAKE16-NEXT:    s_mov_b32 s15, s115140; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x05141; GFX12-FAKE16-NEXT:    s_mov_b32 s12, s25142; GFX12-FAKE16-NEXT:    s_mov_b32 s13, s35143; GFX12-FAKE16-NEXT:    buffer_load_b32 v0, off, s[4:7], null5144; GFX12-FAKE16-NEXT:    buffer_load_b32 v1, off, s[12:15], null5145; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s05146; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s15147; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x15148; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v2, 16, v05149; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x05150; GFX12-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v15151; GFX12-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v1, v05152; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc_lo5153; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3)5154; GFX12-FAKE16-NEXT:    v_cmp_nlt_f16_e32 vcc_lo, v3, v25155; GFX12-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)5156; GFX12-FAKE16-NEXT:    v_cndmask_b32_e64 v1, 0, -1, vcc_lo5157; GFX12-FAKE16-NEXT:    buffer_store_b64 v[0:1], off, s[8:11], null5158; GFX12-FAKE16-NEXT:    s_endpgm5159    ptr addrspace(1) %r,5160    ptr addrspace(1) %a,5161    ptr addrspace(1) %b) {5162entry:5163  %a.val = load <2 x half>, ptr addrspace(1) %a5164  %b.val = load <2 x half>, ptr addrspace(1) %b5165  %r.val = fcmp uge <2 x half> %a.val, %b.val5166  %r.val.sext = sext <2 x i1> %r.val to <2 x i32>5167  store <2 x i32> %r.val.sext, ptr addrspace(1) %r5168  ret void5169}5170 5171declare half @llvm.fabs.f16(half) #15172 5173attributes #0 = { nounwind }5174attributes #1 = { nounwind readnone }5175;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:5176; GFX12: {{.*}}5177