1681 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize32" < %s | FileCheck -check-prefixes=GCN,GFX11,SDAG-GFX11 %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr="+wavefrontsize32" < %s | FileCheck -check-prefixes=GCN,GFX10,SDAG-GFX10 %s4 5; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize32" < %s 2>%t | FileCheck -check-prefixes=GCN,GFX11,GISEL-GFX11 %s6; RUN: FileCheck --check-prefix=ERR %s < %t7; RUN: llc -global-isel -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx1010 -mattr="+wavefrontsize32" < %s 2>%t | FileCheck -check-prefixes=GCN,GFX10,GISEL-GFX10 %s8; RUN: FileCheck --check-prefix=ERR %s < %t9 10; Note: GlobalISel abort is disabled so we don't crash on i1 inputs.11; They are allowed in DAGISel but we (intentionally) don't support them12; in GlobalISel.13 14; ERR: warning: Instruction selection used fallback path for v_icmp_i1_ne015 16declare i32 @llvm.amdgcn.icmp.i32(i32, i32, i32) #017declare i32 @llvm.amdgcn.icmp.i64(i64, i64, i32) #018declare i32 @llvm.amdgcn.icmp.i16(i16, i16, i32) #019declare i32 @llvm.amdgcn.icmp.i1(i1, i1, i32) #020 21define amdgpu_kernel void @v_icmp_i32_eq(ptr addrspace(1) %out, i32 %src) {22; SDAG-GFX11-LABEL: v_icmp_i32_eq:23; SDAG-GFX11: ; %bb.0:24; SDAG-GFX11-NEXT: s_clause 0x125; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c26; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x2427; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)28; SDAG-GFX11-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s229; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)30; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s231; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]32; SDAG-GFX11-NEXT: s_endpgm33;34; SDAG-GFX10-LABEL: v_icmp_i32_eq:35; SDAG-GFX10: ; %bb.0:36; SDAG-GFX10-NEXT: s_clause 0x137; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c38; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2439; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 040; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)41; SDAG-GFX10-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s242; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s243; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]44; SDAG-GFX10-NEXT: s_endpgm45;46; GISEL-GFX11-LABEL: v_icmp_i32_eq:47; GISEL-GFX11: ; %bb.0:48; GISEL-GFX11-NEXT: s_clause 0x149; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c50; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x2451; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 052; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)53; GISEL-GFX11-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s254; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)55; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s256; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]57; GISEL-GFX11-NEXT: s_endpgm58;59; GISEL-GFX10-LABEL: v_icmp_i32_eq:60; GISEL-GFX10: ; %bb.0:61; GISEL-GFX10-NEXT: s_clause 0x162; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c63; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2464; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 065; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)66; GISEL-GFX10-NEXT: v_cmp_eq_u32_e64 s2, 0x64, s267; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s268; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]69; GISEL-GFX10-NEXT: s_endpgm70 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 32)71 store i32 %result, ptr addrspace(1) %out72 ret void73}74 75define amdgpu_kernel void @v_icmp_i32(ptr addrspace(1) %out, i32 %src) {76; SDAG-GFX11-LABEL: v_icmp_i32:77; SDAG-GFX11: ; %bb.0:78; SDAG-GFX11-NEXT: s_endpgm79;80; SDAG-GFX10-LABEL: v_icmp_i32:81; SDAG-GFX10: ; %bb.0:82; SDAG-GFX10-NEXT: s_endpgm83;84; GISEL-GFX11-LABEL: v_icmp_i32:85; GISEL-GFX11: ; %bb.0:86; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x2487; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, 088; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)89; GISEL-GFX11-NEXT: global_store_b32 v0, v0, s[0:1]90; GISEL-GFX11-NEXT: s_endpgm91;92; GISEL-GFX10-LABEL: v_icmp_i32:93; GISEL-GFX10: ; %bb.0:94; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2495; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, 096; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)97; GISEL-GFX10-NEXT: global_store_dword v0, v0, s[0:1]98; GISEL-GFX10-NEXT: s_endpgm99 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 30)100 store i32 %result, ptr addrspace(1) %out101 ret void102}103 104define amdgpu_kernel void @v_icmp_i32_ne(ptr addrspace(1) %out, i32 %src) {105; SDAG-GFX11-LABEL: v_icmp_i32_ne:106; SDAG-GFX11: ; %bb.0:107; SDAG-GFX11-NEXT: s_clause 0x1108; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c109; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24110; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)111; SDAG-GFX11-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2112; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)113; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2114; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]115; SDAG-GFX11-NEXT: s_endpgm116;117; SDAG-GFX10-LABEL: v_icmp_i32_ne:118; SDAG-GFX10: ; %bb.0:119; SDAG-GFX10-NEXT: s_clause 0x1120; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c121; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24122; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0123; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)124; SDAG-GFX10-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2125; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2126; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]127; SDAG-GFX10-NEXT: s_endpgm128;129; GISEL-GFX11-LABEL: v_icmp_i32_ne:130; GISEL-GFX11: ; %bb.0:131; GISEL-GFX11-NEXT: s_clause 0x1132; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c133; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24134; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0135; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)136; GISEL-GFX11-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2137; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)138; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2139; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]140; GISEL-GFX11-NEXT: s_endpgm141;142; GISEL-GFX10-LABEL: v_icmp_i32_ne:143; GISEL-GFX10: ; %bb.0:144; GISEL-GFX10-NEXT: s_clause 0x1145; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c146; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24147; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0148; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)149; GISEL-GFX10-NEXT: v_cmp_ne_u32_e64 s2, 0x64, s2150; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2151; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]152; GISEL-GFX10-NEXT: s_endpgm153 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 33)154 store i32 %result, ptr addrspace(1) %out155 ret void156}157 158define amdgpu_kernel void @v_icmp_i32_ugt(ptr addrspace(1) %out, i32 %src) {159; SDAG-GFX11-LABEL: v_icmp_i32_ugt:160; SDAG-GFX11: ; %bb.0:161; SDAG-GFX11-NEXT: s_clause 0x1162; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c163; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24164; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)165; SDAG-GFX11-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2166; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)167; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2168; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]169; SDAG-GFX11-NEXT: s_endpgm170;171; SDAG-GFX10-LABEL: v_icmp_i32_ugt:172; SDAG-GFX10: ; %bb.0:173; SDAG-GFX10-NEXT: s_clause 0x1174; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c175; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24176; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0177; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)178; SDAG-GFX10-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2179; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2180; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]181; SDAG-GFX10-NEXT: s_endpgm182;183; GISEL-GFX11-LABEL: v_icmp_i32_ugt:184; GISEL-GFX11: ; %bb.0:185; GISEL-GFX11-NEXT: s_clause 0x1186; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c187; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24188; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0189; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)190; GISEL-GFX11-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2191; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)192; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2193; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]194; GISEL-GFX11-NEXT: s_endpgm195;196; GISEL-GFX10-LABEL: v_icmp_i32_ugt:197; GISEL-GFX10: ; %bb.0:198; GISEL-GFX10-NEXT: s_clause 0x1199; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c200; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24201; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0202; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)203; GISEL-GFX10-NEXT: v_cmp_lt_u32_e64 s2, 0x64, s2204; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2205; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]206; GISEL-GFX10-NEXT: s_endpgm207 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 34)208 store i32 %result, ptr addrspace(1) %out209 ret void210}211 212define amdgpu_kernel void @v_icmp_i32_uge(ptr addrspace(1) %out, i32 %src) {213; SDAG-GFX11-LABEL: v_icmp_i32_uge:214; SDAG-GFX11: ; %bb.0:215; SDAG-GFX11-NEXT: s_clause 0x1216; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c217; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24218; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)219; SDAG-GFX11-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2220; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)221; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2222; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]223; SDAG-GFX11-NEXT: s_endpgm224;225; SDAG-GFX10-LABEL: v_icmp_i32_uge:226; SDAG-GFX10: ; %bb.0:227; SDAG-GFX10-NEXT: s_clause 0x1228; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c229; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24230; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0231; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)232; SDAG-GFX10-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2233; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2234; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]235; SDAG-GFX10-NEXT: s_endpgm236;237; GISEL-GFX11-LABEL: v_icmp_i32_uge:238; GISEL-GFX11: ; %bb.0:239; GISEL-GFX11-NEXT: s_clause 0x1240; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c241; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24242; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0243; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)244; GISEL-GFX11-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2245; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)246; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2247; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]248; GISEL-GFX11-NEXT: s_endpgm249;250; GISEL-GFX10-LABEL: v_icmp_i32_uge:251; GISEL-GFX10: ; %bb.0:252; GISEL-GFX10-NEXT: s_clause 0x1253; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c254; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24255; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0256; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)257; GISEL-GFX10-NEXT: v_cmp_le_u32_e64 s2, 0x64, s2258; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2259; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]260; GISEL-GFX10-NEXT: s_endpgm261 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 35)262 store i32 %result, ptr addrspace(1) %out263 ret void264}265 266define amdgpu_kernel void @v_icmp_i32_ult(ptr addrspace(1) %out, i32 %src) {267; SDAG-GFX11-LABEL: v_icmp_i32_ult:268; SDAG-GFX11: ; %bb.0:269; SDAG-GFX11-NEXT: s_clause 0x1270; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c271; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24272; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)273; SDAG-GFX11-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2274; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)275; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2276; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]277; SDAG-GFX11-NEXT: s_endpgm278;279; SDAG-GFX10-LABEL: v_icmp_i32_ult:280; SDAG-GFX10: ; %bb.0:281; SDAG-GFX10-NEXT: s_clause 0x1282; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c283; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24284; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0285; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)286; SDAG-GFX10-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2287; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2288; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]289; SDAG-GFX10-NEXT: s_endpgm290;291; GISEL-GFX11-LABEL: v_icmp_i32_ult:292; GISEL-GFX11: ; %bb.0:293; GISEL-GFX11-NEXT: s_clause 0x1294; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c295; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24296; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0297; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)298; GISEL-GFX11-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2299; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)300; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2301; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]302; GISEL-GFX11-NEXT: s_endpgm303;304; GISEL-GFX10-LABEL: v_icmp_i32_ult:305; GISEL-GFX10: ; %bb.0:306; GISEL-GFX10-NEXT: s_clause 0x1307; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c308; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24309; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0310; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)311; GISEL-GFX10-NEXT: v_cmp_gt_u32_e64 s2, 0x64, s2312; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2313; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]314; GISEL-GFX10-NEXT: s_endpgm315 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 36)316 store i32 %result, ptr addrspace(1) %out317 ret void318}319 320define amdgpu_kernel void @v_icmp_i32_ule(ptr addrspace(1) %out, i32 %src) {321; SDAG-GFX11-LABEL: v_icmp_i32_ule:322; SDAG-GFX11: ; %bb.0:323; SDAG-GFX11-NEXT: s_clause 0x1324; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c325; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24326; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)327; SDAG-GFX11-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2328; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)329; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2330; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]331; SDAG-GFX11-NEXT: s_endpgm332;333; SDAG-GFX10-LABEL: v_icmp_i32_ule:334; SDAG-GFX10: ; %bb.0:335; SDAG-GFX10-NEXT: s_clause 0x1336; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c337; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24338; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0339; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)340; SDAG-GFX10-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2341; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2342; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]343; SDAG-GFX10-NEXT: s_endpgm344;345; GISEL-GFX11-LABEL: v_icmp_i32_ule:346; GISEL-GFX11: ; %bb.0:347; GISEL-GFX11-NEXT: s_clause 0x1348; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c349; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24350; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0351; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)352; GISEL-GFX11-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2353; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)354; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2355; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]356; GISEL-GFX11-NEXT: s_endpgm357;358; GISEL-GFX10-LABEL: v_icmp_i32_ule:359; GISEL-GFX10: ; %bb.0:360; GISEL-GFX10-NEXT: s_clause 0x1361; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c362; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24363; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0364; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)365; GISEL-GFX10-NEXT: v_cmp_ge_u32_e64 s2, 0x64, s2366; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2367; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]368; GISEL-GFX10-NEXT: s_endpgm369 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 37)370 store i32 %result, ptr addrspace(1) %out371 ret void372}373 374define amdgpu_kernel void @v_icmp_i32_sgt(ptr addrspace(1) %out, i32 %src) #1 {375; SDAG-GFX11-LABEL: v_icmp_i32_sgt:376; SDAG-GFX11: ; %bb.0:377; SDAG-GFX11-NEXT: s_clause 0x1378; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c379; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24380; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)381; SDAG-GFX11-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2382; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)383; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2384; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]385; SDAG-GFX11-NEXT: s_endpgm386;387; SDAG-GFX10-LABEL: v_icmp_i32_sgt:388; SDAG-GFX10: ; %bb.0:389; SDAG-GFX10-NEXT: s_clause 0x1390; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c391; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24392; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0393; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)394; SDAG-GFX10-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2395; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2396; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]397; SDAG-GFX10-NEXT: s_endpgm398;399; GISEL-GFX11-LABEL: v_icmp_i32_sgt:400; GISEL-GFX11: ; %bb.0:401; GISEL-GFX11-NEXT: s_clause 0x1402; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c403; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24404; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0405; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)406; GISEL-GFX11-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2407; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)408; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2409; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]410; GISEL-GFX11-NEXT: s_endpgm411;412; GISEL-GFX10-LABEL: v_icmp_i32_sgt:413; GISEL-GFX10: ; %bb.0:414; GISEL-GFX10-NEXT: s_clause 0x1415; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c416; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24417; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0418; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)419; GISEL-GFX10-NEXT: v_cmp_lt_i32_e64 s2, 0x64, s2420; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2421; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]422; GISEL-GFX10-NEXT: s_endpgm423 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 38)424 store i32 %result, ptr addrspace(1) %out425 ret void426}427 428define amdgpu_kernel void @v_icmp_i32_sge(ptr addrspace(1) %out, i32 %src) {429; SDAG-GFX11-LABEL: v_icmp_i32_sge:430; SDAG-GFX11: ; %bb.0:431; SDAG-GFX11-NEXT: s_clause 0x1432; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c433; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24434; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)435; SDAG-GFX11-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2436; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)437; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2438; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]439; SDAG-GFX11-NEXT: s_endpgm440;441; SDAG-GFX10-LABEL: v_icmp_i32_sge:442; SDAG-GFX10: ; %bb.0:443; SDAG-GFX10-NEXT: s_clause 0x1444; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c445; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24446; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0447; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)448; SDAG-GFX10-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2449; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2450; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]451; SDAG-GFX10-NEXT: s_endpgm452;453; GISEL-GFX11-LABEL: v_icmp_i32_sge:454; GISEL-GFX11: ; %bb.0:455; GISEL-GFX11-NEXT: s_clause 0x1456; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c457; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24458; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0459; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)460; GISEL-GFX11-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2461; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)462; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2463; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]464; GISEL-GFX11-NEXT: s_endpgm465;466; GISEL-GFX10-LABEL: v_icmp_i32_sge:467; GISEL-GFX10: ; %bb.0:468; GISEL-GFX10-NEXT: s_clause 0x1469; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c470; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24471; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0472; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)473; GISEL-GFX10-NEXT: v_cmp_le_i32_e64 s2, 0x64, s2474; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2475; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]476; GISEL-GFX10-NEXT: s_endpgm477 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 39)478 store i32 %result, ptr addrspace(1) %out479 ret void480}481 482define amdgpu_kernel void @v_icmp_i32_slt(ptr addrspace(1) %out, i32 %src) {483; SDAG-GFX11-LABEL: v_icmp_i32_slt:484; SDAG-GFX11: ; %bb.0:485; SDAG-GFX11-NEXT: s_clause 0x1486; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c487; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24488; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)489; SDAG-GFX11-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2490; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)491; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2492; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]493; SDAG-GFX11-NEXT: s_endpgm494;495; SDAG-GFX10-LABEL: v_icmp_i32_slt:496; SDAG-GFX10: ; %bb.0:497; SDAG-GFX10-NEXT: s_clause 0x1498; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c499; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24500; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0501; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)502; SDAG-GFX10-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2503; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2504; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]505; SDAG-GFX10-NEXT: s_endpgm506;507; GISEL-GFX11-LABEL: v_icmp_i32_slt:508; GISEL-GFX11: ; %bb.0:509; GISEL-GFX11-NEXT: s_clause 0x1510; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c511; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24512; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0513; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)514; GISEL-GFX11-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2515; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)516; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2517; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]518; GISEL-GFX11-NEXT: s_endpgm519;520; GISEL-GFX10-LABEL: v_icmp_i32_slt:521; GISEL-GFX10: ; %bb.0:522; GISEL-GFX10-NEXT: s_clause 0x1523; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c524; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24525; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0526; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)527; GISEL-GFX10-NEXT: v_cmp_gt_i32_e64 s2, 0x64, s2528; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2529; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]530; GISEL-GFX10-NEXT: s_endpgm531 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 40)532 store i32 %result, ptr addrspace(1) %out533 ret void534}535 536define amdgpu_kernel void @v_icmp_i32_sle(ptr addrspace(1) %out, i32 %src) {537; SDAG-GFX11-LABEL: v_icmp_i32_sle:538; SDAG-GFX11: ; %bb.0:539; SDAG-GFX11-NEXT: s_clause 0x1540; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c541; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24542; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)543; SDAG-GFX11-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2544; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)545; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2546; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]547; SDAG-GFX11-NEXT: s_endpgm548;549; SDAG-GFX10-LABEL: v_icmp_i32_sle:550; SDAG-GFX10: ; %bb.0:551; SDAG-GFX10-NEXT: s_clause 0x1552; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c553; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24554; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0555; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)556; SDAG-GFX10-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2557; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2558; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]559; SDAG-GFX10-NEXT: s_endpgm560;561; GISEL-GFX11-LABEL: v_icmp_i32_sle:562; GISEL-GFX11: ; %bb.0:563; GISEL-GFX11-NEXT: s_clause 0x1564; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c565; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24566; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0567; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)568; GISEL-GFX11-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2569; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)570; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2571; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]572; GISEL-GFX11-NEXT: s_endpgm573;574; GISEL-GFX10-LABEL: v_icmp_i32_sle:575; GISEL-GFX10: ; %bb.0:576; GISEL-GFX10-NEXT: s_clause 0x1577; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c578; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24579; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0580; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)581; GISEL-GFX10-NEXT: v_cmp_ge_i32_e64 s2, 0x64, s2582; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2583; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]584; GISEL-GFX10-NEXT: s_endpgm585 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 41)586 store i32 %result, ptr addrspace(1) %out587 ret void588}589 590define amdgpu_kernel void @v_icmp_i64_eq(ptr addrspace(1) %out, i64 %src) {591; SDAG-GFX11-LABEL: v_icmp_i64_eq:592; SDAG-GFX11: ; %bb.0:593; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24594; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)595; SDAG-GFX11-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]596; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)597; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2598; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]599; SDAG-GFX11-NEXT: s_endpgm600;601; SDAG-GFX10-LABEL: v_icmp_i64_eq:602; SDAG-GFX10: ; %bb.0:603; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24604; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0605; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)606; SDAG-GFX10-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]607; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2608; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]609; SDAG-GFX10-NEXT: s_endpgm610;611; GISEL-GFX11-LABEL: v_icmp_i64_eq:612; GISEL-GFX11: ; %bb.0:613; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24614; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0615; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)616; GISEL-GFX11-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]617; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)618; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2619; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]620; GISEL-GFX11-NEXT: s_endpgm621;622; GISEL-GFX10-LABEL: v_icmp_i64_eq:623; GISEL-GFX10: ; %bb.0:624; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24625; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0626; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)627; GISEL-GFX10-NEXT: v_cmp_eq_u64_e64 s2, 0x64, s[2:3]628; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2629; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]630; GISEL-GFX10-NEXT: s_endpgm631 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 32)632 store i32 %result, ptr addrspace(1) %out633 ret void634}635 636define amdgpu_kernel void @v_icmp_i64_ne(ptr addrspace(1) %out, i64 %src) {637; SDAG-GFX11-LABEL: v_icmp_i64_ne:638; SDAG-GFX11: ; %bb.0:639; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24640; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)641; SDAG-GFX11-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]642; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)643; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2644; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]645; SDAG-GFX11-NEXT: s_endpgm646;647; SDAG-GFX10-LABEL: v_icmp_i64_ne:648; SDAG-GFX10: ; %bb.0:649; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24650; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0651; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)652; SDAG-GFX10-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]653; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2654; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]655; SDAG-GFX10-NEXT: s_endpgm656;657; GISEL-GFX11-LABEL: v_icmp_i64_ne:658; GISEL-GFX11: ; %bb.0:659; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24660; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0661; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)662; GISEL-GFX11-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]663; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)664; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2665; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]666; GISEL-GFX11-NEXT: s_endpgm667;668; GISEL-GFX10-LABEL: v_icmp_i64_ne:669; GISEL-GFX10: ; %bb.0:670; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24671; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0672; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)673; GISEL-GFX10-NEXT: v_cmp_ne_u64_e64 s2, 0x64, s[2:3]674; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2675; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]676; GISEL-GFX10-NEXT: s_endpgm677 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 33)678 store i32 %result, ptr addrspace(1) %out679 ret void680}681 682define amdgpu_kernel void @v_icmp_u64_ugt(ptr addrspace(1) %out, i64 %src) {683; SDAG-GFX11-LABEL: v_icmp_u64_ugt:684; SDAG-GFX11: ; %bb.0:685; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24686; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)687; SDAG-GFX11-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]688; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)689; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2690; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]691; SDAG-GFX11-NEXT: s_endpgm692;693; SDAG-GFX10-LABEL: v_icmp_u64_ugt:694; SDAG-GFX10: ; %bb.0:695; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24696; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0697; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)698; SDAG-GFX10-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]699; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2700; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]701; SDAG-GFX10-NEXT: s_endpgm702;703; GISEL-GFX11-LABEL: v_icmp_u64_ugt:704; GISEL-GFX11: ; %bb.0:705; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24706; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0707; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)708; GISEL-GFX11-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]709; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)710; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2711; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]712; GISEL-GFX11-NEXT: s_endpgm713;714; GISEL-GFX10-LABEL: v_icmp_u64_ugt:715; GISEL-GFX10: ; %bb.0:716; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24717; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0718; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)719; GISEL-GFX10-NEXT: v_cmp_lt_u64_e64 s2, 0x64, s[2:3]720; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2721; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]722; GISEL-GFX10-NEXT: s_endpgm723 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 34)724 store i32 %result, ptr addrspace(1) %out725 ret void726}727 728define amdgpu_kernel void @v_icmp_u64_uge(ptr addrspace(1) %out, i64 %src) {729; SDAG-GFX11-LABEL: v_icmp_u64_uge:730; SDAG-GFX11: ; %bb.0:731; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24732; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)733; SDAG-GFX11-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]734; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)735; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2736; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]737; SDAG-GFX11-NEXT: s_endpgm738;739; SDAG-GFX10-LABEL: v_icmp_u64_uge:740; SDAG-GFX10: ; %bb.0:741; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24742; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0743; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)744; SDAG-GFX10-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]745; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2746; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]747; SDAG-GFX10-NEXT: s_endpgm748;749; GISEL-GFX11-LABEL: v_icmp_u64_uge:750; GISEL-GFX11: ; %bb.0:751; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24752; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0753; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)754; GISEL-GFX11-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]755; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)756; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2757; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]758; GISEL-GFX11-NEXT: s_endpgm759;760; GISEL-GFX10-LABEL: v_icmp_u64_uge:761; GISEL-GFX10: ; %bb.0:762; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24763; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0764; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)765; GISEL-GFX10-NEXT: v_cmp_le_u64_e64 s2, 0x64, s[2:3]766; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2767; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]768; GISEL-GFX10-NEXT: s_endpgm769 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 35)770 store i32 %result, ptr addrspace(1) %out771 ret void772}773 774define amdgpu_kernel void @v_icmp_u64_ult(ptr addrspace(1) %out, i64 %src) {775; SDAG-GFX11-LABEL: v_icmp_u64_ult:776; SDAG-GFX11: ; %bb.0:777; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24778; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)779; SDAG-GFX11-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]780; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)781; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2782; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]783; SDAG-GFX11-NEXT: s_endpgm784;785; SDAG-GFX10-LABEL: v_icmp_u64_ult:786; SDAG-GFX10: ; %bb.0:787; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24788; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0789; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)790; SDAG-GFX10-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]791; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2792; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]793; SDAG-GFX10-NEXT: s_endpgm794;795; GISEL-GFX11-LABEL: v_icmp_u64_ult:796; GISEL-GFX11: ; %bb.0:797; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24798; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0799; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)800; GISEL-GFX11-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]801; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)802; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2803; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]804; GISEL-GFX11-NEXT: s_endpgm805;806; GISEL-GFX10-LABEL: v_icmp_u64_ult:807; GISEL-GFX10: ; %bb.0:808; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24809; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0810; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)811; GISEL-GFX10-NEXT: v_cmp_gt_u64_e64 s2, 0x64, s[2:3]812; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2813; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]814; GISEL-GFX10-NEXT: s_endpgm815 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 36)816 store i32 %result, ptr addrspace(1) %out817 ret void818}819 820define amdgpu_kernel void @v_icmp_u64_ule(ptr addrspace(1) %out, i64 %src) {821; SDAG-GFX11-LABEL: v_icmp_u64_ule:822; SDAG-GFX11: ; %bb.0:823; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24824; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)825; SDAG-GFX11-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]826; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)827; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2828; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]829; SDAG-GFX11-NEXT: s_endpgm830;831; SDAG-GFX10-LABEL: v_icmp_u64_ule:832; SDAG-GFX10: ; %bb.0:833; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24834; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0835; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)836; SDAG-GFX10-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]837; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2838; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]839; SDAG-GFX10-NEXT: s_endpgm840;841; GISEL-GFX11-LABEL: v_icmp_u64_ule:842; GISEL-GFX11: ; %bb.0:843; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24844; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0845; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)846; GISEL-GFX11-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]847; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)848; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2849; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]850; GISEL-GFX11-NEXT: s_endpgm851;852; GISEL-GFX10-LABEL: v_icmp_u64_ule:853; GISEL-GFX10: ; %bb.0:854; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24855; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0856; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)857; GISEL-GFX10-NEXT: v_cmp_ge_u64_e64 s2, 0x64, s[2:3]858; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2859; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]860; GISEL-GFX10-NEXT: s_endpgm861 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 37)862 store i32 %result, ptr addrspace(1) %out863 ret void864}865 866define amdgpu_kernel void @v_icmp_i64_sgt(ptr addrspace(1) %out, i64 %src) {867; SDAG-GFX11-LABEL: v_icmp_i64_sgt:868; SDAG-GFX11: ; %bb.0:869; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24870; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)871; SDAG-GFX11-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]872; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)873; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2874; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]875; SDAG-GFX11-NEXT: s_endpgm876;877; SDAG-GFX10-LABEL: v_icmp_i64_sgt:878; SDAG-GFX10: ; %bb.0:879; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24880; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0881; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)882; SDAG-GFX10-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]883; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2884; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]885; SDAG-GFX10-NEXT: s_endpgm886;887; GISEL-GFX11-LABEL: v_icmp_i64_sgt:888; GISEL-GFX11: ; %bb.0:889; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24890; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0891; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)892; GISEL-GFX11-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]893; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)894; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2895; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]896; GISEL-GFX11-NEXT: s_endpgm897;898; GISEL-GFX10-LABEL: v_icmp_i64_sgt:899; GISEL-GFX10: ; %bb.0:900; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24901; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0902; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)903; GISEL-GFX10-NEXT: v_cmp_lt_i64_e64 s2, 0x64, s[2:3]904; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2905; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]906; GISEL-GFX10-NEXT: s_endpgm907 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 38)908 store i32 %result, ptr addrspace(1) %out909 ret void910}911 912define amdgpu_kernel void @v_icmp_i64_sge(ptr addrspace(1) %out, i64 %src) {913; SDAG-GFX11-LABEL: v_icmp_i64_sge:914; SDAG-GFX11: ; %bb.0:915; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24916; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)917; SDAG-GFX11-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]918; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)919; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2920; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]921; SDAG-GFX11-NEXT: s_endpgm922;923; SDAG-GFX10-LABEL: v_icmp_i64_sge:924; SDAG-GFX10: ; %bb.0:925; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24926; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0927; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)928; SDAG-GFX10-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]929; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2930; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]931; SDAG-GFX10-NEXT: s_endpgm932;933; GISEL-GFX11-LABEL: v_icmp_i64_sge:934; GISEL-GFX11: ; %bb.0:935; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24936; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0937; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)938; GISEL-GFX11-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]939; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)940; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2941; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]942; GISEL-GFX11-NEXT: s_endpgm943;944; GISEL-GFX10-LABEL: v_icmp_i64_sge:945; GISEL-GFX10: ; %bb.0:946; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24947; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0948; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)949; GISEL-GFX10-NEXT: v_cmp_le_i64_e64 s2, 0x64, s[2:3]950; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2951; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]952; GISEL-GFX10-NEXT: s_endpgm953 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 39)954 store i32 %result, ptr addrspace(1) %out955 ret void956}957 958define amdgpu_kernel void @v_icmp_i64_slt(ptr addrspace(1) %out, i64 %src) {959; SDAG-GFX11-LABEL: v_icmp_i64_slt:960; SDAG-GFX11: ; %bb.0:961; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24962; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)963; SDAG-GFX11-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]964; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)965; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s2966; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]967; SDAG-GFX11-NEXT: s_endpgm968;969; SDAG-GFX10-LABEL: v_icmp_i64_slt:970; SDAG-GFX10: ; %bb.0:971; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24972; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 0973; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)974; SDAG-GFX10-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]975; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s2976; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]977; SDAG-GFX10-NEXT: s_endpgm978;979; GISEL-GFX11-LABEL: v_icmp_i64_slt:980; GISEL-GFX11: ; %bb.0:981; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x24982; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 0983; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)984; GISEL-GFX11-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]985; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)986; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s2987; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]988; GISEL-GFX11-NEXT: s_endpgm989;990; GISEL-GFX10-LABEL: v_icmp_i64_slt:991; GISEL-GFX10: ; %bb.0:992; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24993; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 0994; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)995; GISEL-GFX10-NEXT: v_cmp_gt_i64_e64 s2, 0x64, s[2:3]996; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s2997; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]998; GISEL-GFX10-NEXT: s_endpgm999 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 40)1000 store i32 %result, ptr addrspace(1) %out1001 ret void1002}1003 1004define amdgpu_kernel void @v_icmp_i64_sle(ptr addrspace(1) %out, i64 %src) {1005; SDAG-GFX11-LABEL: v_icmp_i64_sle:1006; SDAG-GFX11: ; %bb.0:1007; SDAG-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x241008; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1009; SDAG-GFX11-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]1010; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1011; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21012; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1013; SDAG-GFX11-NEXT: s_endpgm1014;1015; SDAG-GFX10-LABEL: v_icmp_i64_sle:1016; SDAG-GFX10: ; %bb.0:1017; SDAG-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241018; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01019; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1020; SDAG-GFX10-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]1021; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21022; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1023; SDAG-GFX10-NEXT: s_endpgm1024;1025; GISEL-GFX11-LABEL: v_icmp_i64_sle:1026; GISEL-GFX11: ; %bb.0:1027; GISEL-GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x241028; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01029; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1030; GISEL-GFX11-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]1031; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1032; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21033; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1034; GISEL-GFX11-NEXT: s_endpgm1035;1036; GISEL-GFX10-LABEL: v_icmp_i64_sle:1037; GISEL-GFX10: ; %bb.0:1038; GISEL-GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241039; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01040; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1041; GISEL-GFX10-NEXT: v_cmp_ge_i64_e64 s2, 0x64, s[2:3]1042; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21043; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1044; GISEL-GFX10-NEXT: s_endpgm1045 %result = call i32 @llvm.amdgcn.icmp.i64(i64 %src, i64 100, i32 41)1046 store i32 %result, ptr addrspace(1) %out1047 ret void1048}1049 1050define amdgpu_kernel void @v_icmp_i16_eq(ptr addrspace(1) %out, i16 %src) {1051; SDAG-GFX11-LABEL: v_icmp_i16_eq:1052; SDAG-GFX11: ; %bb.0:1053; SDAG-GFX11-NEXT: s_clause 0x11054; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1055; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241056; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1057; SDAG-GFX11-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s21058; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1059; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21060; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1061; SDAG-GFX11-NEXT: s_endpgm1062;1063; SDAG-GFX10-LABEL: v_icmp_i16_eq:1064; SDAG-GFX10: ; %bb.0:1065; SDAG-GFX10-NEXT: s_clause 0x11066; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1067; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241068; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01069; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1070; SDAG-GFX10-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s21071; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21072; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1073; SDAG-GFX10-NEXT: s_endpgm1074;1075; GISEL-GFX11-LABEL: v_icmp_i16_eq:1076; GISEL-GFX11: ; %bb.0:1077; GISEL-GFX11-NEXT: s_clause 0x11078; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1079; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241080; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01081; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1082; GISEL-GFX11-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s21083; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1084; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21085; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1086; GISEL-GFX11-NEXT: s_endpgm1087;1088; GISEL-GFX10-LABEL: v_icmp_i16_eq:1089; GISEL-GFX10: ; %bb.0:1090; GISEL-GFX10-NEXT: s_clause 0x11091; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1092; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241093; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01094; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1095; GISEL-GFX10-NEXT: v_cmp_eq_u16_e64 s2, 0x64, s21096; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21097; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1098; GISEL-GFX10-NEXT: s_endpgm1099 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 32)1100 store i32 %result, ptr addrspace(1) %out1101 ret void1102}1103 1104define amdgpu_kernel void @v_icmp_i16(ptr addrspace(1) %out, i16 %src) {1105; SDAG-GFX11-LABEL: v_icmp_i16:1106; SDAG-GFX11: ; %bb.0:1107; SDAG-GFX11-NEXT: s_endpgm1108;1109; SDAG-GFX10-LABEL: v_icmp_i16:1110; SDAG-GFX10: ; %bb.0:1111; SDAG-GFX10-NEXT: s_endpgm1112;1113; GISEL-GFX11-LABEL: v_icmp_i16:1114; GISEL-GFX11: ; %bb.0:1115; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241116; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, 01117; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1118; GISEL-GFX11-NEXT: global_store_b32 v0, v0, s[0:1]1119; GISEL-GFX11-NEXT: s_endpgm1120;1121; GISEL-GFX10-LABEL: v_icmp_i16:1122; GISEL-GFX10: ; %bb.0:1123; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241124; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, 01125; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1126; GISEL-GFX10-NEXT: global_store_dword v0, v0, s[0:1]1127; GISEL-GFX10-NEXT: s_endpgm1128 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 30)1129 store i32 %result, ptr addrspace(1) %out1130 ret void1131}1132 1133define amdgpu_kernel void @v_icmp_i16_ne(ptr addrspace(1) %out, i16 %src) {1134; SDAG-GFX11-LABEL: v_icmp_i16_ne:1135; SDAG-GFX11: ; %bb.0:1136; SDAG-GFX11-NEXT: s_clause 0x11137; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1138; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241139; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1140; SDAG-GFX11-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s21141; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1142; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21143; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1144; SDAG-GFX11-NEXT: s_endpgm1145;1146; SDAG-GFX10-LABEL: v_icmp_i16_ne:1147; SDAG-GFX10: ; %bb.0:1148; SDAG-GFX10-NEXT: s_clause 0x11149; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1150; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241151; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01152; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1153; SDAG-GFX10-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s21154; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21155; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1156; SDAG-GFX10-NEXT: s_endpgm1157;1158; GISEL-GFX11-LABEL: v_icmp_i16_ne:1159; GISEL-GFX11: ; %bb.0:1160; GISEL-GFX11-NEXT: s_clause 0x11161; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1162; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241163; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01164; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1165; GISEL-GFX11-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s21166; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1167; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21168; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1169; GISEL-GFX11-NEXT: s_endpgm1170;1171; GISEL-GFX10-LABEL: v_icmp_i16_ne:1172; GISEL-GFX10: ; %bb.0:1173; GISEL-GFX10-NEXT: s_clause 0x11174; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1175; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241176; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01177; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1178; GISEL-GFX10-NEXT: v_cmp_ne_u16_e64 s2, 0x64, s21179; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21180; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1181; GISEL-GFX10-NEXT: s_endpgm1182 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 33)1183 store i32 %result, ptr addrspace(1) %out1184 ret void1185}1186 1187define amdgpu_kernel void @v_icmp_i16_ugt(ptr addrspace(1) %out, i16 %src) {1188; SDAG-GFX11-LABEL: v_icmp_i16_ugt:1189; SDAG-GFX11: ; %bb.0:1190; SDAG-GFX11-NEXT: s_clause 0x11191; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1192; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241193; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1194; SDAG-GFX11-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s21195; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1196; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21197; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1198; SDAG-GFX11-NEXT: s_endpgm1199;1200; SDAG-GFX10-LABEL: v_icmp_i16_ugt:1201; SDAG-GFX10: ; %bb.0:1202; SDAG-GFX10-NEXT: s_clause 0x11203; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1204; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241205; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01206; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1207; SDAG-GFX10-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s21208; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21209; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1210; SDAG-GFX10-NEXT: s_endpgm1211;1212; GISEL-GFX11-LABEL: v_icmp_i16_ugt:1213; GISEL-GFX11: ; %bb.0:1214; GISEL-GFX11-NEXT: s_clause 0x11215; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1216; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241217; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01218; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1219; GISEL-GFX11-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s21220; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1221; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21222; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1223; GISEL-GFX11-NEXT: s_endpgm1224;1225; GISEL-GFX10-LABEL: v_icmp_i16_ugt:1226; GISEL-GFX10: ; %bb.0:1227; GISEL-GFX10-NEXT: s_clause 0x11228; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1229; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241230; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01231; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1232; GISEL-GFX10-NEXT: v_cmp_lt_u16_e64 s2, 0x64, s21233; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21234; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1235; GISEL-GFX10-NEXT: s_endpgm1236 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 34)1237 store i32 %result, ptr addrspace(1) %out1238 ret void1239}1240 1241define amdgpu_kernel void @v_icmp_i16_uge(ptr addrspace(1) %out, i16 %src) {1242; SDAG-GFX11-LABEL: v_icmp_i16_uge:1243; SDAG-GFX11: ; %bb.0:1244; SDAG-GFX11-NEXT: s_clause 0x11245; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1246; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241247; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1248; SDAG-GFX11-NEXT: v_cmp_le_u16_e64 s2, 0x64, s21249; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1250; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21251; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1252; SDAG-GFX11-NEXT: s_endpgm1253;1254; SDAG-GFX10-LABEL: v_icmp_i16_uge:1255; SDAG-GFX10: ; %bb.0:1256; SDAG-GFX10-NEXT: s_clause 0x11257; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1258; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241259; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01260; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1261; SDAG-GFX10-NEXT: v_cmp_le_u16_e64 s2, 0x64, s21262; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21263; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1264; SDAG-GFX10-NEXT: s_endpgm1265;1266; GISEL-GFX11-LABEL: v_icmp_i16_uge:1267; GISEL-GFX11: ; %bb.0:1268; GISEL-GFX11-NEXT: s_clause 0x11269; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1270; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241271; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01272; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1273; GISEL-GFX11-NEXT: v_cmp_le_u16_e64 s2, 0x64, s21274; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1275; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21276; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1277; GISEL-GFX11-NEXT: s_endpgm1278;1279; GISEL-GFX10-LABEL: v_icmp_i16_uge:1280; GISEL-GFX10: ; %bb.0:1281; GISEL-GFX10-NEXT: s_clause 0x11282; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1283; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241284; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01285; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1286; GISEL-GFX10-NEXT: v_cmp_le_u16_e64 s2, 0x64, s21287; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21288; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1289; GISEL-GFX10-NEXT: s_endpgm1290 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 35)1291 store i32 %result, ptr addrspace(1) %out1292 ret void1293}1294 1295define amdgpu_kernel void @v_icmp_i16_ult(ptr addrspace(1) %out, i16 %src) {1296; SDAG-GFX11-LABEL: v_icmp_i16_ult:1297; SDAG-GFX11: ; %bb.0:1298; SDAG-GFX11-NEXT: s_clause 0x11299; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1300; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241301; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1302; SDAG-GFX11-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s21303; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1304; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21305; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1306; SDAG-GFX11-NEXT: s_endpgm1307;1308; SDAG-GFX10-LABEL: v_icmp_i16_ult:1309; SDAG-GFX10: ; %bb.0:1310; SDAG-GFX10-NEXT: s_clause 0x11311; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1312; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241313; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01314; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1315; SDAG-GFX10-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s21316; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21317; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1318; SDAG-GFX10-NEXT: s_endpgm1319;1320; GISEL-GFX11-LABEL: v_icmp_i16_ult:1321; GISEL-GFX11: ; %bb.0:1322; GISEL-GFX11-NEXT: s_clause 0x11323; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1324; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241325; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01326; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1327; GISEL-GFX11-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s21328; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1329; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21330; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1331; GISEL-GFX11-NEXT: s_endpgm1332;1333; GISEL-GFX10-LABEL: v_icmp_i16_ult:1334; GISEL-GFX10: ; %bb.0:1335; GISEL-GFX10-NEXT: s_clause 0x11336; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1337; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241338; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01339; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1340; GISEL-GFX10-NEXT: v_cmp_gt_u16_e64 s2, 0x64, s21341; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21342; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1343; GISEL-GFX10-NEXT: s_endpgm1344 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 36)1345 store i32 %result, ptr addrspace(1) %out1346 ret void1347}1348 1349define amdgpu_kernel void @v_icmp_i16_ule(ptr addrspace(1) %out, i16 %src) {1350; SDAG-GFX11-LABEL: v_icmp_i16_ule:1351; SDAG-GFX11: ; %bb.0:1352; SDAG-GFX11-NEXT: s_clause 0x11353; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1354; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241355; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1356; SDAG-GFX11-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s21357; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1358; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21359; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1360; SDAG-GFX11-NEXT: s_endpgm1361;1362; SDAG-GFX10-LABEL: v_icmp_i16_ule:1363; SDAG-GFX10: ; %bb.0:1364; SDAG-GFX10-NEXT: s_clause 0x11365; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1366; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241367; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01368; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1369; SDAG-GFX10-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s21370; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21371; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1372; SDAG-GFX10-NEXT: s_endpgm1373;1374; GISEL-GFX11-LABEL: v_icmp_i16_ule:1375; GISEL-GFX11: ; %bb.0:1376; GISEL-GFX11-NEXT: s_clause 0x11377; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1378; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241379; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01380; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1381; GISEL-GFX11-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s21382; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1383; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21384; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1385; GISEL-GFX11-NEXT: s_endpgm1386;1387; GISEL-GFX10-LABEL: v_icmp_i16_ule:1388; GISEL-GFX10: ; %bb.0:1389; GISEL-GFX10-NEXT: s_clause 0x11390; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1391; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241392; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01393; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1394; GISEL-GFX10-NEXT: v_cmp_ge_u16_e64 s2, 0x64, s21395; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21396; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1397; GISEL-GFX10-NEXT: s_endpgm1398 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 37)1399 store i32 %result, ptr addrspace(1) %out1400 ret void1401}1402 1403define amdgpu_kernel void @v_icmp_i16_sgt(ptr addrspace(1) %out, i16 %src) #1 {1404; SDAG-GFX11-LABEL: v_icmp_i16_sgt:1405; SDAG-GFX11: ; %bb.0:1406; SDAG-GFX11-NEXT: s_clause 0x11407; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1408; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241409; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1410; SDAG-GFX11-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s21411; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1412; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21413; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1414; SDAG-GFX11-NEXT: s_endpgm1415;1416; SDAG-GFX10-LABEL: v_icmp_i16_sgt:1417; SDAG-GFX10: ; %bb.0:1418; SDAG-GFX10-NEXT: s_clause 0x11419; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1420; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241421; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01422; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1423; SDAG-GFX10-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s21424; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21425; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1426; SDAG-GFX10-NEXT: s_endpgm1427;1428; GISEL-GFX11-LABEL: v_icmp_i16_sgt:1429; GISEL-GFX11: ; %bb.0:1430; GISEL-GFX11-NEXT: s_clause 0x11431; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1432; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241433; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01434; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1435; GISEL-GFX11-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s21436; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1437; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21438; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1439; GISEL-GFX11-NEXT: s_endpgm1440;1441; GISEL-GFX10-LABEL: v_icmp_i16_sgt:1442; GISEL-GFX10: ; %bb.0:1443; GISEL-GFX10-NEXT: s_clause 0x11444; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1445; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241446; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01447; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1448; GISEL-GFX10-NEXT: v_cmp_lt_i16_e64 s2, 0x64, s21449; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21450; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1451; GISEL-GFX10-NEXT: s_endpgm1452 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 38)1453 store i32 %result, ptr addrspace(1) %out1454 ret void1455}1456 1457define amdgpu_kernel void @v_icmp_i16_sge(ptr addrspace(1) %out, i16 %src) {1458; SDAG-GFX11-LABEL: v_icmp_i16_sge:1459; SDAG-GFX11: ; %bb.0:1460; SDAG-GFX11-NEXT: s_clause 0x11461; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1462; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241463; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1464; SDAG-GFX11-NEXT: v_cmp_le_i16_e64 s2, 0x64, s21465; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1466; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21467; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1468; SDAG-GFX11-NEXT: s_endpgm1469;1470; SDAG-GFX10-LABEL: v_icmp_i16_sge:1471; SDAG-GFX10: ; %bb.0:1472; SDAG-GFX10-NEXT: s_clause 0x11473; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1474; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241475; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01476; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1477; SDAG-GFX10-NEXT: v_cmp_le_i16_e64 s2, 0x64, s21478; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21479; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1480; SDAG-GFX10-NEXT: s_endpgm1481;1482; GISEL-GFX11-LABEL: v_icmp_i16_sge:1483; GISEL-GFX11: ; %bb.0:1484; GISEL-GFX11-NEXT: s_clause 0x11485; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1486; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241487; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01488; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1489; GISEL-GFX11-NEXT: v_cmp_le_i16_e64 s2, 0x64, s21490; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1491; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21492; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1493; GISEL-GFX11-NEXT: s_endpgm1494;1495; GISEL-GFX10-LABEL: v_icmp_i16_sge:1496; GISEL-GFX10: ; %bb.0:1497; GISEL-GFX10-NEXT: s_clause 0x11498; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1499; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241500; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01501; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1502; GISEL-GFX10-NEXT: v_cmp_le_i16_e64 s2, 0x64, s21503; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21504; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1505; GISEL-GFX10-NEXT: s_endpgm1506 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 39)1507 store i32 %result, ptr addrspace(1) %out1508 ret void1509}1510 1511define amdgpu_kernel void @v_icmp_i16_slt(ptr addrspace(1) %out, i16 %src) {1512; SDAG-GFX11-LABEL: v_icmp_i16_slt:1513; SDAG-GFX11: ; %bb.0:1514; SDAG-GFX11-NEXT: s_clause 0x11515; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1516; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241517; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1518; SDAG-GFX11-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s21519; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1520; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21521; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1522; SDAG-GFX11-NEXT: s_endpgm1523;1524; SDAG-GFX10-LABEL: v_icmp_i16_slt:1525; SDAG-GFX10: ; %bb.0:1526; SDAG-GFX10-NEXT: s_clause 0x11527; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1528; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241529; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01530; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1531; SDAG-GFX10-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s21532; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21533; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1534; SDAG-GFX10-NEXT: s_endpgm1535;1536; GISEL-GFX11-LABEL: v_icmp_i16_slt:1537; GISEL-GFX11: ; %bb.0:1538; GISEL-GFX11-NEXT: s_clause 0x11539; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1540; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241541; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01542; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1543; GISEL-GFX11-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s21544; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1545; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21546; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1547; GISEL-GFX11-NEXT: s_endpgm1548;1549; GISEL-GFX10-LABEL: v_icmp_i16_slt:1550; GISEL-GFX10: ; %bb.0:1551; GISEL-GFX10-NEXT: s_clause 0x11552; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1553; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241554; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01555; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1556; GISEL-GFX10-NEXT: v_cmp_gt_i16_e64 s2, 0x64, s21557; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21558; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1559; GISEL-GFX10-NEXT: s_endpgm1560 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 40)1561 store i32 %result, ptr addrspace(1) %out1562 ret void1563}1564 1565define amdgpu_kernel void @v_icmp_i16_sle(ptr addrspace(1) %out, i16 %src) {1566; SDAG-GFX11-LABEL: v_icmp_i16_sle:1567; SDAG-GFX11: ; %bb.0:1568; SDAG-GFX11-NEXT: s_clause 0x11569; SDAG-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1570; SDAG-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241571; SDAG-GFX11-NEXT: s_waitcnt lgkmcnt(0)1572; SDAG-GFX11-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s21573; SDAG-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1574; SDAG-GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21575; SDAG-GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1576; SDAG-GFX11-NEXT: s_endpgm1577;1578; SDAG-GFX10-LABEL: v_icmp_i16_sle:1579; SDAG-GFX10: ; %bb.0:1580; SDAG-GFX10-NEXT: s_clause 0x11581; SDAG-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1582; SDAG-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241583; SDAG-GFX10-NEXT: v_mov_b32_e32 v0, 01584; SDAG-GFX10-NEXT: s_waitcnt lgkmcnt(0)1585; SDAG-GFX10-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s21586; SDAG-GFX10-NEXT: v_mov_b32_e32 v1, s21587; SDAG-GFX10-NEXT: global_store_dword v0, v1, s[0:1]1588; SDAG-GFX10-NEXT: s_endpgm1589;1590; GISEL-GFX11-LABEL: v_icmp_i16_sle:1591; GISEL-GFX11: ; %bb.0:1592; GISEL-GFX11-NEXT: s_clause 0x11593; GISEL-GFX11-NEXT: s_load_b32 s2, s[4:5], 0x2c1594; GISEL-GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x241595; GISEL-GFX11-NEXT: v_mov_b32_e32 v1, 01596; GISEL-GFX11-NEXT: s_waitcnt lgkmcnt(0)1597; GISEL-GFX11-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s21598; GISEL-GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)1599; GISEL-GFX11-NEXT: v_mov_b32_e32 v0, s21600; GISEL-GFX11-NEXT: global_store_b32 v1, v0, s[0:1]1601; GISEL-GFX11-NEXT: s_endpgm1602;1603; GISEL-GFX10-LABEL: v_icmp_i16_sle:1604; GISEL-GFX10: ; %bb.0:1605; GISEL-GFX10-NEXT: s_clause 0x11606; GISEL-GFX10-NEXT: s_load_dword s2, s[4:5], 0x2c1607; GISEL-GFX10-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241608; GISEL-GFX10-NEXT: v_mov_b32_e32 v1, 01609; GISEL-GFX10-NEXT: s_waitcnt lgkmcnt(0)1610; GISEL-GFX10-NEXT: v_cmp_ge_i16_e64 s2, 0x64, s21611; GISEL-GFX10-NEXT: v_mov_b32_e32 v0, s21612; GISEL-GFX10-NEXT: global_store_dword v1, v0, s[0:1]1613; GISEL-GFX10-NEXT: s_endpgm1614 %result = call i32 @llvm.amdgcn.icmp.i16(i16 %src, i16 100, i32 41)1615 store i32 %result, ptr addrspace(1) %out1616 ret void1617}1618 1619define amdgpu_kernel void @v_icmp_i1_ne0(ptr addrspace(1) %out, i32 %a, i32 %b) {1620; GFX11-LABEL: v_icmp_i1_ne0:1621; GFX11: ; %bb.0:1622; GFX11-NEXT: s_load_b128 s[0:3], s[4:5], 0x241623; GFX11-NEXT: s_waitcnt lgkmcnt(0)1624; GFX11-NEXT: s_cmp_gt_u32 s2, 11625; GFX11-NEXT: s_cselect_b32 s2, -1, 01626; GFX11-NEXT: s_cmp_gt_u32 s3, 21627; GFX11-NEXT: s_cselect_b32 s3, -1, 01628; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1629; GFX11-NEXT: s_and_b32 s2, s2, s31630; GFX11-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s21631; GFX11-NEXT: global_store_b32 v0, v1, s[0:1]1632; GFX11-NEXT: s_endpgm1633;1634; GFX10-LABEL: v_icmp_i1_ne0:1635; GFX10: ; %bb.0:1636; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241637; GFX10-NEXT: v_mov_b32_e32 v0, 01638; GFX10-NEXT: s_waitcnt lgkmcnt(0)1639; GFX10-NEXT: s_cmp_gt_u32 s2, 11640; GFX10-NEXT: s_cselect_b32 s2, -1, 01641; GFX10-NEXT: s_cmp_gt_u32 s3, 21642; GFX10-NEXT: s_cselect_b32 s3, -1, 01643; GFX10-NEXT: s_and_b32 s2, s2, s31644; GFX10-NEXT: v_mov_b32_e32 v1, s21645; GFX10-NEXT: global_store_dword v0, v1, s[0:1]1646; GFX10-NEXT: s_endpgm1647 %c0 = icmp ugt i32 %a, 11648 %c1 = icmp ugt i32 %b, 21649 %src = and i1 %c0, %c11650 %result = call i32 @llvm.amdgcn.icmp.i1(i1 %src, i1 false, i32 33)1651 store i32 %result, ptr addrspace(1) %out1652 ret void1653}1654 1655define amdgpu_ps void @test_intr_icmp_i32_invalid_cc(ptr addrspace(1) %out, i32 %src) {1656; SDAG-GFX11-LABEL: test_intr_icmp_i32_invalid_cc:1657; SDAG-GFX11: ; %bb.0:1658; SDAG-GFX11-NEXT: s_endpgm1659;1660; SDAG-GFX10-LABEL: test_intr_icmp_i32_invalid_cc:1661; SDAG-GFX10: ; %bb.0:1662; SDAG-GFX10-NEXT: s_endpgm1663;1664; GISEL-GFX11-LABEL: test_intr_icmp_i32_invalid_cc:1665; GISEL-GFX11: ; %bb.0:1666; GISEL-GFX11-NEXT: global_store_b32 v[0:1], v0, off1667; GISEL-GFX11-NEXT: s_endpgm1668;1669; GISEL-GFX10-LABEL: test_intr_icmp_i32_invalid_cc:1670; GISEL-GFX10: ; %bb.0:1671; GISEL-GFX10-NEXT: global_store_dword v[0:1], v0, off1672; GISEL-GFX10-NEXT: s_endpgm1673 %result = call i32 @llvm.amdgcn.icmp.i32(i32 %src, i32 100, i32 9999)1674 store i32 %result, ptr addrspace(1) %out1675 ret void1676}1677 1678attributes #0 = { nounwind readnone convergent }1679;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1680; GCN: {{.*}}1681