brintos

brintos / llvm-project-archived public Read only

0
0
Text · 74.2 KiB · 366b71b Raw
1978 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize64" < %s | FileCheck -check-prefixes=GCN,GFX11,SDAG-GFX11 %s3; RUN: llc -mtriple=amdgcn -mcpu=fiji < %s | FileCheck -check-prefixes=GCN,VI,SDAG-VI %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,SDAG-GFX9 %s5 6; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize64" < %s 2>%t | FileCheck -check-prefixes=GCN,GFX11,GISEL-GFX11 %s7; RUN: FileCheck --check-prefix=ERR %s < %t8; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=fiji < %s 2>%t | FileCheck -check-prefixes=GCN,VI,GISEL-VI %s9; RUN: FileCheck --check-prefix=ERR %s < %t10; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx900 < %s 2>%t | FileCheck -check-prefixes=GCN,GFX9,GISEL-GFX9 %s11; RUN: FileCheck --check-prefix=ERR %s < %t12 13; Note: GlobalISel abort is disabled so we don't crash on i1 inputs.14;  They are allowed in DAGISel but we (intentionally) don't support them15;  in GlobalISel.16 17; ERR: warning: Instruction selection used fallback path for v_icmp_i1_ne018 19declare i64 @llvm.amdgcn.icmp.i32(i32, i32, i32) #020declare i64 @llvm.amdgcn.icmp.i64(i64, i64, i32) #021declare i64 @llvm.amdgcn.icmp.i16(i16, i16, i32) #022declare i64 @llvm.amdgcn.icmp.i1(i1, i1, i32) #023 24define amdgpu_kernel void @v_icmp_i32_eq(ptr addrspace(1) %out, i32 %src) {25; GFX11-LABEL: v_icmp_i32_eq:26; GFX11:       ; %bb.0:27; GFX11-NEXT:    s_clause 0x128; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c29; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2430; GFX11-NEXT:    v_mov_b32_e32 v2, 031; GFX11-NEXT:    s_waitcnt lgkmcnt(0)32; GFX11-NEXT:    v_cmp_eq_u32_e64 s[2:3], 0x64, s233; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)34; GFX11-NEXT:    v_mov_b32_e32 v0, s235; GFX11-NEXT:    v_mov_b32_e32 v1, s336; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]37; GFX11-NEXT:    s_endpgm38;39; SDAG-VI-LABEL: v_icmp_i32_eq:40; SDAG-VI:       ; %bb.0:41; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c42; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2443; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x6444; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)45; SDAG-VI-NEXT:    v_cmp_eq_u32_e64 s[2:3], s2, v046; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s047; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s248; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s149; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s350; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]51; SDAG-VI-NEXT:    s_endpgm52;53; GFX9-LABEL: v_icmp_i32_eq:54; GFX9:       ; %bb.0:55; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c56; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2457; GFX9-NEXT:    v_mov_b32_e32 v0, 0x6458; GFX9-NEXT:    v_mov_b32_e32 v2, 059; GFX9-NEXT:    s_waitcnt lgkmcnt(0)60; GFX9-NEXT:    v_cmp_eq_u32_e64 s[2:3], s2, v061; GFX9-NEXT:    v_mov_b32_e32 v0, s262; GFX9-NEXT:    v_mov_b32_e32 v1, s363; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]64; GFX9-NEXT:    s_endpgm65;66; GISEL-VI-LABEL: v_icmp_i32_eq:67; GISEL-VI:       ; %bb.0:68; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c69; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2470; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x6471; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)72; GISEL-VI-NEXT:    v_cmp_eq_u32_e64 s[2:3], s2, v073; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s274; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s175; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s376; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s077; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]78; GISEL-VI-NEXT:    s_endpgm79  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 32)80  store i64 %result, ptr addrspace(1) %out81  ret void82}83 84define amdgpu_kernel void @v_icmp_i32(ptr addrspace(1) %out, i32 %src) {85; SDAG-GFX11-LABEL: v_icmp_i32:86; SDAG-GFX11:       ; %bb.0:87; SDAG-GFX11-NEXT:    s_endpgm88;89; SDAG-VI-LABEL: v_icmp_i32:90; SDAG-VI:       ; %bb.0:91; SDAG-VI-NEXT:    s_endpgm92;93; SDAG-GFX9-LABEL: v_icmp_i32:94; SDAG-GFX9:       ; %bb.0:95; SDAG-GFX9-NEXT:    s_endpgm96;97; GISEL-GFX11-LABEL: v_icmp_i32:98; GISEL-GFX11:       ; %bb.0:99; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24100; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, 0101; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)102; GISEL-GFX11-NEXT:    global_store_b64 v0, v[0:1], s[0:1]103; GISEL-GFX11-NEXT:    s_endpgm104;105; GISEL-VI-LABEL: v_icmp_i32:106; GISEL-VI:       ; %bb.0:107; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24108; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)109; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s0110; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s1111; GISEL-VI-NEXT:    flat_store_dwordx2 v[0:1], v[0:1]112; GISEL-VI-NEXT:    s_endpgm113;114; GISEL-GFX9-LABEL: v_icmp_i32:115; GISEL-GFX9:       ; %bb.0:116; GISEL-GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24117; GISEL-GFX9-NEXT:    v_mov_b32_e32 v0, 0118; GISEL-GFX9-NEXT:    s_waitcnt lgkmcnt(0)119; GISEL-GFX9-NEXT:    global_store_dwordx2 v0, v[0:1], s[0:1]120; GISEL-GFX9-NEXT:    s_endpgm121  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 30)122  store i64 %result, ptr addrspace(1) %out123  ret void124}125 126define amdgpu_kernel void @v_icmp_i32_ne(ptr addrspace(1) %out, i32 %src) {127; GFX11-LABEL: v_icmp_i32_ne:128; GFX11:       ; %bb.0:129; GFX11-NEXT:    s_clause 0x1130; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c131; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24132; GFX11-NEXT:    v_mov_b32_e32 v2, 0133; GFX11-NEXT:    s_waitcnt lgkmcnt(0)134; GFX11-NEXT:    v_cmp_ne_u32_e64 s[2:3], 0x64, s2135; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)136; GFX11-NEXT:    v_mov_b32_e32 v0, s2137; GFX11-NEXT:    v_mov_b32_e32 v1, s3138; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]139; GFX11-NEXT:    s_endpgm140;141; SDAG-VI-LABEL: v_icmp_i32_ne:142; SDAG-VI:       ; %bb.0:143; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c144; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24145; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64146; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)147; SDAG-VI-NEXT:    v_cmp_ne_u32_e64 s[2:3], s2, v0148; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0149; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2150; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1151; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3152; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]153; SDAG-VI-NEXT:    s_endpgm154;155; GFX9-LABEL: v_icmp_i32_ne:156; GFX9:       ; %bb.0:157; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c158; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24159; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64160; GFX9-NEXT:    v_mov_b32_e32 v2, 0161; GFX9-NEXT:    s_waitcnt lgkmcnt(0)162; GFX9-NEXT:    v_cmp_ne_u32_e64 s[2:3], s2, v0163; GFX9-NEXT:    v_mov_b32_e32 v0, s2164; GFX9-NEXT:    v_mov_b32_e32 v1, s3165; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]166; GFX9-NEXT:    s_endpgm167;168; GISEL-VI-LABEL: v_icmp_i32_ne:169; GISEL-VI:       ; %bb.0:170; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c171; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24172; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64173; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)174; GISEL-VI-NEXT:    v_cmp_ne_u32_e64 s[2:3], s2, v0175; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2176; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1177; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3178; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0179; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]180; GISEL-VI-NEXT:    s_endpgm181  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 33)182  store i64 %result, ptr addrspace(1) %out183  ret void184}185 186define amdgpu_kernel void @v_icmp_i32_ugt(ptr addrspace(1) %out, i32 %src) {187; GFX11-LABEL: v_icmp_i32_ugt:188; GFX11:       ; %bb.0:189; GFX11-NEXT:    s_clause 0x1190; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c191; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24192; GFX11-NEXT:    v_mov_b32_e32 v2, 0193; GFX11-NEXT:    s_waitcnt lgkmcnt(0)194; GFX11-NEXT:    v_cmp_lt_u32_e64 s[2:3], 0x64, s2195; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)196; GFX11-NEXT:    v_mov_b32_e32 v0, s2197; GFX11-NEXT:    v_mov_b32_e32 v1, s3198; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]199; GFX11-NEXT:    s_endpgm200;201; SDAG-VI-LABEL: v_icmp_i32_ugt:202; SDAG-VI:       ; %bb.0:203; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c204; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24205; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64206; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)207; SDAG-VI-NEXT:    v_cmp_gt_u32_e64 s[2:3], s2, v0208; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0209; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2210; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1211; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3212; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]213; SDAG-VI-NEXT:    s_endpgm214;215; GFX9-LABEL: v_icmp_i32_ugt:216; GFX9:       ; %bb.0:217; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c218; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24219; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64220; GFX9-NEXT:    v_mov_b32_e32 v2, 0221; GFX9-NEXT:    s_waitcnt lgkmcnt(0)222; GFX9-NEXT:    v_cmp_gt_u32_e64 s[2:3], s2, v0223; GFX9-NEXT:    v_mov_b32_e32 v0, s2224; GFX9-NEXT:    v_mov_b32_e32 v1, s3225; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]226; GFX9-NEXT:    s_endpgm227;228; GISEL-VI-LABEL: v_icmp_i32_ugt:229; GISEL-VI:       ; %bb.0:230; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c231; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24232; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64233; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)234; GISEL-VI-NEXT:    v_cmp_gt_u32_e64 s[2:3], s2, v0235; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2236; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1237; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3238; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0239; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]240; GISEL-VI-NEXT:    s_endpgm241  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 34)242  store i64 %result, ptr addrspace(1) %out243  ret void244}245 246define amdgpu_kernel void @v_icmp_i32_uge(ptr addrspace(1) %out, i32 %src) {247; GFX11-LABEL: v_icmp_i32_uge:248; GFX11:       ; %bb.0:249; GFX11-NEXT:    s_clause 0x1250; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c251; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24252; GFX11-NEXT:    v_mov_b32_e32 v2, 0253; GFX11-NEXT:    s_waitcnt lgkmcnt(0)254; GFX11-NEXT:    v_cmp_le_u32_e64 s[2:3], 0x64, s2255; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)256; GFX11-NEXT:    v_mov_b32_e32 v0, s2257; GFX11-NEXT:    v_mov_b32_e32 v1, s3258; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]259; GFX11-NEXT:    s_endpgm260;261; SDAG-VI-LABEL: v_icmp_i32_uge:262; SDAG-VI:       ; %bb.0:263; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c264; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24265; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64266; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)267; SDAG-VI-NEXT:    v_cmp_ge_u32_e64 s[2:3], s2, v0268; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0269; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2270; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1271; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3272; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]273; SDAG-VI-NEXT:    s_endpgm274;275; GFX9-LABEL: v_icmp_i32_uge:276; GFX9:       ; %bb.0:277; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c278; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24279; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64280; GFX9-NEXT:    v_mov_b32_e32 v2, 0281; GFX9-NEXT:    s_waitcnt lgkmcnt(0)282; GFX9-NEXT:    v_cmp_ge_u32_e64 s[2:3], s2, v0283; GFX9-NEXT:    v_mov_b32_e32 v0, s2284; GFX9-NEXT:    v_mov_b32_e32 v1, s3285; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]286; GFX9-NEXT:    s_endpgm287;288; GISEL-VI-LABEL: v_icmp_i32_uge:289; GISEL-VI:       ; %bb.0:290; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c291; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24292; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64293; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)294; GISEL-VI-NEXT:    v_cmp_ge_u32_e64 s[2:3], s2, v0295; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2296; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1297; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3298; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0299; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]300; GISEL-VI-NEXT:    s_endpgm301  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 35)302  store i64 %result, ptr addrspace(1) %out303  ret void304}305 306define amdgpu_kernel void @v_icmp_i32_ult(ptr addrspace(1) %out, i32 %src) {307; GFX11-LABEL: v_icmp_i32_ult:308; GFX11:       ; %bb.0:309; GFX11-NEXT:    s_clause 0x1310; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c311; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24312; GFX11-NEXT:    v_mov_b32_e32 v2, 0313; GFX11-NEXT:    s_waitcnt lgkmcnt(0)314; GFX11-NEXT:    v_cmp_gt_u32_e64 s[2:3], 0x64, s2315; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)316; GFX11-NEXT:    v_mov_b32_e32 v0, s2317; GFX11-NEXT:    v_mov_b32_e32 v1, s3318; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]319; GFX11-NEXT:    s_endpgm320;321; SDAG-VI-LABEL: v_icmp_i32_ult:322; SDAG-VI:       ; %bb.0:323; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c324; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24325; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64326; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)327; SDAG-VI-NEXT:    v_cmp_lt_u32_e64 s[2:3], s2, v0328; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0329; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2330; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1331; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3332; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]333; SDAG-VI-NEXT:    s_endpgm334;335; GFX9-LABEL: v_icmp_i32_ult:336; GFX9:       ; %bb.0:337; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c338; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24339; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64340; GFX9-NEXT:    v_mov_b32_e32 v2, 0341; GFX9-NEXT:    s_waitcnt lgkmcnt(0)342; GFX9-NEXT:    v_cmp_lt_u32_e64 s[2:3], s2, v0343; GFX9-NEXT:    v_mov_b32_e32 v0, s2344; GFX9-NEXT:    v_mov_b32_e32 v1, s3345; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]346; GFX9-NEXT:    s_endpgm347;348; GISEL-VI-LABEL: v_icmp_i32_ult:349; GISEL-VI:       ; %bb.0:350; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c351; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24352; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64353; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)354; GISEL-VI-NEXT:    v_cmp_lt_u32_e64 s[2:3], s2, v0355; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2356; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1357; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3358; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0359; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]360; GISEL-VI-NEXT:    s_endpgm361  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 36)362  store i64 %result, ptr addrspace(1) %out363  ret void364}365 366define amdgpu_kernel void @v_icmp_i32_ule(ptr addrspace(1) %out, i32 %src) {367; GFX11-LABEL: v_icmp_i32_ule:368; GFX11:       ; %bb.0:369; GFX11-NEXT:    s_clause 0x1370; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c371; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24372; GFX11-NEXT:    v_mov_b32_e32 v2, 0373; GFX11-NEXT:    s_waitcnt lgkmcnt(0)374; GFX11-NEXT:    v_cmp_ge_u32_e64 s[2:3], 0x64, s2375; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)376; GFX11-NEXT:    v_mov_b32_e32 v0, s2377; GFX11-NEXT:    v_mov_b32_e32 v1, s3378; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]379; GFX11-NEXT:    s_endpgm380;381; SDAG-VI-LABEL: v_icmp_i32_ule:382; SDAG-VI:       ; %bb.0:383; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c384; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24385; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64386; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)387; SDAG-VI-NEXT:    v_cmp_le_u32_e64 s[2:3], s2, v0388; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0389; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2390; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1391; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3392; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]393; SDAG-VI-NEXT:    s_endpgm394;395; GFX9-LABEL: v_icmp_i32_ule:396; GFX9:       ; %bb.0:397; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c398; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24399; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64400; GFX9-NEXT:    v_mov_b32_e32 v2, 0401; GFX9-NEXT:    s_waitcnt lgkmcnt(0)402; GFX9-NEXT:    v_cmp_le_u32_e64 s[2:3], s2, v0403; GFX9-NEXT:    v_mov_b32_e32 v0, s2404; GFX9-NEXT:    v_mov_b32_e32 v1, s3405; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]406; GFX9-NEXT:    s_endpgm407;408; GISEL-VI-LABEL: v_icmp_i32_ule:409; GISEL-VI:       ; %bb.0:410; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c411; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24412; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64413; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)414; GISEL-VI-NEXT:    v_cmp_le_u32_e64 s[2:3], s2, v0415; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2416; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1417; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3418; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0419; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]420; GISEL-VI-NEXT:    s_endpgm421  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 37)422  store i64 %result, ptr addrspace(1) %out423  ret void424}425 426define amdgpu_kernel void @v_icmp_i32_sgt(ptr addrspace(1) %out, i32 %src) #1 {427; GFX11-LABEL: v_icmp_i32_sgt:428; GFX11:       ; %bb.0:429; GFX11-NEXT:    s_clause 0x1430; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c431; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24432; GFX11-NEXT:    v_mov_b32_e32 v2, 0433; GFX11-NEXT:    s_waitcnt lgkmcnt(0)434; GFX11-NEXT:    v_cmp_lt_i32_e64 s[2:3], 0x64, s2435; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)436; GFX11-NEXT:    v_mov_b32_e32 v0, s2437; GFX11-NEXT:    v_mov_b32_e32 v1, s3438; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]439; GFX11-NEXT:    s_endpgm440;441; SDAG-VI-LABEL: v_icmp_i32_sgt:442; SDAG-VI:       ; %bb.0:443; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c444; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24445; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64446; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)447; SDAG-VI-NEXT:    v_cmp_gt_i32_e64 s[2:3], s2, v0448; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0449; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2450; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1451; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3452; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]453; SDAG-VI-NEXT:    s_endpgm454;455; GFX9-LABEL: v_icmp_i32_sgt:456; GFX9:       ; %bb.0:457; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c458; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24459; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64460; GFX9-NEXT:    v_mov_b32_e32 v2, 0461; GFX9-NEXT:    s_waitcnt lgkmcnt(0)462; GFX9-NEXT:    v_cmp_gt_i32_e64 s[2:3], s2, v0463; GFX9-NEXT:    v_mov_b32_e32 v0, s2464; GFX9-NEXT:    v_mov_b32_e32 v1, s3465; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]466; GFX9-NEXT:    s_endpgm467;468; GISEL-VI-LABEL: v_icmp_i32_sgt:469; GISEL-VI:       ; %bb.0:470; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c471; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24472; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64473; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)474; GISEL-VI-NEXT:    v_cmp_gt_i32_e64 s[2:3], s2, v0475; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2476; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1477; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3478; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0479; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]480; GISEL-VI-NEXT:    s_endpgm481  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 38)482  store i64 %result, ptr addrspace(1) %out483  ret void484}485 486define amdgpu_kernel void @v_icmp_i32_sge(ptr addrspace(1) %out, i32 %src) {487; GFX11-LABEL: v_icmp_i32_sge:488; GFX11:       ; %bb.0:489; GFX11-NEXT:    s_clause 0x1490; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c491; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24492; GFX11-NEXT:    v_mov_b32_e32 v2, 0493; GFX11-NEXT:    s_waitcnt lgkmcnt(0)494; GFX11-NEXT:    v_cmp_le_i32_e64 s[2:3], 0x64, s2495; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)496; GFX11-NEXT:    v_mov_b32_e32 v0, s2497; GFX11-NEXT:    v_mov_b32_e32 v1, s3498; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]499; GFX11-NEXT:    s_endpgm500;501; SDAG-VI-LABEL: v_icmp_i32_sge:502; SDAG-VI:       ; %bb.0:503; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c504; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24505; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64506; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)507; SDAG-VI-NEXT:    v_cmp_ge_i32_e64 s[2:3], s2, v0508; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0509; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2510; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1511; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3512; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]513; SDAG-VI-NEXT:    s_endpgm514;515; GFX9-LABEL: v_icmp_i32_sge:516; GFX9:       ; %bb.0:517; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c518; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24519; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64520; GFX9-NEXT:    v_mov_b32_e32 v2, 0521; GFX9-NEXT:    s_waitcnt lgkmcnt(0)522; GFX9-NEXT:    v_cmp_ge_i32_e64 s[2:3], s2, v0523; GFX9-NEXT:    v_mov_b32_e32 v0, s2524; GFX9-NEXT:    v_mov_b32_e32 v1, s3525; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]526; GFX9-NEXT:    s_endpgm527;528; GISEL-VI-LABEL: v_icmp_i32_sge:529; GISEL-VI:       ; %bb.0:530; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c531; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24532; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64533; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)534; GISEL-VI-NEXT:    v_cmp_ge_i32_e64 s[2:3], s2, v0535; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2536; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1537; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3538; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0539; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]540; GISEL-VI-NEXT:    s_endpgm541  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 39)542  store i64 %result, ptr addrspace(1) %out543  ret void544}545 546define amdgpu_kernel void @v_icmp_i32_slt(ptr addrspace(1) %out, i32 %src) {547; GFX11-LABEL: v_icmp_i32_slt:548; GFX11:       ; %bb.0:549; GFX11-NEXT:    s_clause 0x1550; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c551; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24552; GFX11-NEXT:    v_mov_b32_e32 v2, 0553; GFX11-NEXT:    s_waitcnt lgkmcnt(0)554; GFX11-NEXT:    v_cmp_gt_i32_e64 s[2:3], 0x64, s2555; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)556; GFX11-NEXT:    v_mov_b32_e32 v0, s2557; GFX11-NEXT:    v_mov_b32_e32 v1, s3558; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]559; GFX11-NEXT:    s_endpgm560;561; SDAG-VI-LABEL: v_icmp_i32_slt:562; SDAG-VI:       ; %bb.0:563; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c564; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24565; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64566; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)567; SDAG-VI-NEXT:    v_cmp_lt_i32_e64 s[2:3], s2, v0568; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0569; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2570; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1571; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3572; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]573; SDAG-VI-NEXT:    s_endpgm574;575; GFX9-LABEL: v_icmp_i32_slt:576; GFX9:       ; %bb.0:577; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c578; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24579; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64580; GFX9-NEXT:    v_mov_b32_e32 v2, 0581; GFX9-NEXT:    s_waitcnt lgkmcnt(0)582; GFX9-NEXT:    v_cmp_lt_i32_e64 s[2:3], s2, v0583; GFX9-NEXT:    v_mov_b32_e32 v0, s2584; GFX9-NEXT:    v_mov_b32_e32 v1, s3585; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]586; GFX9-NEXT:    s_endpgm587;588; GISEL-VI-LABEL: v_icmp_i32_slt:589; GISEL-VI:       ; %bb.0:590; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c591; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24592; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64593; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)594; GISEL-VI-NEXT:    v_cmp_lt_i32_e64 s[2:3], s2, v0595; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2596; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1597; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3598; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0599; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]600; GISEL-VI-NEXT:    s_endpgm601  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 40)602  store i64 %result, ptr addrspace(1) %out603  ret void604}605 606define amdgpu_kernel void @v_icmp_i32_sle(ptr addrspace(1) %out, i32 %src) {607; GFX11-LABEL: v_icmp_i32_sle:608; GFX11:       ; %bb.0:609; GFX11-NEXT:    s_clause 0x1610; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c611; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x24612; GFX11-NEXT:    v_mov_b32_e32 v2, 0613; GFX11-NEXT:    s_waitcnt lgkmcnt(0)614; GFX11-NEXT:    v_cmp_ge_i32_e64 s[2:3], 0x64, s2615; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)616; GFX11-NEXT:    v_mov_b32_e32 v0, s2617; GFX11-NEXT:    v_mov_b32_e32 v1, s3618; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]619; GFX11-NEXT:    s_endpgm620;621; SDAG-VI-LABEL: v_icmp_i32_sle:622; SDAG-VI:       ; %bb.0:623; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c624; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24625; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64626; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)627; SDAG-VI-NEXT:    v_cmp_le_i32_e64 s[2:3], s2, v0628; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s0629; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s2630; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s1631; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s3632; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]633; SDAG-VI-NEXT:    s_endpgm634;635; GFX9-LABEL: v_icmp_i32_sle:636; GFX9:       ; %bb.0:637; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c638; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24639; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64640; GFX9-NEXT:    v_mov_b32_e32 v2, 0641; GFX9-NEXT:    s_waitcnt lgkmcnt(0)642; GFX9-NEXT:    v_cmp_le_i32_e64 s[2:3], s2, v0643; GFX9-NEXT:    v_mov_b32_e32 v0, s2644; GFX9-NEXT:    v_mov_b32_e32 v1, s3645; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]646; GFX9-NEXT:    s_endpgm647;648; GISEL-VI-LABEL: v_icmp_i32_sle:649; GISEL-VI:       ; %bb.0:650; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c651; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x24652; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64653; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)654; GISEL-VI-NEXT:    v_cmp_le_i32_e64 s[2:3], s2, v0655; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2656; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1657; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3658; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0659; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]660; GISEL-VI-NEXT:    s_endpgm661  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 41)662  store i64 %result, ptr addrspace(1) %out663  ret void664}665 666define amdgpu_kernel void @v_icmp_i64_eq(ptr addrspace(1) %out, i64 %src) {667; GFX11-LABEL: v_icmp_i64_eq:668; GFX11:       ; %bb.0:669; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24670; GFX11-NEXT:    v_mov_b32_e32 v2, 0671; GFX11-NEXT:    s_waitcnt lgkmcnt(0)672; GFX11-NEXT:    v_cmp_eq_u64_e64 s[2:3], 0x64, s[2:3]673; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)674; GFX11-NEXT:    v_mov_b32_e32 v0, s2675; GFX11-NEXT:    v_mov_b32_e32 v1, s3676; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]677; GFX11-NEXT:    s_endpgm678;679; SDAG-VI-LABEL: v_icmp_i64_eq:680; SDAG-VI:       ; %bb.0:681; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24682; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64683; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 0684; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)685; SDAG-VI-NEXT:    v_cmp_eq_u64_e64 s[2:3], s[2:3], v[0:1]686; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s0687; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s2688; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s1689; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s3690; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]691; SDAG-VI-NEXT:    s_endpgm692;693; GFX9-LABEL: v_icmp_i64_eq:694; GFX9:       ; %bb.0:695; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24696; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64697; GFX9-NEXT:    v_mov_b32_e32 v1, 0698; GFX9-NEXT:    v_mov_b32_e32 v2, 0699; GFX9-NEXT:    s_waitcnt lgkmcnt(0)700; GFX9-NEXT:    v_cmp_eq_u64_e64 s[2:3], s[2:3], v[0:1]701; GFX9-NEXT:    v_mov_b32_e32 v0, s2702; GFX9-NEXT:    v_mov_b32_e32 v1, s3703; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]704; GFX9-NEXT:    s_endpgm705;706; GISEL-VI-LABEL: v_icmp_i64_eq:707; GISEL-VI:       ; %bb.0:708; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24709; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64710; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 0711; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)712; GISEL-VI-NEXT:    v_cmp_eq_u64_e64 s[2:3], s[2:3], v[0:1]713; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1714; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2715; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3716; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0717; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]718; GISEL-VI-NEXT:    s_endpgm719  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 32)720  store i64 %result, ptr addrspace(1) %out721  ret void722}723 724define amdgpu_kernel void @v_icmp_i64_ne(ptr addrspace(1) %out, i64 %src) {725; GFX11-LABEL: v_icmp_i64_ne:726; GFX11:       ; %bb.0:727; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24728; GFX11-NEXT:    v_mov_b32_e32 v2, 0729; GFX11-NEXT:    s_waitcnt lgkmcnt(0)730; GFX11-NEXT:    v_cmp_ne_u64_e64 s[2:3], 0x64, s[2:3]731; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)732; GFX11-NEXT:    v_mov_b32_e32 v0, s2733; GFX11-NEXT:    v_mov_b32_e32 v1, s3734; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]735; GFX11-NEXT:    s_endpgm736;737; SDAG-VI-LABEL: v_icmp_i64_ne:738; SDAG-VI:       ; %bb.0:739; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24740; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64741; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 0742; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)743; SDAG-VI-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[2:3], v[0:1]744; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s0745; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s2746; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s1747; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s3748; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]749; SDAG-VI-NEXT:    s_endpgm750;751; GFX9-LABEL: v_icmp_i64_ne:752; GFX9:       ; %bb.0:753; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24754; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64755; GFX9-NEXT:    v_mov_b32_e32 v1, 0756; GFX9-NEXT:    v_mov_b32_e32 v2, 0757; GFX9-NEXT:    s_waitcnt lgkmcnt(0)758; GFX9-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[2:3], v[0:1]759; GFX9-NEXT:    v_mov_b32_e32 v0, s2760; GFX9-NEXT:    v_mov_b32_e32 v1, s3761; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]762; GFX9-NEXT:    s_endpgm763;764; GISEL-VI-LABEL: v_icmp_i64_ne:765; GISEL-VI:       ; %bb.0:766; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24767; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64768; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 0769; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)770; GISEL-VI-NEXT:    v_cmp_ne_u64_e64 s[2:3], s[2:3], v[0:1]771; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1772; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2773; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3774; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0775; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]776; GISEL-VI-NEXT:    s_endpgm777  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 33)778  store i64 %result, ptr addrspace(1) %out779  ret void780}781 782define amdgpu_kernel void @v_icmp_u64_ugt(ptr addrspace(1) %out, i64 %src) {783; GFX11-LABEL: v_icmp_u64_ugt:784; GFX11:       ; %bb.0:785; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24786; GFX11-NEXT:    v_mov_b32_e32 v2, 0787; GFX11-NEXT:    s_waitcnt lgkmcnt(0)788; GFX11-NEXT:    v_cmp_lt_u64_e64 s[2:3], 0x64, s[2:3]789; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)790; GFX11-NEXT:    v_mov_b32_e32 v0, s2791; GFX11-NEXT:    v_mov_b32_e32 v1, s3792; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]793; GFX11-NEXT:    s_endpgm794;795; SDAG-VI-LABEL: v_icmp_u64_ugt:796; SDAG-VI:       ; %bb.0:797; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24798; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64799; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 0800; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)801; SDAG-VI-NEXT:    v_cmp_gt_u64_e64 s[2:3], s[2:3], v[0:1]802; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s0803; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s2804; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s1805; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s3806; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]807; SDAG-VI-NEXT:    s_endpgm808;809; GFX9-LABEL: v_icmp_u64_ugt:810; GFX9:       ; %bb.0:811; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24812; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64813; GFX9-NEXT:    v_mov_b32_e32 v1, 0814; GFX9-NEXT:    v_mov_b32_e32 v2, 0815; GFX9-NEXT:    s_waitcnt lgkmcnt(0)816; GFX9-NEXT:    v_cmp_gt_u64_e64 s[2:3], s[2:3], v[0:1]817; GFX9-NEXT:    v_mov_b32_e32 v0, s2818; GFX9-NEXT:    v_mov_b32_e32 v1, s3819; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]820; GFX9-NEXT:    s_endpgm821;822; GISEL-VI-LABEL: v_icmp_u64_ugt:823; GISEL-VI:       ; %bb.0:824; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24825; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64826; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 0827; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)828; GISEL-VI-NEXT:    v_cmp_gt_u64_e64 s[2:3], s[2:3], v[0:1]829; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1830; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2831; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3832; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0833; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]834; GISEL-VI-NEXT:    s_endpgm835  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 34)836  store i64 %result, ptr addrspace(1) %out837  ret void838}839 840define amdgpu_kernel void @v_icmp_u64_uge(ptr addrspace(1) %out, i64 %src) {841; GFX11-LABEL: v_icmp_u64_uge:842; GFX11:       ; %bb.0:843; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24844; GFX11-NEXT:    v_mov_b32_e32 v2, 0845; GFX11-NEXT:    s_waitcnt lgkmcnt(0)846; GFX11-NEXT:    v_cmp_le_u64_e64 s[2:3], 0x64, s[2:3]847; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)848; GFX11-NEXT:    v_mov_b32_e32 v0, s2849; GFX11-NEXT:    v_mov_b32_e32 v1, s3850; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]851; GFX11-NEXT:    s_endpgm852;853; SDAG-VI-LABEL: v_icmp_u64_uge:854; SDAG-VI:       ; %bb.0:855; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24856; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64857; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 0858; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)859; SDAG-VI-NEXT:    v_cmp_ge_u64_e64 s[2:3], s[2:3], v[0:1]860; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s0861; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s2862; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s1863; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s3864; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]865; SDAG-VI-NEXT:    s_endpgm866;867; GFX9-LABEL: v_icmp_u64_uge:868; GFX9:       ; %bb.0:869; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24870; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64871; GFX9-NEXT:    v_mov_b32_e32 v1, 0872; GFX9-NEXT:    v_mov_b32_e32 v2, 0873; GFX9-NEXT:    s_waitcnt lgkmcnt(0)874; GFX9-NEXT:    v_cmp_ge_u64_e64 s[2:3], s[2:3], v[0:1]875; GFX9-NEXT:    v_mov_b32_e32 v0, s2876; GFX9-NEXT:    v_mov_b32_e32 v1, s3877; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]878; GFX9-NEXT:    s_endpgm879;880; GISEL-VI-LABEL: v_icmp_u64_uge:881; GISEL-VI:       ; %bb.0:882; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24883; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64884; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 0885; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)886; GISEL-VI-NEXT:    v_cmp_ge_u64_e64 s[2:3], s[2:3], v[0:1]887; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1888; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2889; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3890; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0891; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]892; GISEL-VI-NEXT:    s_endpgm893  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 35)894  store i64 %result, ptr addrspace(1) %out895  ret void896}897 898define amdgpu_kernel void @v_icmp_u64_ult(ptr addrspace(1) %out, i64 %src) {899; GFX11-LABEL: v_icmp_u64_ult:900; GFX11:       ; %bb.0:901; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24902; GFX11-NEXT:    v_mov_b32_e32 v2, 0903; GFX11-NEXT:    s_waitcnt lgkmcnt(0)904; GFX11-NEXT:    v_cmp_gt_u64_e64 s[2:3], 0x64, s[2:3]905; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)906; GFX11-NEXT:    v_mov_b32_e32 v0, s2907; GFX11-NEXT:    v_mov_b32_e32 v1, s3908; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]909; GFX11-NEXT:    s_endpgm910;911; SDAG-VI-LABEL: v_icmp_u64_ult:912; SDAG-VI:       ; %bb.0:913; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24914; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64915; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 0916; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)917; SDAG-VI-NEXT:    v_cmp_lt_u64_e64 s[2:3], s[2:3], v[0:1]918; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s0919; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s2920; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s1921; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s3922; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]923; SDAG-VI-NEXT:    s_endpgm924;925; GFX9-LABEL: v_icmp_u64_ult:926; GFX9:       ; %bb.0:927; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24928; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64929; GFX9-NEXT:    v_mov_b32_e32 v1, 0930; GFX9-NEXT:    v_mov_b32_e32 v2, 0931; GFX9-NEXT:    s_waitcnt lgkmcnt(0)932; GFX9-NEXT:    v_cmp_lt_u64_e64 s[2:3], s[2:3], v[0:1]933; GFX9-NEXT:    v_mov_b32_e32 v0, s2934; GFX9-NEXT:    v_mov_b32_e32 v1, s3935; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]936; GFX9-NEXT:    s_endpgm937;938; GISEL-VI-LABEL: v_icmp_u64_ult:939; GISEL-VI:       ; %bb.0:940; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24941; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x64942; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 0943; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)944; GISEL-VI-NEXT:    v_cmp_lt_u64_e64 s[2:3], s[2:3], v[0:1]945; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s1946; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s2947; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s3948; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s0949; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]950; GISEL-VI-NEXT:    s_endpgm951  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 36)952  store i64 %result, ptr addrspace(1) %out953  ret void954}955 956define amdgpu_kernel void @v_icmp_u64_ule(ptr addrspace(1) %out, i64 %src) {957; GFX11-LABEL: v_icmp_u64_ule:958; GFX11:       ; %bb.0:959; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24960; GFX11-NEXT:    v_mov_b32_e32 v2, 0961; GFX11-NEXT:    s_waitcnt lgkmcnt(0)962; GFX11-NEXT:    v_cmp_ge_u64_e64 s[2:3], 0x64, s[2:3]963; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)964; GFX11-NEXT:    v_mov_b32_e32 v0, s2965; GFX11-NEXT:    v_mov_b32_e32 v1, s3966; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]967; GFX11-NEXT:    s_endpgm968;969; SDAG-VI-LABEL: v_icmp_u64_ule:970; SDAG-VI:       ; %bb.0:971; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24972; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x64973; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 0974; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)975; SDAG-VI-NEXT:    v_cmp_le_u64_e64 s[2:3], s[2:3], v[0:1]976; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s0977; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s2978; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s1979; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s3980; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]981; SDAG-VI-NEXT:    s_endpgm982;983; GFX9-LABEL: v_icmp_u64_ule:984; GFX9:       ; %bb.0:985; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24986; GFX9-NEXT:    v_mov_b32_e32 v0, 0x64987; GFX9-NEXT:    v_mov_b32_e32 v1, 0988; GFX9-NEXT:    v_mov_b32_e32 v2, 0989; GFX9-NEXT:    s_waitcnt lgkmcnt(0)990; GFX9-NEXT:    v_cmp_le_u64_e64 s[2:3], s[2:3], v[0:1]991; GFX9-NEXT:    v_mov_b32_e32 v0, s2992; GFX9-NEXT:    v_mov_b32_e32 v1, s3993; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]994; GFX9-NEXT:    s_endpgm995;996; GISEL-VI-LABEL: v_icmp_u64_ule:997; GISEL-VI:       ; %bb.0:998; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24999; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641000; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 01001; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1002; GISEL-VI-NEXT:    v_cmp_le_u64_e64 s[2:3], s[2:3], v[0:1]1003; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11004; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21005; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31006; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01007; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1008; GISEL-VI-NEXT:    s_endpgm1009  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 37)1010  store i64 %result, ptr addrspace(1) %out1011  ret void1012}1013 1014define amdgpu_kernel void @v_icmp_i64_sgt(ptr addrspace(1) %out, i64 %src) {1015; GFX11-LABEL: v_icmp_i64_sgt:1016; GFX11:       ; %bb.0:1017; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241018; GFX11-NEXT:    v_mov_b32_e32 v2, 01019; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1020; GFX11-NEXT:    v_cmp_lt_i64_e64 s[2:3], 0x64, s[2:3]1021; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1022; GFX11-NEXT:    v_mov_b32_e32 v0, s21023; GFX11-NEXT:    v_mov_b32_e32 v1, s31024; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1025; GFX11-NEXT:    s_endpgm1026;1027; SDAG-VI-LABEL: v_icmp_i64_sgt:1028; SDAG-VI:       ; %bb.0:1029; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241030; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641031; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 01032; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1033; SDAG-VI-NEXT:    v_cmp_gt_i64_e64 s[2:3], s[2:3], v[0:1]1034; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s01035; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s21036; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s11037; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s31038; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1039; SDAG-VI-NEXT:    s_endpgm1040;1041; GFX9-LABEL: v_icmp_i64_sgt:1042; GFX9:       ; %bb.0:1043; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241044; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641045; GFX9-NEXT:    v_mov_b32_e32 v1, 01046; GFX9-NEXT:    v_mov_b32_e32 v2, 01047; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1048; GFX9-NEXT:    v_cmp_gt_i64_e64 s[2:3], s[2:3], v[0:1]1049; GFX9-NEXT:    v_mov_b32_e32 v0, s21050; GFX9-NEXT:    v_mov_b32_e32 v1, s31051; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1052; GFX9-NEXT:    s_endpgm1053;1054; GISEL-VI-LABEL: v_icmp_i64_sgt:1055; GISEL-VI:       ; %bb.0:1056; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241057; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641058; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 01059; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1060; GISEL-VI-NEXT:    v_cmp_gt_i64_e64 s[2:3], s[2:3], v[0:1]1061; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11062; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21063; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31064; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01065; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1066; GISEL-VI-NEXT:    s_endpgm1067  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 38)1068  store i64 %result, ptr addrspace(1) %out1069  ret void1070}1071 1072define amdgpu_kernel void @v_icmp_i64_sge(ptr addrspace(1) %out, i64 %src) {1073; GFX11-LABEL: v_icmp_i64_sge:1074; GFX11:       ; %bb.0:1075; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241076; GFX11-NEXT:    v_mov_b32_e32 v2, 01077; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1078; GFX11-NEXT:    v_cmp_le_i64_e64 s[2:3], 0x64, s[2:3]1079; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1080; GFX11-NEXT:    v_mov_b32_e32 v0, s21081; GFX11-NEXT:    v_mov_b32_e32 v1, s31082; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1083; GFX11-NEXT:    s_endpgm1084;1085; SDAG-VI-LABEL: v_icmp_i64_sge:1086; SDAG-VI:       ; %bb.0:1087; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241088; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641089; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 01090; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1091; SDAG-VI-NEXT:    v_cmp_ge_i64_e64 s[2:3], s[2:3], v[0:1]1092; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s01093; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s21094; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s11095; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s31096; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1097; SDAG-VI-NEXT:    s_endpgm1098;1099; GFX9-LABEL: v_icmp_i64_sge:1100; GFX9:       ; %bb.0:1101; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241102; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641103; GFX9-NEXT:    v_mov_b32_e32 v1, 01104; GFX9-NEXT:    v_mov_b32_e32 v2, 01105; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1106; GFX9-NEXT:    v_cmp_ge_i64_e64 s[2:3], s[2:3], v[0:1]1107; GFX9-NEXT:    v_mov_b32_e32 v0, s21108; GFX9-NEXT:    v_mov_b32_e32 v1, s31109; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1110; GFX9-NEXT:    s_endpgm1111;1112; GISEL-VI-LABEL: v_icmp_i64_sge:1113; GISEL-VI:       ; %bb.0:1114; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241115; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641116; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 01117; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1118; GISEL-VI-NEXT:    v_cmp_ge_i64_e64 s[2:3], s[2:3], v[0:1]1119; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11120; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21121; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31122; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01123; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1124; GISEL-VI-NEXT:    s_endpgm1125  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 39)1126  store i64 %result, ptr addrspace(1) %out1127  ret void1128}1129 1130define amdgpu_kernel void @v_icmp_i64_slt(ptr addrspace(1) %out, i64 %src) {1131; GFX11-LABEL: v_icmp_i64_slt:1132; GFX11:       ; %bb.0:1133; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241134; GFX11-NEXT:    v_mov_b32_e32 v2, 01135; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1136; GFX11-NEXT:    v_cmp_gt_i64_e64 s[2:3], 0x64, s[2:3]1137; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1138; GFX11-NEXT:    v_mov_b32_e32 v0, s21139; GFX11-NEXT:    v_mov_b32_e32 v1, s31140; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1141; GFX11-NEXT:    s_endpgm1142;1143; SDAG-VI-LABEL: v_icmp_i64_slt:1144; SDAG-VI:       ; %bb.0:1145; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241146; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641147; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 01148; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1149; SDAG-VI-NEXT:    v_cmp_lt_i64_e64 s[2:3], s[2:3], v[0:1]1150; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s01151; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s21152; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s11153; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s31154; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1155; SDAG-VI-NEXT:    s_endpgm1156;1157; GFX9-LABEL: v_icmp_i64_slt:1158; GFX9:       ; %bb.0:1159; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241160; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641161; GFX9-NEXT:    v_mov_b32_e32 v1, 01162; GFX9-NEXT:    v_mov_b32_e32 v2, 01163; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1164; GFX9-NEXT:    v_cmp_lt_i64_e64 s[2:3], s[2:3], v[0:1]1165; GFX9-NEXT:    v_mov_b32_e32 v0, s21166; GFX9-NEXT:    v_mov_b32_e32 v1, s31167; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1168; GFX9-NEXT:    s_endpgm1169;1170; GISEL-VI-LABEL: v_icmp_i64_slt:1171; GISEL-VI:       ; %bb.0:1172; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241173; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641174; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 01175; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1176; GISEL-VI-NEXT:    v_cmp_lt_i64_e64 s[2:3], s[2:3], v[0:1]1177; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11178; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21179; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31180; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01181; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1182; GISEL-VI-NEXT:    s_endpgm1183  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 40)1184  store i64 %result, ptr addrspace(1) %out1185  ret void1186}1187 1188define amdgpu_kernel void @v_icmp_i64_sle(ptr addrspace(1) %out, i64 %src) {1189; GFX11-LABEL: v_icmp_i64_sle:1190; GFX11:       ; %bb.0:1191; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241192; GFX11-NEXT:    v_mov_b32_e32 v2, 01193; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1194; GFX11-NEXT:    v_cmp_ge_i64_e64 s[2:3], 0x64, s[2:3]1195; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1196; GFX11-NEXT:    v_mov_b32_e32 v0, s21197; GFX11-NEXT:    v_mov_b32_e32 v1, s31198; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1199; GFX11-NEXT:    s_endpgm1200;1201; SDAG-VI-LABEL: v_icmp_i64_sle:1202; SDAG-VI:       ; %bb.0:1203; SDAG-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241204; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641205; SDAG-VI-NEXT:    v_mov_b32_e32 v1, 01206; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1207; SDAG-VI-NEXT:    v_cmp_le_i64_e64 s[2:3], s[2:3], v[0:1]1208; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s01209; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s21210; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s11211; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s31212; SDAG-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1213; SDAG-VI-NEXT:    s_endpgm1214;1215; GFX9-LABEL: v_icmp_i64_sle:1216; GFX9:       ; %bb.0:1217; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241218; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641219; GFX9-NEXT:    v_mov_b32_e32 v1, 01220; GFX9-NEXT:    v_mov_b32_e32 v2, 01221; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1222; GFX9-NEXT:    v_cmp_le_i64_e64 s[2:3], s[2:3], v[0:1]1223; GFX9-NEXT:    v_mov_b32_e32 v0, s21224; GFX9-NEXT:    v_mov_b32_e32 v1, s31225; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1226; GFX9-NEXT:    s_endpgm1227;1228; GISEL-VI-LABEL: v_icmp_i64_sle:1229; GISEL-VI:       ; %bb.0:1230; GISEL-VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241231; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641232; GISEL-VI-NEXT:    v_mov_b32_e32 v1, 01233; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1234; GISEL-VI-NEXT:    v_cmp_le_i64_e64 s[2:3], s[2:3], v[0:1]1235; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11236; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21237; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31238; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01239; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1240; GISEL-VI-NEXT:    s_endpgm1241  %result = call i64 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 41)1242  store i64 %result, ptr addrspace(1) %out1243  ret void1244}1245 1246define amdgpu_kernel void @v_icmp_i16_eq(ptr addrspace(1) %out, i16 %src) {1247; GFX11-LABEL: v_icmp_i16_eq:1248; GFX11:       ; %bb.0:1249; GFX11-NEXT:    s_clause 0x11250; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1251; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241252; GFX11-NEXT:    v_mov_b32_e32 v2, 01253; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1254; GFX11-NEXT:    v_cmp_eq_u16_e64 s[2:3], 0x64, s21255; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1256; GFX11-NEXT:    v_mov_b32_e32 v0, s21257; GFX11-NEXT:    v_mov_b32_e32 v1, s31258; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1259; GFX11-NEXT:    s_endpgm1260;1261; SDAG-VI-LABEL: v_icmp_i16_eq:1262; SDAG-VI:       ; %bb.0:1263; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1264; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241265; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641266; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1267; SDAG-VI-NEXT:    v_cmp_eq_u16_e64 s[2:3], s2, v01268; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01269; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21270; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11271; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31272; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1273; SDAG-VI-NEXT:    s_endpgm1274;1275; GFX9-LABEL: v_icmp_i16_eq:1276; GFX9:       ; %bb.0:1277; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1278; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241279; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641280; GFX9-NEXT:    v_mov_b32_e32 v2, 01281; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1282; GFX9-NEXT:    v_cmp_eq_u16_e64 s[2:3], s2, v01283; GFX9-NEXT:    v_mov_b32_e32 v0, s21284; GFX9-NEXT:    v_mov_b32_e32 v1, s31285; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1286; GFX9-NEXT:    s_endpgm1287;1288; GISEL-VI-LABEL: v_icmp_i16_eq:1289; GISEL-VI:       ; %bb.0:1290; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1291; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241292; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641293; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1294; GISEL-VI-NEXT:    v_cmp_eq_u16_e64 s[2:3], s2, v01295; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21296; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11297; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31298; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01299; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1300; GISEL-VI-NEXT:    s_endpgm1301  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 32)1302  store i64 %result, ptr addrspace(1) %out1303  ret void1304}1305 1306define amdgpu_kernel void @v_icmp_i16(ptr addrspace(1) %out, i16 %src) {1307; SDAG-GFX11-LABEL: v_icmp_i16:1308; SDAG-GFX11:       ; %bb.0:1309; SDAG-GFX11-NEXT:    s_endpgm1310;1311; SDAG-VI-LABEL: v_icmp_i16:1312; SDAG-VI:       ; %bb.0:1313; SDAG-VI-NEXT:    s_endpgm1314;1315; SDAG-GFX9-LABEL: v_icmp_i16:1316; SDAG-GFX9:       ; %bb.0:1317; SDAG-GFX9-NEXT:    s_endpgm1318;1319; GISEL-GFX11-LABEL: v_icmp_i16:1320; GISEL-GFX11:       ; %bb.0:1321; GISEL-GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241322; GISEL-GFX11-NEXT:    v_mov_b32_e32 v0, 01323; GISEL-GFX11-NEXT:    s_waitcnt lgkmcnt(0)1324; GISEL-GFX11-NEXT:    global_store_b64 v0, v[0:1], s[0:1]1325; GISEL-GFX11-NEXT:    s_endpgm1326;1327; GISEL-VI-LABEL: v_icmp_i16:1328; GISEL-VI:       ; %bb.0:1329; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241330; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1331; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s01332; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s11333; GISEL-VI-NEXT:    flat_store_dwordx2 v[0:1], v[0:1]1334; GISEL-VI-NEXT:    s_endpgm1335;1336; GISEL-GFX9-LABEL: v_icmp_i16:1337; GISEL-GFX9:       ; %bb.0:1338; GISEL-GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241339; GISEL-GFX9-NEXT:    v_mov_b32_e32 v0, 01340; GISEL-GFX9-NEXT:    s_waitcnt lgkmcnt(0)1341; GISEL-GFX9-NEXT:    global_store_dwordx2 v0, v[0:1], s[0:1]1342; GISEL-GFX9-NEXT:    s_endpgm1343  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 30)1344  store i64 %result, ptr addrspace(1) %out1345  ret void1346}1347 1348define amdgpu_kernel void @v_icmp_i16_ne(ptr addrspace(1) %out, i16 %src) {1349; GFX11-LABEL: v_icmp_i16_ne:1350; GFX11:       ; %bb.0:1351; GFX11-NEXT:    s_clause 0x11352; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1353; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241354; GFX11-NEXT:    v_mov_b32_e32 v2, 01355; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1356; GFX11-NEXT:    v_cmp_ne_u16_e64 s[2:3], 0x64, s21357; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1358; GFX11-NEXT:    v_mov_b32_e32 v0, s21359; GFX11-NEXT:    v_mov_b32_e32 v1, s31360; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1361; GFX11-NEXT:    s_endpgm1362;1363; SDAG-VI-LABEL: v_icmp_i16_ne:1364; SDAG-VI:       ; %bb.0:1365; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1366; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241367; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641368; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1369; SDAG-VI-NEXT:    v_cmp_ne_u16_e64 s[2:3], s2, v01370; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01371; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21372; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11373; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31374; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1375; SDAG-VI-NEXT:    s_endpgm1376;1377; GFX9-LABEL: v_icmp_i16_ne:1378; GFX9:       ; %bb.0:1379; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1380; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241381; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641382; GFX9-NEXT:    v_mov_b32_e32 v2, 01383; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1384; GFX9-NEXT:    v_cmp_ne_u16_e64 s[2:3], s2, v01385; GFX9-NEXT:    v_mov_b32_e32 v0, s21386; GFX9-NEXT:    v_mov_b32_e32 v1, s31387; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1388; GFX9-NEXT:    s_endpgm1389;1390; GISEL-VI-LABEL: v_icmp_i16_ne:1391; GISEL-VI:       ; %bb.0:1392; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1393; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241394; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641395; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1396; GISEL-VI-NEXT:    v_cmp_ne_u16_e64 s[2:3], s2, v01397; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21398; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11399; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31400; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01401; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1402; GISEL-VI-NEXT:    s_endpgm1403  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 33)1404  store i64 %result, ptr addrspace(1) %out1405  ret void1406}1407 1408define amdgpu_kernel void @v_icmp_i16_ugt(ptr addrspace(1) %out, i16 %src) {1409; GFX11-LABEL: v_icmp_i16_ugt:1410; GFX11:       ; %bb.0:1411; GFX11-NEXT:    s_clause 0x11412; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1413; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241414; GFX11-NEXT:    v_mov_b32_e32 v2, 01415; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1416; GFX11-NEXT:    v_cmp_lt_u16_e64 s[2:3], 0x64, s21417; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1418; GFX11-NEXT:    v_mov_b32_e32 v0, s21419; GFX11-NEXT:    v_mov_b32_e32 v1, s31420; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1421; GFX11-NEXT:    s_endpgm1422;1423; SDAG-VI-LABEL: v_icmp_i16_ugt:1424; SDAG-VI:       ; %bb.0:1425; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1426; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241427; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641428; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1429; SDAG-VI-NEXT:    v_cmp_gt_u16_e64 s[2:3], s2, v01430; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01431; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21432; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11433; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31434; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1435; SDAG-VI-NEXT:    s_endpgm1436;1437; GFX9-LABEL: v_icmp_i16_ugt:1438; GFX9:       ; %bb.0:1439; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1440; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241441; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641442; GFX9-NEXT:    v_mov_b32_e32 v2, 01443; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1444; GFX9-NEXT:    v_cmp_gt_u16_e64 s[2:3], s2, v01445; GFX9-NEXT:    v_mov_b32_e32 v0, s21446; GFX9-NEXT:    v_mov_b32_e32 v1, s31447; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1448; GFX9-NEXT:    s_endpgm1449;1450; GISEL-VI-LABEL: v_icmp_i16_ugt:1451; GISEL-VI:       ; %bb.0:1452; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1453; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241454; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641455; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1456; GISEL-VI-NEXT:    v_cmp_gt_u16_e64 s[2:3], s2, v01457; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21458; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11459; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31460; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01461; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1462; GISEL-VI-NEXT:    s_endpgm1463  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 34)1464  store i64 %result, ptr addrspace(1) %out1465  ret void1466}1467 1468define amdgpu_kernel void @v_icmp_i16_uge(ptr addrspace(1) %out, i16 %src) {1469; GFX11-LABEL: v_icmp_i16_uge:1470; GFX11:       ; %bb.0:1471; GFX11-NEXT:    s_clause 0x11472; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1473; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241474; GFX11-NEXT:    v_mov_b32_e32 v2, 01475; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1476; GFX11-NEXT:    v_cmp_le_u16_e64 s[2:3], 0x64, s21477; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1478; GFX11-NEXT:    v_mov_b32_e32 v0, s21479; GFX11-NEXT:    v_mov_b32_e32 v1, s31480; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1481; GFX11-NEXT:    s_endpgm1482;1483; SDAG-VI-LABEL: v_icmp_i16_uge:1484; SDAG-VI:       ; %bb.0:1485; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1486; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241487; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641488; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1489; SDAG-VI-NEXT:    v_cmp_ge_u16_e64 s[2:3], s2, v01490; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01491; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21492; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11493; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31494; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1495; SDAG-VI-NEXT:    s_endpgm1496;1497; GFX9-LABEL: v_icmp_i16_uge:1498; GFX9:       ; %bb.0:1499; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1500; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241501; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641502; GFX9-NEXT:    v_mov_b32_e32 v2, 01503; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1504; GFX9-NEXT:    v_cmp_ge_u16_e64 s[2:3], s2, v01505; GFX9-NEXT:    v_mov_b32_e32 v0, s21506; GFX9-NEXT:    v_mov_b32_e32 v1, s31507; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1508; GFX9-NEXT:    s_endpgm1509;1510; GISEL-VI-LABEL: v_icmp_i16_uge:1511; GISEL-VI:       ; %bb.0:1512; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1513; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241514; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641515; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1516; GISEL-VI-NEXT:    v_cmp_ge_u16_e64 s[2:3], s2, v01517; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21518; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11519; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31520; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01521; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1522; GISEL-VI-NEXT:    s_endpgm1523  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 35)1524  store i64 %result, ptr addrspace(1) %out1525  ret void1526}1527 1528define amdgpu_kernel void @v_icmp_i16_ult(ptr addrspace(1) %out, i16 %src) {1529; GFX11-LABEL: v_icmp_i16_ult:1530; GFX11:       ; %bb.0:1531; GFX11-NEXT:    s_clause 0x11532; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1533; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241534; GFX11-NEXT:    v_mov_b32_e32 v2, 01535; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1536; GFX11-NEXT:    v_cmp_gt_u16_e64 s[2:3], 0x64, s21537; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1538; GFX11-NEXT:    v_mov_b32_e32 v0, s21539; GFX11-NEXT:    v_mov_b32_e32 v1, s31540; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1541; GFX11-NEXT:    s_endpgm1542;1543; SDAG-VI-LABEL: v_icmp_i16_ult:1544; SDAG-VI:       ; %bb.0:1545; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1546; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241547; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641548; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1549; SDAG-VI-NEXT:    v_cmp_lt_u16_e64 s[2:3], s2, v01550; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01551; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21552; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11553; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31554; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1555; SDAG-VI-NEXT:    s_endpgm1556;1557; GFX9-LABEL: v_icmp_i16_ult:1558; GFX9:       ; %bb.0:1559; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1560; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241561; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641562; GFX9-NEXT:    v_mov_b32_e32 v2, 01563; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1564; GFX9-NEXT:    v_cmp_lt_u16_e64 s[2:3], s2, v01565; GFX9-NEXT:    v_mov_b32_e32 v0, s21566; GFX9-NEXT:    v_mov_b32_e32 v1, s31567; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1568; GFX9-NEXT:    s_endpgm1569;1570; GISEL-VI-LABEL: v_icmp_i16_ult:1571; GISEL-VI:       ; %bb.0:1572; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1573; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241574; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641575; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1576; GISEL-VI-NEXT:    v_cmp_lt_u16_e64 s[2:3], s2, v01577; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21578; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11579; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31580; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01581; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1582; GISEL-VI-NEXT:    s_endpgm1583  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 36)1584  store i64 %result, ptr addrspace(1) %out1585  ret void1586}1587 1588define amdgpu_kernel void @v_icmp_i16_ule(ptr addrspace(1) %out, i16 %src) {1589; GFX11-LABEL: v_icmp_i16_ule:1590; GFX11:       ; %bb.0:1591; GFX11-NEXT:    s_clause 0x11592; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1593; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241594; GFX11-NEXT:    v_mov_b32_e32 v2, 01595; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1596; GFX11-NEXT:    v_cmp_ge_u16_e64 s[2:3], 0x64, s21597; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1598; GFX11-NEXT:    v_mov_b32_e32 v0, s21599; GFX11-NEXT:    v_mov_b32_e32 v1, s31600; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1601; GFX11-NEXT:    s_endpgm1602;1603; SDAG-VI-LABEL: v_icmp_i16_ule:1604; SDAG-VI:       ; %bb.0:1605; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1606; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241607; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641608; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1609; SDAG-VI-NEXT:    v_cmp_le_u16_e64 s[2:3], s2, v01610; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01611; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21612; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11613; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31614; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1615; SDAG-VI-NEXT:    s_endpgm1616;1617; GFX9-LABEL: v_icmp_i16_ule:1618; GFX9:       ; %bb.0:1619; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1620; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241621; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641622; GFX9-NEXT:    v_mov_b32_e32 v2, 01623; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1624; GFX9-NEXT:    v_cmp_le_u16_e64 s[2:3], s2, v01625; GFX9-NEXT:    v_mov_b32_e32 v0, s21626; GFX9-NEXT:    v_mov_b32_e32 v1, s31627; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1628; GFX9-NEXT:    s_endpgm1629;1630; GISEL-VI-LABEL: v_icmp_i16_ule:1631; GISEL-VI:       ; %bb.0:1632; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1633; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241634; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641635; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1636; GISEL-VI-NEXT:    v_cmp_le_u16_e64 s[2:3], s2, v01637; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21638; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11639; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31640; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01641; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1642; GISEL-VI-NEXT:    s_endpgm1643  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 37)1644  store i64 %result, ptr addrspace(1) %out1645  ret void1646}1647 1648define amdgpu_kernel void @v_icmp_i16_sgt(ptr addrspace(1) %out, i16 %src) #1 {1649; GFX11-LABEL: v_icmp_i16_sgt:1650; GFX11:       ; %bb.0:1651; GFX11-NEXT:    s_clause 0x11652; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1653; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241654; GFX11-NEXT:    v_mov_b32_e32 v2, 01655; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1656; GFX11-NEXT:    v_cmp_lt_i16_e64 s[2:3], 0x64, s21657; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1658; GFX11-NEXT:    v_mov_b32_e32 v0, s21659; GFX11-NEXT:    v_mov_b32_e32 v1, s31660; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1661; GFX11-NEXT:    s_endpgm1662;1663; SDAG-VI-LABEL: v_icmp_i16_sgt:1664; SDAG-VI:       ; %bb.0:1665; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1666; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241667; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641668; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1669; SDAG-VI-NEXT:    v_cmp_gt_i16_e64 s[2:3], s2, v01670; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01671; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21672; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11673; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31674; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1675; SDAG-VI-NEXT:    s_endpgm1676;1677; GFX9-LABEL: v_icmp_i16_sgt:1678; GFX9:       ; %bb.0:1679; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1680; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241681; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641682; GFX9-NEXT:    v_mov_b32_e32 v2, 01683; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1684; GFX9-NEXT:    v_cmp_gt_i16_e64 s[2:3], s2, v01685; GFX9-NEXT:    v_mov_b32_e32 v0, s21686; GFX9-NEXT:    v_mov_b32_e32 v1, s31687; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1688; GFX9-NEXT:    s_endpgm1689;1690; GISEL-VI-LABEL: v_icmp_i16_sgt:1691; GISEL-VI:       ; %bb.0:1692; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1693; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241694; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641695; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1696; GISEL-VI-NEXT:    v_cmp_gt_i16_e64 s[2:3], s2, v01697; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21698; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11699; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31700; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01701; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1702; GISEL-VI-NEXT:    s_endpgm1703  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 38)1704  store i64 %result, ptr addrspace(1) %out1705  ret void1706}1707 1708define amdgpu_kernel void @v_icmp_i16_sge(ptr addrspace(1) %out, i16 %src) {1709; GFX11-LABEL: v_icmp_i16_sge:1710; GFX11:       ; %bb.0:1711; GFX11-NEXT:    s_clause 0x11712; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1713; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241714; GFX11-NEXT:    v_mov_b32_e32 v2, 01715; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1716; GFX11-NEXT:    v_cmp_le_i16_e64 s[2:3], 0x64, s21717; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1718; GFX11-NEXT:    v_mov_b32_e32 v0, s21719; GFX11-NEXT:    v_mov_b32_e32 v1, s31720; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1721; GFX11-NEXT:    s_endpgm1722;1723; SDAG-VI-LABEL: v_icmp_i16_sge:1724; SDAG-VI:       ; %bb.0:1725; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1726; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241727; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641728; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1729; SDAG-VI-NEXT:    v_cmp_ge_i16_e64 s[2:3], s2, v01730; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01731; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21732; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11733; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31734; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1735; SDAG-VI-NEXT:    s_endpgm1736;1737; GFX9-LABEL: v_icmp_i16_sge:1738; GFX9:       ; %bb.0:1739; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1740; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241741; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641742; GFX9-NEXT:    v_mov_b32_e32 v2, 01743; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1744; GFX9-NEXT:    v_cmp_ge_i16_e64 s[2:3], s2, v01745; GFX9-NEXT:    v_mov_b32_e32 v0, s21746; GFX9-NEXT:    v_mov_b32_e32 v1, s31747; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1748; GFX9-NEXT:    s_endpgm1749;1750; GISEL-VI-LABEL: v_icmp_i16_sge:1751; GISEL-VI:       ; %bb.0:1752; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1753; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241754; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641755; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1756; GISEL-VI-NEXT:    v_cmp_ge_i16_e64 s[2:3], s2, v01757; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21758; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11759; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31760; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01761; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1762; GISEL-VI-NEXT:    s_endpgm1763  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 39)1764  store i64 %result, ptr addrspace(1) %out1765  ret void1766}1767 1768define amdgpu_kernel void @v_icmp_i16_slt(ptr addrspace(1) %out, i16 %src) {1769; GFX11-LABEL: v_icmp_i16_slt:1770; GFX11:       ; %bb.0:1771; GFX11-NEXT:    s_clause 0x11772; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1773; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241774; GFX11-NEXT:    v_mov_b32_e32 v2, 01775; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1776; GFX11-NEXT:    v_cmp_gt_i16_e64 s[2:3], 0x64, s21777; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1778; GFX11-NEXT:    v_mov_b32_e32 v0, s21779; GFX11-NEXT:    v_mov_b32_e32 v1, s31780; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1781; GFX11-NEXT:    s_endpgm1782;1783; SDAG-VI-LABEL: v_icmp_i16_slt:1784; SDAG-VI:       ; %bb.0:1785; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1786; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241787; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641788; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1789; SDAG-VI-NEXT:    v_cmp_lt_i16_e64 s[2:3], s2, v01790; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01791; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21792; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11793; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31794; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1795; SDAG-VI-NEXT:    s_endpgm1796;1797; GFX9-LABEL: v_icmp_i16_slt:1798; GFX9:       ; %bb.0:1799; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1800; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241801; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641802; GFX9-NEXT:    v_mov_b32_e32 v2, 01803; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1804; GFX9-NEXT:    v_cmp_lt_i16_e64 s[2:3], s2, v01805; GFX9-NEXT:    v_mov_b32_e32 v0, s21806; GFX9-NEXT:    v_mov_b32_e32 v1, s31807; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1808; GFX9-NEXT:    s_endpgm1809;1810; GISEL-VI-LABEL: v_icmp_i16_slt:1811; GISEL-VI:       ; %bb.0:1812; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1813; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241814; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641815; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1816; GISEL-VI-NEXT:    v_cmp_lt_i16_e64 s[2:3], s2, v01817; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21818; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11819; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31820; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01821; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1822; GISEL-VI-NEXT:    s_endpgm1823  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 40)1824  store i64 %result, ptr addrspace(1) %out1825  ret void1826}1827 1828define amdgpu_kernel void @v_icmp_i16_sle(ptr addrspace(1) %out, i16 %src) {1829; GFX11-LABEL: v_icmp_i16_sle:1830; GFX11:       ; %bb.0:1831; GFX11-NEXT:    s_clause 0x11832; GFX11-NEXT:    s_load_b32 s2, s[4:5], 0x2c1833; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x241834; GFX11-NEXT:    v_mov_b32_e32 v2, 01835; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1836; GFX11-NEXT:    v_cmp_ge_i16_e64 s[2:3], 0x64, s21837; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)1838; GFX11-NEXT:    v_mov_b32_e32 v0, s21839; GFX11-NEXT:    v_mov_b32_e32 v1, s31840; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1841; GFX11-NEXT:    s_endpgm1842;1843; SDAG-VI-LABEL: v_icmp_i16_sle:1844; SDAG-VI:       ; %bb.0:1845; SDAG-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1846; SDAG-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241847; SDAG-VI-NEXT:    v_mov_b32_e32 v0, 0x641848; SDAG-VI-NEXT:    s_waitcnt lgkmcnt(0)1849; SDAG-VI-NEXT:    v_cmp_le_i16_e64 s[2:3], s2, v01850; SDAG-VI-NEXT:    v_mov_b32_e32 v0, s01851; SDAG-VI-NEXT:    v_mov_b32_e32 v2, s21852; SDAG-VI-NEXT:    v_mov_b32_e32 v1, s11853; SDAG-VI-NEXT:    v_mov_b32_e32 v3, s31854; SDAG-VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1855; SDAG-VI-NEXT:    s_endpgm1856;1857; GFX9-LABEL: v_icmp_i16_sle:1858; GFX9:       ; %bb.0:1859; GFX9-NEXT:    s_load_dword s2, s[4:5], 0x2c1860; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241861; GFX9-NEXT:    v_mov_b32_e32 v0, 0x641862; GFX9-NEXT:    v_mov_b32_e32 v2, 01863; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1864; GFX9-NEXT:    v_cmp_le_i16_e64 s[2:3], s2, v01865; GFX9-NEXT:    v_mov_b32_e32 v0, s21866; GFX9-NEXT:    v_mov_b32_e32 v1, s31867; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1868; GFX9-NEXT:    s_endpgm1869;1870; GISEL-VI-LABEL: v_icmp_i16_sle:1871; GISEL-VI:       ; %bb.0:1872; GISEL-VI-NEXT:    s_load_dword s2, s[4:5], 0x2c1873; GISEL-VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x241874; GISEL-VI-NEXT:    v_mov_b32_e32 v0, 0x641875; GISEL-VI-NEXT:    s_waitcnt lgkmcnt(0)1876; GISEL-VI-NEXT:    v_cmp_le_i16_e64 s[2:3], s2, v01877; GISEL-VI-NEXT:    v_mov_b32_e32 v0, s21878; GISEL-VI-NEXT:    v_mov_b32_e32 v3, s11879; GISEL-VI-NEXT:    v_mov_b32_e32 v1, s31880; GISEL-VI-NEXT:    v_mov_b32_e32 v2, s01881; GISEL-VI-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]1882; GISEL-VI-NEXT:    s_endpgm1883  %result = call i64 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 41)1884  store i64 %result, ptr addrspace(1) %out1885  ret void1886}1887 1888define amdgpu_kernel void @v_icmp_i1_ne0(ptr addrspace(1) %out, i32 %a, i32 %b) {1889; GFX11-LABEL: v_icmp_i1_ne0:1890; GFX11:       ; %bb.0:1891; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241892; GFX11-NEXT:    v_mov_b32_e32 v2, 01893; GFX11-NEXT:    s_waitcnt lgkmcnt(0)1894; GFX11-NEXT:    s_cmp_gt_u32 s2, 11895; GFX11-NEXT:    s_cselect_b64 s[4:5], -1, 01896; GFX11-NEXT:    s_cmp_gt_u32 s3, 21897; GFX11-NEXT:    s_cselect_b64 s[2:3], -1, 01898; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1899; GFX11-NEXT:    s_and_b64 s[2:3], s[4:5], s[2:3]1900; GFX11-NEXT:    v_mov_b32_e32 v0, s21901; GFX11-NEXT:    v_mov_b32_e32 v1, s31902; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]1903; GFX11-NEXT:    s_endpgm1904;1905; VI-LABEL: v_icmp_i1_ne0:1906; VI:       ; %bb.0:1907; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241908; VI-NEXT:    s_waitcnt lgkmcnt(0)1909; VI-NEXT:    s_cmp_gt_u32 s2, 11910; VI-NEXT:    s_cselect_b64 s[4:5], -1, 01911; VI-NEXT:    s_cmp_gt_u32 s3, 21912; VI-NEXT:    s_cselect_b64 s[2:3], -1, 01913; VI-NEXT:    s_and_b64 s[2:3], s[4:5], s[2:3]1914; VI-NEXT:    v_mov_b32_e32 v0, s01915; VI-NEXT:    v_mov_b32_e32 v2, s21916; VI-NEXT:    v_mov_b32_e32 v1, s11917; VI-NEXT:    v_mov_b32_e32 v3, s31918; VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]1919; VI-NEXT:    s_endpgm1920;1921; GFX9-LABEL: v_icmp_i1_ne0:1922; GFX9:       ; %bb.0:1923; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241924; GFX9-NEXT:    v_mov_b32_e32 v2, 01925; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1926; GFX9-NEXT:    s_cmp_gt_u32 s2, 11927; GFX9-NEXT:    s_cselect_b64 s[4:5], -1, 01928; GFX9-NEXT:    s_cmp_gt_u32 s3, 21929; GFX9-NEXT:    s_cselect_b64 s[2:3], -1, 01930; GFX9-NEXT:    s_and_b64 s[2:3], s[4:5], s[2:3]1931; GFX9-NEXT:    v_mov_b32_e32 v0, s21932; GFX9-NEXT:    v_mov_b32_e32 v1, s31933; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1934; GFX9-NEXT:    s_endpgm1935  %c0 = icmp ugt i32 %a, 11936  %c1 = icmp ugt i32 %b, 21937  %src = and i1 %c0, %c11938  %result = call i64 @llvm.amdgcn.icmp.i1(i1 %src, i1 false, i32 33)1939  store i64 %result, ptr addrspace(1) %out1940  ret void1941}1942 1943define amdgpu_ps void @test_intr_icmp_i32_invalid_cc(ptr addrspace(1) %out, i32 %src) {1944; SDAG-GFX11-LABEL: test_intr_icmp_i32_invalid_cc:1945; SDAG-GFX11:       ; %bb.0:1946; SDAG-GFX11-NEXT:    s_endpgm1947;1948; SDAG-VI-LABEL: test_intr_icmp_i32_invalid_cc:1949; SDAG-VI:       ; %bb.0:1950; SDAG-VI-NEXT:    s_endpgm1951;1952; SDAG-GFX9-LABEL: test_intr_icmp_i32_invalid_cc:1953; SDAG-GFX9:       ; %bb.0:1954; SDAG-GFX9-NEXT:    s_endpgm1955;1956; GISEL-GFX11-LABEL: test_intr_icmp_i32_invalid_cc:1957; GISEL-GFX11:       ; %bb.0:1958; GISEL-GFX11-NEXT:    global_store_b64 v[0:1], v[0:1], off1959; GISEL-GFX11-NEXT:    s_endpgm1960;1961; GISEL-VI-LABEL: test_intr_icmp_i32_invalid_cc:1962; GISEL-VI:       ; %bb.0:1963; GISEL-VI-NEXT:    flat_store_dwordx2 v[0:1], v[0:1]1964; GISEL-VI-NEXT:    s_endpgm1965;1966; GISEL-GFX9-LABEL: test_intr_icmp_i32_invalid_cc:1967; GISEL-GFX9:       ; %bb.0:1968; GISEL-GFX9-NEXT:    global_store_dwordx2 v[0:1], v[0:1], off1969; GISEL-GFX9-NEXT:    s_endpgm1970  %result = call i64 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 9999)1971  store i64 %result, ptr addrspace(1) %out1972  ret void1973}1974 1975attributes #0 = { nounwind readnone convergent }1976;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1977; GCN: {{.*}}1978