17548 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX7LESS,GFX7LESS_ITERATIVE %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX8,GFX8_ITERATIVE %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX9,GFX9_ITERATIVE %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize64 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1064,GFX1064_ITERATIVE %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1032,GFX1032_ITERATIVE %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1164,GFX1164_ITERATIVE %s8; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1132,GFX1132_ITERATIVE %s9; RUN: llc -mtriple=amdgcn - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX7LESS,GFX7LESS_DPP %s10; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX8,GFX8_DPP %s11; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX9,GFX9_DPP %s12; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize64 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1064,GFX1064_DPP %s13; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1032,GFX1032_DPP %s14; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1164,GFX1164_DPP %s15; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32 -mattr=-flat-for-global - -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1132,GFX1132_DPP %s16 17declare i32 @llvm.amdgcn.workitem.id.x()18 19@local_var32 = addrspace(3) global i32 poison, align 420@local_var64 = addrspace(3) global i64 poison, align 821 22; Show what the atomic optimization pass will do for local pointers.23 24define amdgpu_kernel void @add_i32_constant(ptr addrspace(1) %out) {25; GFX7LESS-LABEL: add_i32_constant:26; GFX7LESS: ; %bb.0: ; %entry27; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec28; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 029; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v030; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v031; GFX7LESS-NEXT: ; implicit-def: $vgpr132; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc33; GFX7LESS-NEXT: s_cbranch_execz .LBB0_234; GFX7LESS-NEXT: ; %bb.1:35; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]36; GFX7LESS-NEXT: s_mul_i32 s2, s2, 537; GFX7LESS-NEXT: v_mov_b32_e32 v1, 038; GFX7LESS-NEXT: v_mov_b32_e32 v2, s239; GFX7LESS-NEXT: s_mov_b32 m0, -140; GFX7LESS-NEXT: ds_add_rtn_u32 v1, v1, v241; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)42; GFX7LESS-NEXT: .LBB0_2:43; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]44; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x945; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00046; GFX7LESS-NEXT: s_mov_b32 s2, -147; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v148; GFX7LESS-NEXT: v_mad_u32_u24 v0, v0, 5, s449; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)50; GFX7LESS-NEXT: buffer_store_dword v0, off, s[0:3], 051; GFX7LESS-NEXT: s_endpgm52;53; GFX8-LABEL: add_i32_constant:54; GFX8: ; %bb.0: ; %entry55; GFX8-NEXT: s_mov_b64 s[2:3], exec56; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 057; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v058; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v059; GFX8-NEXT: ; implicit-def: $vgpr160; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc61; GFX8-NEXT: s_cbranch_execz .LBB0_262; GFX8-NEXT: ; %bb.1:63; GFX8-NEXT: s_bcnt1_i32_b64 s2, s[2:3]64; GFX8-NEXT: s_mul_i32 s2, s2, 565; GFX8-NEXT: v_mov_b32_e32 v1, 066; GFX8-NEXT: v_mov_b32_e32 v2, s267; GFX8-NEXT: s_mov_b32 m0, -168; GFX8-NEXT: ds_add_rtn_u32 v1, v1, v269; GFX8-NEXT: s_waitcnt lgkmcnt(0)70; GFX8-NEXT: .LBB0_2:71; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]72; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2473; GFX8-NEXT: v_readfirstlane_b32 s4, v174; GFX8-NEXT: s_mov_b32 s3, 0xf00075; GFX8-NEXT: s_mov_b32 s2, -176; GFX8-NEXT: v_mad_u32_u24 v0, v0, 5, s477; GFX8-NEXT: s_waitcnt lgkmcnt(0)78; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], 079; GFX8-NEXT: s_endpgm80;81; GFX9-LABEL: add_i32_constant:82; GFX9: ; %bb.0: ; %entry83; GFX9-NEXT: s_mov_b64 s[2:3], exec84; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 085; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v086; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v087; GFX9-NEXT: ; implicit-def: $vgpr188; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc89; GFX9-NEXT: s_cbranch_execz .LBB0_290; GFX9-NEXT: ; %bb.1:91; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]92; GFX9-NEXT: s_mul_i32 s2, s2, 593; GFX9-NEXT: v_mov_b32_e32 v1, 094; GFX9-NEXT: v_mov_b32_e32 v2, s295; GFX9-NEXT: ds_add_rtn_u32 v1, v1, v296; GFX9-NEXT: s_waitcnt lgkmcnt(0)97; GFX9-NEXT: .LBB0_2:98; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]99; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24100; GFX9-NEXT: v_readfirstlane_b32 s4, v1101; GFX9-NEXT: s_mov_b32 s3, 0xf000102; GFX9-NEXT: s_mov_b32 s2, -1103; GFX9-NEXT: v_mad_u32_u24 v0, v0, 5, s4104; GFX9-NEXT: s_waitcnt lgkmcnt(0)105; GFX9-NEXT: buffer_store_dword v0, off, s[0:3], 0106; GFX9-NEXT: s_endpgm107;108; GFX1064-LABEL: add_i32_constant:109; GFX1064: ; %bb.0: ; %entry110; GFX1064-NEXT: s_mov_b64 s[2:3], exec111; GFX1064-NEXT: ; implicit-def: $vgpr1112; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0113; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0114; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0115; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc116; GFX1064-NEXT: s_cbranch_execz .LBB0_2117; GFX1064-NEXT: ; %bb.1:118; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]119; GFX1064-NEXT: v_mov_b32_e32 v1, 0120; GFX1064-NEXT: s_mul_i32 s2, s2, 5121; GFX1064-NEXT: v_mov_b32_e32 v2, s2122; GFX1064-NEXT: ds_add_rtn_u32 v1, v1, v2123; GFX1064-NEXT: s_waitcnt lgkmcnt(0)124; GFX1064-NEXT: buffer_gl0_inv125; GFX1064-NEXT: .LBB0_2:126; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)127; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]128; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24129; GFX1064-NEXT: v_readfirstlane_b32 s2, v1130; GFX1064-NEXT: s_mov_b32 s3, 0x31016000131; GFX1064-NEXT: v_mad_u32_u24 v0, v0, 5, s2132; GFX1064-NEXT: s_mov_b32 s2, -1133; GFX1064-NEXT: s_waitcnt lgkmcnt(0)134; GFX1064-NEXT: buffer_store_dword v0, off, s[0:3], 0135; GFX1064-NEXT: s_endpgm136;137; GFX1032-LABEL: add_i32_constant:138; GFX1032: ; %bb.0: ; %entry139; GFX1032-NEXT: s_mov_b32 s1, exec_lo140; GFX1032-NEXT: ; implicit-def: $vgpr1141; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s1, 0142; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0143; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo144; GFX1032-NEXT: s_cbranch_execz .LBB0_2145; GFX1032-NEXT: ; %bb.1:146; GFX1032-NEXT: s_bcnt1_i32_b32 s1, s1147; GFX1032-NEXT: v_mov_b32_e32 v1, 0148; GFX1032-NEXT: s_mul_i32 s1, s1, 5149; GFX1032-NEXT: v_mov_b32_e32 v2, s1150; GFX1032-NEXT: ds_add_rtn_u32 v1, v1, v2151; GFX1032-NEXT: s_waitcnt lgkmcnt(0)152; GFX1032-NEXT: buffer_gl0_inv153; GFX1032-NEXT: .LBB0_2:154; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)155; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s0156; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24157; GFX1032-NEXT: v_readfirstlane_b32 s2, v1158; GFX1032-NEXT: s_mov_b32 s3, 0x31016000159; GFX1032-NEXT: v_mad_u32_u24 v0, v0, 5, s2160; GFX1032-NEXT: s_mov_b32 s2, -1161; GFX1032-NEXT: s_waitcnt lgkmcnt(0)162; GFX1032-NEXT: buffer_store_dword v0, off, s[0:3], 0163; GFX1032-NEXT: s_endpgm164;165; GFX1164-LABEL: add_i32_constant:166; GFX1164: ; %bb.0: ; %entry167; GFX1164-NEXT: s_mov_b64 s[2:3], exec168; GFX1164-NEXT: s_mov_b64 s[0:1], exec169; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0170; GFX1164-NEXT: ; implicit-def: $vgpr1171; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)172; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0173; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v0174; GFX1164-NEXT: s_cbranch_execz .LBB0_2175; GFX1164-NEXT: ; %bb.1:176; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]177; GFX1164-NEXT: v_mov_b32_e32 v1, 0178; GFX1164-NEXT: s_mul_i32 s2, s2, 5179; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)180; GFX1164-NEXT: v_mov_b32_e32 v2, s2181; GFX1164-NEXT: ds_add_rtn_u32 v1, v1, v2182; GFX1164-NEXT: s_waitcnt lgkmcnt(0)183; GFX1164-NEXT: buffer_gl0_inv184; GFX1164-NEXT: .LBB0_2:185; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]186; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x24187; GFX1164-NEXT: v_readfirstlane_b32 s2, v1188; GFX1164-NEXT: s_mov_b32 s3, 0x31016000189; GFX1164-NEXT: v_mad_u32_u24 v0, v0, 5, s2190; GFX1164-NEXT: s_mov_b32 s2, -1191; GFX1164-NEXT: s_waitcnt lgkmcnt(0)192; GFX1164-NEXT: buffer_store_b32 v0, off, s[0:3], 0193; GFX1164-NEXT: s_endpgm194;195; GFX1132-LABEL: add_i32_constant:196; GFX1132: ; %bb.0: ; %entry197; GFX1132-NEXT: s_mov_b32 s1, exec_lo198; GFX1132-NEXT: s_mov_b32 s0, exec_lo199; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s1, 0200; GFX1132-NEXT: ; implicit-def: $vgpr1201; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)202; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v0203; GFX1132-NEXT: s_cbranch_execz .LBB0_2204; GFX1132-NEXT: ; %bb.1:205; GFX1132-NEXT: s_bcnt1_i32_b32 s1, s1206; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)207; GFX1132-NEXT: s_mul_i32 s1, s1, 5208; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s1209; GFX1132-NEXT: ds_add_rtn_u32 v1, v1, v2210; GFX1132-NEXT: s_waitcnt lgkmcnt(0)211; GFX1132-NEXT: buffer_gl0_inv212; GFX1132-NEXT: .LBB0_2:213; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s0214; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x24215; GFX1132-NEXT: v_readfirstlane_b32 s2, v1216; GFX1132-NEXT: s_mov_b32 s3, 0x31016000217; GFX1132-NEXT: v_mad_u32_u24 v0, v0, 5, s2218; GFX1132-NEXT: s_mov_b32 s2, -1219; GFX1132-NEXT: s_waitcnt lgkmcnt(0)220; GFX1132-NEXT: buffer_store_b32 v0, off, s[0:3], 0221; GFX1132-NEXT: s_endpgm222entry:223 %old = atomicrmw add ptr addrspace(3) @local_var32, i32 5 acq_rel224 store i32 %old, ptr addrspace(1) %out225 ret void226}227 228define amdgpu_kernel void @add_i32_uniform(ptr addrspace(1) %out, i32 %additive) {229; GFX7LESS-LABEL: add_i32_uniform:230; GFX7LESS: ; %bb.0: ; %entry231; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec232; GFX7LESS-NEXT: s_load_dword s6, s[4:5], 0xb233; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 0234; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v0235; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0236; GFX7LESS-NEXT: ; implicit-def: $vgpr1237; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc238; GFX7LESS-NEXT: s_cbranch_execz .LBB1_2239; GFX7LESS-NEXT: ; %bb.1:240; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]241; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)242; GFX7LESS-NEXT: s_mul_i32 s2, s6, s2243; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0244; GFX7LESS-NEXT: v_mov_b32_e32 v2, s2245; GFX7LESS-NEXT: s_mov_b32 m0, -1246; GFX7LESS-NEXT: ds_add_rtn_u32 v1, v1, v2247; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)248; GFX7LESS-NEXT: .LBB1_2:249; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]250; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9251; GFX7LESS-NEXT: s_mov_b32 s3, 0xf000252; GFX7LESS-NEXT: s_mov_b32 s2, -1253; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v1254; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)255; GFX7LESS-NEXT: v_mul_lo_u32 v0, s6, v0256; GFX7LESS-NEXT: v_add_i32_e32 v0, vcc, s4, v0257; GFX7LESS-NEXT: buffer_store_dword v0, off, s[0:3], 0258; GFX7LESS-NEXT: s_endpgm259;260; GFX8-LABEL: add_i32_uniform:261; GFX8: ; %bb.0: ; %entry262; GFX8-NEXT: s_load_dword s6, s[4:5], 0x2c263; GFX8-NEXT: s_mov_b64 s[2:3], exec264; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0265; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0266; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0267; GFX8-NEXT: ; implicit-def: $vgpr1268; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc269; GFX8-NEXT: s_cbranch_execz .LBB1_2270; GFX8-NEXT: ; %bb.1:271; GFX8-NEXT: s_bcnt1_i32_b64 s2, s[2:3]272; GFX8-NEXT: s_waitcnt lgkmcnt(0)273; GFX8-NEXT: s_mul_i32 s2, s6, s2274; GFX8-NEXT: v_mov_b32_e32 v1, 0275; GFX8-NEXT: v_mov_b32_e32 v2, s2276; GFX8-NEXT: s_mov_b32 m0, -1277; GFX8-NEXT: ds_add_rtn_u32 v1, v1, v2278; GFX8-NEXT: s_waitcnt lgkmcnt(0)279; GFX8-NEXT: .LBB1_2:280; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]281; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24282; GFX8-NEXT: s_waitcnt lgkmcnt(0)283; GFX8-NEXT: v_mul_lo_u32 v0, s6, v0284; GFX8-NEXT: v_readfirstlane_b32 s4, v1285; GFX8-NEXT: s_mov_b32 s3, 0xf000286; GFX8-NEXT: s_mov_b32 s2, -1287; GFX8-NEXT: v_add_u32_e32 v0, vcc, s4, v0288; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], 0289; GFX8-NEXT: s_endpgm290;291; GFX9-LABEL: add_i32_uniform:292; GFX9: ; %bb.0: ; %entry293; GFX9-NEXT: s_load_dword s6, s[4:5], 0x2c294; GFX9-NEXT: s_mov_b64 s[2:3], exec295; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0296; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0297; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0298; GFX9-NEXT: ; implicit-def: $vgpr1299; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc300; GFX9-NEXT: s_cbranch_execz .LBB1_2301; GFX9-NEXT: ; %bb.1:302; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]303; GFX9-NEXT: s_waitcnt lgkmcnt(0)304; GFX9-NEXT: s_mul_i32 s2, s6, s2305; GFX9-NEXT: v_mov_b32_e32 v1, 0306; GFX9-NEXT: v_mov_b32_e32 v2, s2307; GFX9-NEXT: ds_add_rtn_u32 v1, v1, v2308; GFX9-NEXT: s_waitcnt lgkmcnt(0)309; GFX9-NEXT: .LBB1_2:310; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]311; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24312; GFX9-NEXT: s_waitcnt lgkmcnt(0)313; GFX9-NEXT: v_mul_lo_u32 v0, s6, v0314; GFX9-NEXT: v_readfirstlane_b32 s4, v1315; GFX9-NEXT: s_mov_b32 s3, 0xf000316; GFX9-NEXT: s_mov_b32 s2, -1317; GFX9-NEXT: v_add_u32_e32 v0, s4, v0318; GFX9-NEXT: buffer_store_dword v0, off, s[0:3], 0319; GFX9-NEXT: s_endpgm320;321; GFX1064-LABEL: add_i32_uniform:322; GFX1064: ; %bb.0: ; %entry323; GFX1064-NEXT: s_load_dword s6, s[4:5], 0x2c324; GFX1064-NEXT: s_mov_b64 s[2:3], exec325; GFX1064-NEXT: ; implicit-def: $vgpr1326; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0327; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0328; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0329; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc330; GFX1064-NEXT: s_cbranch_execz .LBB1_2331; GFX1064-NEXT: ; %bb.1:332; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]333; GFX1064-NEXT: v_mov_b32_e32 v1, 0334; GFX1064-NEXT: s_waitcnt lgkmcnt(0)335; GFX1064-NEXT: s_mul_i32 s2, s6, s2336; GFX1064-NEXT: v_mov_b32_e32 v2, s2337; GFX1064-NEXT: ds_add_rtn_u32 v1, v1, v2338; GFX1064-NEXT: s_waitcnt lgkmcnt(0)339; GFX1064-NEXT: buffer_gl0_inv340; GFX1064-NEXT: .LBB1_2:341; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)342; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]343; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24344; GFX1064-NEXT: v_readfirstlane_b32 s2, v1345; GFX1064-NEXT: s_waitcnt lgkmcnt(0)346; GFX1064-NEXT: v_mad_u64_u32 v[0:1], s[2:3], s6, v0, s[2:3]347; GFX1064-NEXT: s_mov_b32 s3, 0x31016000348; GFX1064-NEXT: s_mov_b32 s2, -1349; GFX1064-NEXT: buffer_store_dword v0, off, s[0:3], 0350; GFX1064-NEXT: s_endpgm351;352; GFX1032-LABEL: add_i32_uniform:353; GFX1032: ; %bb.0: ; %entry354; GFX1032-NEXT: s_load_dword s0, s[4:5], 0x2c355; GFX1032-NEXT: s_mov_b32 s2, exec_lo356; GFX1032-NEXT: ; implicit-def: $vgpr1357; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0358; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0359; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo360; GFX1032-NEXT: s_cbranch_execz .LBB1_2361; GFX1032-NEXT: ; %bb.1:362; GFX1032-NEXT: s_bcnt1_i32_b32 s2, s2363; GFX1032-NEXT: v_mov_b32_e32 v1, 0364; GFX1032-NEXT: s_waitcnt lgkmcnt(0)365; GFX1032-NEXT: s_mul_i32 s2, s0, s2366; GFX1032-NEXT: v_mov_b32_e32 v2, s2367; GFX1032-NEXT: ds_add_rtn_u32 v1, v1, v2368; GFX1032-NEXT: s_waitcnt lgkmcnt(0)369; GFX1032-NEXT: buffer_gl0_inv370; GFX1032-NEXT: .LBB1_2:371; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)372; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s1373; GFX1032-NEXT: s_load_dwordx2 s[8:9], s[4:5], 0x24374; GFX1032-NEXT: v_readfirstlane_b32 s2, v1375; GFX1032-NEXT: s_mov_b32 s11, 0x31016000376; GFX1032-NEXT: s_mov_b32 s10, -1377; GFX1032-NEXT: s_waitcnt lgkmcnt(0)378; GFX1032-NEXT: v_mad_u64_u32 v[0:1], s0, s0, v0, s[2:3]379; GFX1032-NEXT: buffer_store_dword v0, off, s[8:11], 0380; GFX1032-NEXT: s_endpgm381;382; GFX1164-LABEL: add_i32_uniform:383; GFX1164: ; %bb.0: ; %entry384; GFX1164-NEXT: s_load_b32 s6, s[4:5], 0x2c385; GFX1164-NEXT: s_mov_b64 s[2:3], exec386; GFX1164-NEXT: s_mov_b64 s[0:1], exec387; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0388; GFX1164-NEXT: ; implicit-def: $vgpr1389; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)390; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0391; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v0392; GFX1164-NEXT: s_cbranch_execz .LBB1_2393; GFX1164-NEXT: ; %bb.1:394; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]395; GFX1164-NEXT: v_mov_b32_e32 v1, 0396; GFX1164-NEXT: s_waitcnt lgkmcnt(0)397; GFX1164-NEXT: s_mul_i32 s2, s6, s2398; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)399; GFX1164-NEXT: v_mov_b32_e32 v2, s2400; GFX1164-NEXT: ds_add_rtn_u32 v1, v1, v2401; GFX1164-NEXT: s_waitcnt lgkmcnt(0)402; GFX1164-NEXT: buffer_gl0_inv403; GFX1164-NEXT: .LBB1_2:404; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]405; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x24406; GFX1164-NEXT: v_readfirstlane_b32 s2, v1407; GFX1164-NEXT: s_waitcnt lgkmcnt(0)408; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)409; GFX1164-NEXT: v_mad_u64_u32 v[1:2], null, s6, v0, s[2:3]410; GFX1164-NEXT: s_mov_b32 s3, 0x31016000411; GFX1164-NEXT: s_mov_b32 s2, -1412; GFX1164-NEXT: buffer_store_b32 v1, off, s[0:3], 0413; GFX1164-NEXT: s_endpgm414;415; GFX1132-LABEL: add_i32_uniform:416; GFX1132: ; %bb.0: ; %entry417; GFX1132-NEXT: s_load_b32 s0, s[4:5], 0x2c418; GFX1132-NEXT: s_mov_b32 s2, exec_lo419; GFX1132-NEXT: s_mov_b32 s1, exec_lo420; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0421; GFX1132-NEXT: ; implicit-def: $vgpr1422; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)423; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v0424; GFX1132-NEXT: s_cbranch_execz .LBB1_2425; GFX1132-NEXT: ; %bb.1:426; GFX1132-NEXT: s_bcnt1_i32_b32 s2, s2427; GFX1132-NEXT: s_waitcnt lgkmcnt(0)428; GFX1132-NEXT: s_mul_i32 s2, s0, s2429; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)430; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s2431; GFX1132-NEXT: ds_add_rtn_u32 v1, v1, v2432; GFX1132-NEXT: s_waitcnt lgkmcnt(0)433; GFX1132-NEXT: buffer_gl0_inv434; GFX1132-NEXT: .LBB1_2:435; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s1436; GFX1132-NEXT: s_load_b64 s[4:5], s[4:5], 0x24437; GFX1132-NEXT: v_readfirstlane_b32 s2, v1438; GFX1132-NEXT: s_mov_b32 s7, 0x31016000439; GFX1132-NEXT: s_mov_b32 s6, -1440; GFX1132-NEXT: s_waitcnt lgkmcnt(0)441; GFX1132-NEXT: v_mad_u64_u32 v[1:2], null, s0, v0, s[2:3]442; GFX1132-NEXT: buffer_store_b32 v1, off, s[4:7], 0443; GFX1132-NEXT: s_endpgm444entry:445 %old = atomicrmw add ptr addrspace(3) @local_var32, i32 %additive acq_rel446 store i32 %old, ptr addrspace(1) %out447 ret void448}449 450define amdgpu_kernel void @add_i32_varying(ptr addrspace(1) %out) {451; GFX7LESS_ITERATIVE-LABEL: add_i32_varying:452; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry453; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec454; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 0455; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1456; GFX7LESS_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop457; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1458; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]459; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s3460; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s3461; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m0462; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s3463; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]464; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 0465; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]466; GFX7LESS_ITERATIVE-NEXT: s_add_i32 s2, s2, s8467; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB2_1468; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd469; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 0470; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v0471; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0472; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr0473; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc474; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]475; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4476; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:477; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 0478; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s2479; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -1480; GFX7LESS_ITERATIVE-NEXT: ds_add_rtn_u32 v0, v0, v2481; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)482; GFX7LESS_ITERATIVE-NEXT: .LBB2_4:483; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]484; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9485; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf000486; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -1487; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v0488; GFX7LESS_ITERATIVE-NEXT: v_add_i32_e32 v0, vcc, s4, v1489; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)490; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 0491; GFX7LESS_ITERATIVE-NEXT: s_endpgm492;493; GFX8_ITERATIVE-LABEL: add_i32_varying:494; GFX8_ITERATIVE: ; %bb.0: ; %entry495; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec496; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 0497; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1498; GFX8_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop499; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1500; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]501; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s3502; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s3503; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m0504; GFX8_ITERATIVE-NEXT: s_add_i32 s2, s2, s6505; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s3506; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]507; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB2_1508; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd509; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0510; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0511; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0512; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr0513; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc514; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]515; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4516; GFX8_ITERATIVE-NEXT: ; %bb.3:517; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 0518; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s2519; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -1520; GFX8_ITERATIVE-NEXT: ds_add_rtn_u32 v0, v0, v2521; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)522; GFX8_ITERATIVE-NEXT: .LBB2_4:523; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]524; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24525; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v0526; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf000527; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -1528; GFX8_ITERATIVE-NEXT: v_add_u32_e32 v0, vcc, s4, v1529; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)530; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 0531; GFX8_ITERATIVE-NEXT: s_endpgm532;533; GFX9_ITERATIVE-LABEL: add_i32_varying:534; GFX9_ITERATIVE: ; %bb.0: ; %entry535; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec536; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 0537; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1538; GFX9_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop539; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1540; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]541; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s3542; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s3543; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m0544; GFX9_ITERATIVE-NEXT: s_add_i32 s2, s2, s6545; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s3546; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]547; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB2_1548; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd549; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0550; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0551; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0552; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr0553; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc554; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]555; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4556; GFX9_ITERATIVE-NEXT: ; %bb.3:557; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 0558; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s2559; GFX9_ITERATIVE-NEXT: ds_add_rtn_u32 v0, v0, v2560; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)561; GFX9_ITERATIVE-NEXT: .LBB2_4:562; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]563; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24564; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v0565; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf000566; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -1567; GFX9_ITERATIVE-NEXT: v_add_u32_e32 v0, s4, v1568; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)569; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 0570; GFX9_ITERATIVE-NEXT: s_endpgm571;572; GFX1064_ITERATIVE-LABEL: add_i32_varying:573; GFX1064_ITERATIVE: ; %bb.0: ; %entry574; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec575; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 0576; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1577; GFX1064_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop578; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1579; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]580; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s3581; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s3582; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s3583; GFX1064_ITERATIVE-NEXT: s_add_i32 s2, s2, s8584; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]585; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB2_1586; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd587; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0588; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0589; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0590; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr0591; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc592; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]593; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4594; GFX1064_ITERATIVE-NEXT: ; %bb.3:595; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 0596; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s2597; GFX1064_ITERATIVE-NEXT: ds_add_rtn_u32 v0, v0, v2598; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)599; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv600; GFX1064_ITERATIVE-NEXT: .LBB2_4:601; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)602; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]603; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24604; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v0605; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x31016000606; GFX1064_ITERATIVE-NEXT: v_add_nc_u32_e32 v0, s2, v1607; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -1608; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)609; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 0610; GFX1064_ITERATIVE-NEXT: s_endpgm611;612; GFX1032_ITERATIVE-LABEL: add_i32_varying:613; GFX1032_ITERATIVE: ; %bb.0: ; %entry614; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo615; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 0616; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1617; GFX1032_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop618; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1619; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s1620; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s2621; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s2622; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s2623; GFX1032_ITERATIVE-NEXT: s_add_i32 s0, s0, s3624; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s2625; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB2_1626; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd627; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0628; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0629; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr0630; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo631; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s1632; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4633; GFX1032_ITERATIVE-NEXT: ; %bb.3:634; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 0635; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s0636; GFX1032_ITERATIVE-NEXT: ds_add_rtn_u32 v0, v0, v2637; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)638; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv639; GFX1032_ITERATIVE-NEXT: .LBB2_4:640; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)641; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s1642; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24643; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v0644; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x31016000645; GFX1032_ITERATIVE-NEXT: v_add_nc_u32_e32 v0, s2, v1646; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -1647; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)648; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 0649; GFX1032_ITERATIVE-NEXT: s_endpgm650;651; GFX1164_ITERATIVE-LABEL: add_i32_varying:652; GFX1164_ITERATIVE: ; %bb.0: ; %entry653; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v0654; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec655; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 0656; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0657; GFX1164_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop658; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1659; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]660; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)661; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s3662; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s3663; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s3664; GFX1164_ITERATIVE-NEXT: s_add_i32 s2, s2, s8665; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]666; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB2_1667; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd668; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 0669; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)670; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v1671; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1672; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr1673; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc674; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)675; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]676; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4677; GFX1164_ITERATIVE-NEXT: ; %bb.3:678; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 0679; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s2680; GFX1164_ITERATIVE-NEXT: ds_add_rtn_u32 v1, v1, v2681; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)682; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv683; GFX1164_ITERATIVE-NEXT: .LBB2_4:684; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]685; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x24686; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v1687; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x31016000688; GFX1164_ITERATIVE-NEXT: v_add_nc_u32_e32 v0, s2, v0689; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -1690; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)691; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 0692; GFX1164_ITERATIVE-NEXT: s_endpgm693;694; GFX1132_ITERATIVE-LABEL: add_i32_varying:695; GFX1132_ITERATIVE: ; %bb.0: ; %entry696; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v0697; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo698; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 0699; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0700; GFX1132_ITERATIVE-NEXT: .LBB2_1: ; %ComputeLoop701; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=1702; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s1703; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)704; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s2705; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s2706; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s2707; GFX1132_ITERATIVE-NEXT: s_add_i32 s0, s0, s3708; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s2709; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB2_1710; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd711; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 0712; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)713; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v1714; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr1715; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo716; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s1717; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB2_4718; GFX1132_ITERATIVE-NEXT: ; %bb.3:719; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s0720; GFX1132_ITERATIVE-NEXT: ds_add_rtn_u32 v1, v1, v2721; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)722; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv723; GFX1132_ITERATIVE-NEXT: .LBB2_4:724; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s1725; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x24726; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v1727; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x31016000728; GFX1132_ITERATIVE-NEXT: v_add_nc_u32_e32 v0, s2, v0729; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -1730; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)731; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 0732; GFX1132_ITERATIVE-NEXT: s_endpgm733;734; GFX7LESS_DPP-LABEL: add_i32_varying:735; GFX7LESS_DPP: ; %bb.0: ; %entry736; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9737; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 0738; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -1739; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)740; GFX7LESS_DPP-NEXT: ds_add_rtn_u32 v0, v1, v0741; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)742; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf000743; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -1744; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 0745; GFX7LESS_DPP-NEXT: s_endpgm746;747; GFX8_DPP-LABEL: add_i32_varying:748; GFX8_DPP: ; %bb.0: ; %entry749; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 0750; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 0751; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v4752; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1753; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]754; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 0755; GFX8_DPP-NEXT: s_nop 0756; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:1757; GFX8_DPP-NEXT: s_nop 1758; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:1759; GFX8_DPP-NEXT: s_nop 1760; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:1761; GFX8_DPP-NEXT: s_nop 1762; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:1763; GFX8_DPP-NEXT: s_nop 1764; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf765; GFX8_DPP-NEXT: s_nop 1766; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf767; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 63768; GFX8_DPP-NEXT: s_nop 0769; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf770; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]771; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v4772; GFX8_DPP-NEXT: ; implicit-def: $vgpr0773; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc774; GFX8_DPP-NEXT: s_cbranch_execz .LBB2_2775; GFX8_DPP-NEXT: ; %bb.1:776; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s2777; GFX8_DPP-NEXT: s_mov_b32 m0, -1778; GFX8_DPP-NEXT: ds_add_rtn_u32 v0, v3, v0779; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)780; GFX8_DPP-NEXT: .LBB2_2:781; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]782; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24783; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v0784; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v2785; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf000786; GFX8_DPP-NEXT: s_mov_b32 s2, -1787; GFX8_DPP-NEXT: v_add_u32_e32 v0, vcc, s4, v0788; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)789; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 0790; GFX8_DPP-NEXT: s_endpgm791;792; GFX9_DPP-LABEL: add_i32_varying:793; GFX9_DPP: ; %bb.0: ; %entry794; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 0795; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 0796; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v4797; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1798; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]799; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 0800; GFX9_DPP-NEXT: s_nop 0801; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:1802; GFX9_DPP-NEXT: s_nop 1803; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:1804; GFX9_DPP-NEXT: s_nop 1805; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:1806; GFX9_DPP-NEXT: s_nop 1807; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:1808; GFX9_DPP-NEXT: s_nop 1809; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf810; GFX9_DPP-NEXT: s_nop 1811; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf812; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 63813; GFX9_DPP-NEXT: s_nop 0814; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf815; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]816; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v4817; GFX9_DPP-NEXT: ; implicit-def: $vgpr0818; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc819; GFX9_DPP-NEXT: s_cbranch_execz .LBB2_2820; GFX9_DPP-NEXT: ; %bb.1:821; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s2822; GFX9_DPP-NEXT: ds_add_rtn_u32 v0, v3, v0823; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)824; GFX9_DPP-NEXT: .LBB2_2:825; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]826; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24827; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v0828; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v2829; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf000830; GFX9_DPP-NEXT: s_mov_b32 s2, -1831; GFX9_DPP-NEXT: v_add_u32_e32 v0, s4, v0832; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)833; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 0834; GFX9_DPP-NEXT: s_endpgm835;836; GFX1064_DPP-LABEL: add_i32_varying:837; GFX1064_DPP: ; %bb.0: ; %entry838; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1839; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]840; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 0841; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:1842; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:1843; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:1844; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:1845; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -1846; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf847; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 31848; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s2849; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf850; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf851; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 15852; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 31853; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 16854; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]855; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0856; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1857; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 47858; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 63859; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 32860; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]861; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0862; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 0863; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1864; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 48865; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]866; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0867; GFX1064_DPP-NEXT: s_mov_b32 s2, -1868; GFX1064_DPP-NEXT: ; implicit-def: $vgpr0869; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc870; GFX1064_DPP-NEXT: s_cbranch_execz .LBB2_2871; GFX1064_DPP-NEXT: ; %bb.1:872; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, s6873; GFX1064_DPP-NEXT: ds_add_rtn_u32 v0, v4, v0874; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)875; GFX1064_DPP-NEXT: buffer_gl0_inv876; GFX1064_DPP-NEXT: .LBB2_2:877; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)878; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]879; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24880; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v0881; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v3882; GFX1064_DPP-NEXT: v_add_nc_u32_e32 v0, s3, v0883; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x31016000884; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)885; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 0886; GFX1064_DPP-NEXT: s_endpgm887;888; GFX1032_DPP-LABEL: add_i32_varying:889; GFX1032_DPP: ; %bb.0: ; %entry890; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -1891; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s0892; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 0893; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:1894; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:1895; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:1896; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:1897; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -1898; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf899; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 15900; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 31901; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf902; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s0903; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0904; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 0905; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -1906; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 16907; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s0908; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0909; GFX1032_DPP-NEXT: s_mov_b32 s0, s2910; GFX1032_DPP-NEXT: s_mov_b32 s2, -1911; GFX1032_DPP-NEXT: ; implicit-def: $vgpr0912; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo913; GFX1032_DPP-NEXT: s_cbranch_execz .LBB2_2914; GFX1032_DPP-NEXT: ; %bb.1:915; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, s0916; GFX1032_DPP-NEXT: ds_add_rtn_u32 v0, v4, v0917; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)918; GFX1032_DPP-NEXT: buffer_gl0_inv919; GFX1032_DPP-NEXT: .LBB2_2:920; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)921; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s1922; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24923; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v0924; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v3925; GFX1032_DPP-NEXT: v_add_nc_u32_e32 v0, s3, v0926; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x31016000927; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)928; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 0929; GFX1032_DPP-NEXT: s_endpgm930;931; GFX1164_DPP-LABEL: add_i32_varying:932; GFX1164_DPP: ; %bb.0: ; %entry933; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v0934; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1935; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)936; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]937; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 0938; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)939; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:1940; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:1941; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)942; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:1943; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:1944; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)945; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -1946; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf947; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)948; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 31949; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s2950; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)951; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf952; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf953; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 15954; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 31955; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)956; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 16957; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]958; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0959; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1960; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)961; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 47962; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 63963; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 32964; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]965; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)966; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0967; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 0968; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -1969; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 48970; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]971; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0972; GFX1164_DPP-NEXT: s_mov_b32 s2, -1973; GFX1164_DPP-NEXT: ; implicit-def: $vgpr0974; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc975; GFX1164_DPP-NEXT: s_cbranch_execz .LBB2_2976; GFX1164_DPP-NEXT: ; %bb.1:977; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, s6978; GFX1164_DPP-NEXT: ds_add_rtn_u32 v0, v4, v0979; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)980; GFX1164_DPP-NEXT: buffer_gl0_inv981; GFX1164_DPP-NEXT: .LBB2_2:982; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]983; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x24984; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v0985; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v3986; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)987; GFX1164_DPP-NEXT: v_add_nc_u32_e32 v0, s3, v0988; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x31016000989; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)990; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 0991; GFX1164_DPP-NEXT: s_endpgm992;993; GFX1132_DPP-LABEL: add_i32_varying:994; GFX1132_DPP: ; %bb.0: ; %entry995; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v0996; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -1997; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)998; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s0999; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 01000; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1001; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:11002; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:11003; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1004; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:11005; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:11006; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1007; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -11008; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf1009; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)1010; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 151011; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 311012; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf1013; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s01014; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01015; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 01016; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -11017; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 161018; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s01019; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01020; GFX1132_DPP-NEXT: s_mov_b32 s0, s21021; GFX1132_DPP-NEXT: s_mov_b32 s2, -11022; GFX1132_DPP-NEXT: ; implicit-def: $vgpr01023; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo1024; GFX1132_DPP-NEXT: s_cbranch_execz .LBB2_21025; GFX1132_DPP-NEXT: ; %bb.1:1026; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, s01027; GFX1132_DPP-NEXT: ds_add_rtn_u32 v0, v4, v01028; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)1029; GFX1132_DPP-NEXT: buffer_gl0_inv1030; GFX1132_DPP-NEXT: .LBB2_2:1031; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s11032; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x241033; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v01034; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v31035; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)1036; GFX1132_DPP-NEXT: v_add_nc_u32_e32 v0, s3, v01037; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160001038; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)1039; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 01040; GFX1132_DPP-NEXT: s_endpgm1041entry:1042 %lane = call i32 @llvm.amdgcn.workitem.id.x()1043 %old = atomicrmw add ptr addrspace(3) @local_var32, i32 %lane acq_rel1044 store i32 %old, ptr addrspace(1) %out1045 ret void1046}1047 1048define amdgpu_kernel void @add_i32_varying_nouse() {1049; GFX7LESS_ITERATIVE-LABEL: add_i32_varying_nouse:1050; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry1051; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec1052; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 01053; GFX7LESS_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1054; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11055; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]1056; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s31057; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s31058; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]1059; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 01060; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[4:5]1061; GFX7LESS_ITERATIVE-NEXT: s_add_i32 s2, s2, s61062; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB3_11063; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1064; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 01065; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v01066; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01067; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc1068; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1069; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41070; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:1071; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01072; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v1, s21073; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -11074; GFX7LESS_ITERATIVE-NEXT: ds_add_u32 v0, v11075; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1076; GFX7LESS_ITERATIVE-NEXT: .LBB3_4:1077; GFX7LESS_ITERATIVE-NEXT: s_endpgm1078;1079; GFX8_ITERATIVE-LABEL: add_i32_varying_nouse:1080; GFX8_ITERATIVE: ; %bb.0: ; %entry1081; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec1082; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 01083; GFX8_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1084; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11085; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]1086; GFX8_ITERATIVE-NEXT: v_readlane_b32 s4, v0, s31087; GFX8_ITERATIVE-NEXT: s_add_i32 s2, s2, s41088; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s31089; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]1090; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB3_11091; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1092; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01093; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01094; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01095; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc1096; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1097; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41098; GFX8_ITERATIVE-NEXT: ; %bb.3:1099; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01100; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v1, s21101; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -11102; GFX8_ITERATIVE-NEXT: ds_add_u32 v0, v11103; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1104; GFX8_ITERATIVE-NEXT: .LBB3_4:1105; GFX8_ITERATIVE-NEXT: s_endpgm1106;1107; GFX9_ITERATIVE-LABEL: add_i32_varying_nouse:1108; GFX9_ITERATIVE: ; %bb.0: ; %entry1109; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec1110; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 01111; GFX9_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1112; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11113; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]1114; GFX9_ITERATIVE-NEXT: v_readlane_b32 s4, v0, s31115; GFX9_ITERATIVE-NEXT: s_add_i32 s2, s2, s41116; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s31117; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]1118; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB3_11119; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1120; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01121; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01122; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01123; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc1124; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1125; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41126; GFX9_ITERATIVE-NEXT: ; %bb.3:1127; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01128; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v1, s21129; GFX9_ITERATIVE-NEXT: ds_add_u32 v0, v11130; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1131; GFX9_ITERATIVE-NEXT: .LBB3_4:1132; GFX9_ITERATIVE-NEXT: s_endpgm1133;1134; GFX1064_ITERATIVE-LABEL: add_i32_varying_nouse:1135; GFX1064_ITERATIVE: ; %bb.0: ; %entry1136; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec1137; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 01138; GFX1064_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1139; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11140; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]1141; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s31142; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s31143; GFX1064_ITERATIVE-NEXT: s_add_i32 s2, s2, s61144; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]1145; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB3_11146; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1147; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01148; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01149; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01150; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc1151; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1152; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41153; GFX1064_ITERATIVE-NEXT: ; %bb.3:1154; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01155; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v1, s21156; GFX1064_ITERATIVE-NEXT: ds_add_u32 v0, v11157; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1158; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv1159; GFX1064_ITERATIVE-NEXT: .LBB3_4:1160; GFX1064_ITERATIVE-NEXT: s_endpgm1161;1162; GFX1032_ITERATIVE-LABEL: add_i32_varying_nouse:1163; GFX1032_ITERATIVE: ; %bb.0: ; %entry1164; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo1165; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 01166; GFX1032_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1167; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11168; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s11169; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s21170; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s21171; GFX1032_ITERATIVE-NEXT: s_add_i32 s0, s0, s31172; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s21173; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB3_11174; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1175; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01176; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01177; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo1178; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s11179; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41180; GFX1032_ITERATIVE-NEXT: ; %bb.3:1181; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01182; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v1, s01183; GFX1032_ITERATIVE-NEXT: ds_add_u32 v0, v11184; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1185; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv1186; GFX1032_ITERATIVE-NEXT: .LBB3_4:1187; GFX1032_ITERATIVE-NEXT: s_endpgm1188;1189; GFX1164_ITERATIVE-LABEL: add_i32_varying_nouse:1190; GFX1164_ITERATIVE: ; %bb.0: ; %entry1191; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v0, 0x3ff, v01192; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec1193; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 01194; GFX1164_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1195; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11196; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]1197; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)1198; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s31199; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s31200; GFX1164_ITERATIVE-NEXT: s_add_i32 s2, s2, s61201; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[4:5]1202; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB3_11203; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1204; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01205; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec1206; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1207; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01208; GFX1164_ITERATIVE-NEXT: v_cmpx_eq_u32_e32 0, v01209; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1210; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41211; GFX1164_ITERATIVE-NEXT: ; %bb.3:1212; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01213; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, s21214; GFX1164_ITERATIVE-NEXT: ds_add_u32 v0, v11215; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1216; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv1217; GFX1164_ITERATIVE-NEXT: .LBB3_4:1218; GFX1164_ITERATIVE-NEXT: s_endpgm1219;1220; GFX1132_ITERATIVE-LABEL: add_i32_varying_nouse:1221; GFX1132_ITERATIVE: ; %bb.0: ; %entry1222; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v0, 0x3ff, v01223; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo1224; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 01225; GFX1132_ITERATIVE-NEXT: .LBB3_1: ; %ComputeLoop1226; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11227; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s11228; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)1229; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s21230; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s21231; GFX1132_ITERATIVE-NEXT: s_add_i32 s0, s0, s31232; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s21233; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB3_11234; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1235; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01236; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo1237; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)1238; GFX1132_ITERATIVE-NEXT: v_cmpx_eq_u32_e32 0, v01239; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s11240; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB3_41241; GFX1132_ITERATIVE-NEXT: ; %bb.3:1242; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s01243; GFX1132_ITERATIVE-NEXT: ds_add_u32 v0, v11244; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1245; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv1246; GFX1132_ITERATIVE-NEXT: .LBB3_4:1247; GFX1132_ITERATIVE-NEXT: s_endpgm1248;1249; GFX7LESS_DPP-LABEL: add_i32_varying_nouse:1250; GFX7LESS_DPP: ; %bb.0: ; %entry1251; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 01252; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -11253; GFX7LESS_DPP-NEXT: ds_add_u32 v1, v01254; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)1255; GFX7LESS_DPP-NEXT: s_endpgm1256;1257; GFX8_DPP-LABEL: add_i32_varying_nouse:1258; GFX8_DPP: ; %bb.0: ; %entry1259; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 01260; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 01261; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v31262; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -11263; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]1264; GFX8_DPP-NEXT: s_nop 11265; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:11266; GFX8_DPP-NEXT: s_nop 11267; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:11268; GFX8_DPP-NEXT: s_nop 11269; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:11270; GFX8_DPP-NEXT: s_nop 11271; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:11272; GFX8_DPP-NEXT: s_nop 11273; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf1274; GFX8_DPP-NEXT: s_nop 11275; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf1276; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 631277; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]1278; GFX8_DPP-NEXT: s_mov_b32 s0, s21279; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v31280; GFX8_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1281; GFX8_DPP-NEXT: s_cbranch_execz .LBB3_21282; GFX8_DPP-NEXT: ; %bb.1:1283; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s01284; GFX8_DPP-NEXT: s_mov_b32 m0, -11285; GFX8_DPP-NEXT: ds_add_u32 v2, v01286; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)1287; GFX8_DPP-NEXT: .LBB3_2:1288; GFX8_DPP-NEXT: s_endpgm1289;1290; GFX9_DPP-LABEL: add_i32_varying_nouse:1291; GFX9_DPP: ; %bb.0: ; %entry1292; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 01293; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 01294; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v31295; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -11296; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]1297; GFX9_DPP-NEXT: s_nop 11298; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:11299; GFX9_DPP-NEXT: s_nop 11300; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:11301; GFX9_DPP-NEXT: s_nop 11302; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:11303; GFX9_DPP-NEXT: s_nop 11304; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:11305; GFX9_DPP-NEXT: s_nop 11306; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf1307; GFX9_DPP-NEXT: s_nop 11308; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf1309; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 631310; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]1311; GFX9_DPP-NEXT: s_mov_b32 s0, s21312; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v31313; GFX9_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1314; GFX9_DPP-NEXT: s_cbranch_execz .LBB3_21315; GFX9_DPP-NEXT: ; %bb.1:1316; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s01317; GFX9_DPP-NEXT: ds_add_u32 v2, v01318; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)1319; GFX9_DPP-NEXT: .LBB3_2:1320; GFX9_DPP-NEXT: s_endpgm1321;1322; GFX1064_DPP-LABEL: add_i32_varying_nouse:1323; GFX1064_DPP: ; %bb.0: ; %entry1324; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -11325; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]1326; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:11327; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:11328; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:11329; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:11330; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01331; GFX1064_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v21332; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]1333; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01334; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -11335; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 01336; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 321337; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]1338; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v01339; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 01340; GFX1064_DPP-NEXT: s_add_i32 s0, s2, s31341; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v31342; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1343; GFX1064_DPP-NEXT: s_cbranch_execz .LBB3_21344; GFX1064_DPP-NEXT: ; %bb.1:1345; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, s01346; GFX1064_DPP-NEXT: ds_add_u32 v0, v31347; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)1348; GFX1064_DPP-NEXT: buffer_gl0_inv1349; GFX1064_DPP-NEXT: .LBB3_2:1350; GFX1064_DPP-NEXT: s_endpgm1351;1352; GFX1032_DPP-LABEL: add_i32_varying_nouse:1353; GFX1032_DPP: ; %bb.0: ; %entry1354; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -11355; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s01356; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:11357; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:11358; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:11359; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:11360; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01361; GFX1032_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v21362; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s01363; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 01364; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 01365; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, v11366; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v41367; GFX1032_DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo1368; GFX1032_DPP-NEXT: s_cbranch_execz .LBB3_21369; GFX1032_DPP-NEXT: ; %bb.1:1370; GFX1032_DPP-NEXT: ds_add_u32 v0, v31371; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)1372; GFX1032_DPP-NEXT: buffer_gl0_inv1373; GFX1032_DPP-NEXT: .LBB3_2:1374; GFX1032_DPP-NEXT: s_endpgm1375;1376; GFX1164_DPP-LABEL: add_i32_varying_nouse:1377; GFX1164_DPP: ; %bb.0: ; %entry1378; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v01379; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -11380; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)1381; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]1382; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1383; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:11384; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:11385; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1386; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:11387; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:11388; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1389; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01390; GFX1164_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v21391; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1392; GFX1164_DPP-NEXT: v_permlane64_b32 v2, v11393; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]1394; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01395; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -11396; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)1397; GFX1164_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v21398; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]1399; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)1400; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v01401; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 01402; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, v11403; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], exec1404; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)1405; GFX1164_DPP-NEXT: v_cmpx_eq_u32_e32 0, v41406; GFX1164_DPP-NEXT: s_cbranch_execz .LBB3_21407; GFX1164_DPP-NEXT: ; %bb.1:1408; GFX1164_DPP-NEXT: ds_add_u32 v0, v31409; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)1410; GFX1164_DPP-NEXT: buffer_gl0_inv1411; GFX1164_DPP-NEXT: .LBB3_2:1412; GFX1164_DPP-NEXT: s_endpgm1413;1414; GFX1132_DPP-LABEL: add_i32_varying_nouse:1415; GFX1132_DPP: ; %bb.0: ; %entry1416; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v01417; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -11418; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)1419; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s01420; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1421; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:11422; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:11423; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1424; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:11425; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:11426; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1427; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01428; GFX1132_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v21429; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s01430; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)1431; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 01432; GFX1132_DPP-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v3, v11433; GFX1132_DPP-NEXT: s_mov_b32 s0, exec_lo1434; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)1435; GFX1132_DPP-NEXT: v_cmpx_eq_u32_e32 0, v41436; GFX1132_DPP-NEXT: s_cbranch_execz .LBB3_21437; GFX1132_DPP-NEXT: ; %bb.1:1438; GFX1132_DPP-NEXT: ds_add_u32 v0, v31439; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)1440; GFX1132_DPP-NEXT: buffer_gl0_inv1441; GFX1132_DPP-NEXT: .LBB3_2:1442; GFX1132_DPP-NEXT: s_endpgm1443entry:1444 %lane = call i32 @llvm.amdgcn.workitem.id.x()1445 %old = atomicrmw add ptr addrspace(3) @local_var32, i32 %lane acq_rel1446 ret void1447}1448 1449define amdgpu_kernel void @add_i64_constant(ptr addrspace(1) %out) {1450; GFX7LESS-LABEL: add_i64_constant:1451; GFX7LESS: ; %bb.0: ; %entry1452; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec1453; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 01454; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v2, s3, v01455; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21456; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr11457; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc1458; GFX7LESS-NEXT: s_cbranch_execz .LBB4_21459; GFX7LESS-NEXT: ; %bb.1:1460; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]1461; GFX7LESS-NEXT: s_mul_i32 s2, s2, 51462; GFX7LESS-NEXT: v_mov_b32_e32 v1, 01463; GFX7LESS-NEXT: v_mov_b32_e32 v0, s21464; GFX7LESS-NEXT: s_mov_b32 m0, -11465; GFX7LESS-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1466; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1467; GFX7LESS-NEXT: .LBB4_2:1468; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]1469; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x91470; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0001471; GFX7LESS-NEXT: s_mov_b32 s2, -11472; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v11473; GFX7LESS-NEXT: v_readfirstlane_b32 s5, v01474; GFX7LESS-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v21475; GFX7LESS-NEXT: v_mul_u32_u24_e32 v0, 5, v21476; GFX7LESS-NEXT: v_mov_b32_e32 v2, s41477; GFX7LESS-NEXT: v_add_i32_e32 v0, vcc, s5, v01478; GFX7LESS-NEXT: v_addc_u32_e32 v1, vcc, v2, v1, vcc1479; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1480; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01481; GFX7LESS-NEXT: s_endpgm1482;1483; GFX8-LABEL: add_i64_constant:1484; GFX8: ; %bb.0: ; %entry1485; GFX8-NEXT: s_mov_b64 s[2:3], exec1486; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 01487; GFX8-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v01488; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21489; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr11490; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc1491; GFX8-NEXT: s_cbranch_execz .LBB4_21492; GFX8-NEXT: ; %bb.1:1493; GFX8-NEXT: s_bcnt1_i32_b64 s2, s[2:3]1494; GFX8-NEXT: s_mul_i32 s2, s2, 51495; GFX8-NEXT: v_mov_b32_e32 v0, s21496; GFX8-NEXT: v_mov_b32_e32 v1, 01497; GFX8-NEXT: s_mov_b32 m0, -11498; GFX8-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1499; GFX8-NEXT: s_waitcnt lgkmcnt(0)1500; GFX8-NEXT: .LBB4_2:1501; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]1502; GFX8-NEXT: v_readfirstlane_b32 s2, v11503; GFX8-NEXT: v_readfirstlane_b32 s3, v01504; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241505; GFX8-NEXT: v_mov_b32_e32 v0, s31506; GFX8-NEXT: v_mov_b32_e32 v1, s21507; GFX8-NEXT: v_mad_u64_u32 v[0:1], s[2:3], v2, 5, v[0:1]1508; GFX8-NEXT: s_mov_b32 s3, 0xf0001509; GFX8-NEXT: s_mov_b32 s2, -11510; GFX8-NEXT: s_waitcnt lgkmcnt(0)1511; GFX8-NEXT: s_nop 11512; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01513; GFX8-NEXT: s_endpgm1514;1515; GFX9-LABEL: add_i64_constant:1516; GFX9: ; %bb.0: ; %entry1517; GFX9-NEXT: s_mov_b64 s[2:3], exec1518; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 01519; GFX9-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v01520; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21521; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr11522; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc1523; GFX9-NEXT: s_cbranch_execz .LBB4_21524; GFX9-NEXT: ; %bb.1:1525; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]1526; GFX9-NEXT: s_mul_i32 s2, s2, 51527; GFX9-NEXT: v_mov_b32_e32 v0, s21528; GFX9-NEXT: v_mov_b32_e32 v1, 01529; GFX9-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1530; GFX9-NEXT: s_waitcnt lgkmcnt(0)1531; GFX9-NEXT: .LBB4_2:1532; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]1533; GFX9-NEXT: v_readfirstlane_b32 s2, v11534; GFX9-NEXT: v_readfirstlane_b32 s3, v01535; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241536; GFX9-NEXT: v_mov_b32_e32 v0, s31537; GFX9-NEXT: v_mov_b32_e32 v1, s21538; GFX9-NEXT: v_mad_u64_u32 v[0:1], s[2:3], v2, 5, v[0:1]1539; GFX9-NEXT: s_mov_b32 s3, 0xf0001540; GFX9-NEXT: s_mov_b32 s2, -11541; GFX9-NEXT: s_waitcnt lgkmcnt(0)1542; GFX9-NEXT: s_nop 11543; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01544; GFX9-NEXT: s_endpgm1545;1546; GFX1064-LABEL: add_i64_constant:1547; GFX1064: ; %bb.0: ; %entry1548; GFX1064-NEXT: s_mov_b64 s[2:3], exec1549; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 01550; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v01551; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr11552; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21553; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc1554; GFX1064-NEXT: s_cbranch_execz .LBB4_21555; GFX1064-NEXT: ; %bb.1:1556; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]1557; GFX1064-NEXT: v_mov_b32_e32 v1, 01558; GFX1064-NEXT: s_mul_i32 s2, s2, 51559; GFX1064-NEXT: v_mov_b32_e32 v0, s21560; GFX1064-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1561; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1562; GFX1064-NEXT: buffer_gl0_inv1563; GFX1064-NEXT: .LBB4_2:1564; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1565; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]1566; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241567; GFX1064-NEXT: v_readfirstlane_b32 s3, v11568; GFX1064-NEXT: v_readfirstlane_b32 s2, v01569; GFX1064-NEXT: v_mad_u64_u32 v[0:1], s[2:3], v2, 5, s[2:3]1570; GFX1064-NEXT: s_mov_b32 s3, 0x310160001571; GFX1064-NEXT: s_mov_b32 s2, -11572; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1573; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01574; GFX1064-NEXT: s_endpgm1575;1576; GFX1032-LABEL: add_i64_constant:1577; GFX1032: ; %bb.0: ; %entry1578; GFX1032-NEXT: s_mov_b32 s1, exec_lo1579; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr11580; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v2, s1, 01581; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v21582; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo1583; GFX1032-NEXT: s_cbranch_execz .LBB4_21584; GFX1032-NEXT: ; %bb.1:1585; GFX1032-NEXT: s_bcnt1_i32_b32 s1, s11586; GFX1032-NEXT: v_mov_b32_e32 v1, 01587; GFX1032-NEXT: s_mul_i32 s1, s1, 51588; GFX1032-NEXT: v_mov_b32_e32 v0, s11589; GFX1032-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1590; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1591; GFX1032-NEXT: buffer_gl0_inv1592; GFX1032-NEXT: .LBB4_2:1593; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1594; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s01595; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241596; GFX1032-NEXT: v_readfirstlane_b32 s3, v11597; GFX1032-NEXT: v_readfirstlane_b32 s2, v01598; GFX1032-NEXT: v_mad_u64_u32 v[0:1], s2, v2, 5, s[2:3]1599; GFX1032-NEXT: s_mov_b32 s3, 0x310160001600; GFX1032-NEXT: s_mov_b32 s2, -11601; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1602; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01603; GFX1032-NEXT: s_endpgm1604;1605; GFX1164-LABEL: add_i64_constant:1606; GFX1164: ; %bb.0: ; %entry1607; GFX1164-NEXT: s_mov_b64 s[2:3], exec1608; GFX1164-NEXT: s_mov_b64 s[0:1], exec1609; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 01610; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1611; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v01612; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr11613; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v21614; GFX1164-NEXT: s_cbranch_execz .LBB4_21615; GFX1164-NEXT: ; %bb.1:1616; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]1617; GFX1164-NEXT: v_mov_b32_e32 v1, 01618; GFX1164-NEXT: s_mul_i32 s2, s2, 51619; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1620; GFX1164-NEXT: v_mov_b32_e32 v0, s21621; GFX1164-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1622; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1623; GFX1164-NEXT: buffer_gl0_inv1624; GFX1164-NEXT: .LBB4_2:1625; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]1626; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x241627; GFX1164-NEXT: v_readfirstlane_b32 s3, v11628; GFX1164-NEXT: v_readfirstlane_b32 s2, v01629; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)1630; GFX1164-NEXT: v_mad_u64_u32 v[0:1], null, v2, 5, s[2:3]1631; GFX1164-NEXT: s_mov_b32 s3, 0x310160001632; GFX1164-NEXT: s_mov_b32 s2, -11633; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1634; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 01635; GFX1164-NEXT: s_endpgm1636;1637; GFX1132-LABEL: add_i64_constant:1638; GFX1132: ; %bb.0: ; %entry1639; GFX1132-NEXT: s_mov_b32 s1, exec_lo1640; GFX1132-NEXT: s_mov_b32 s0, exec_lo1641; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, s1, 01642; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr11643; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)1644; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v21645; GFX1132-NEXT: s_cbranch_execz .LBB4_21646; GFX1132-NEXT: ; %bb.1:1647; GFX1132-NEXT: s_bcnt1_i32_b32 s1, s11648; GFX1132-NEXT: v_mov_b32_e32 v1, 01649; GFX1132-NEXT: s_mul_i32 s1, s1, 51650; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1651; GFX1132-NEXT: v_mov_b32_e32 v0, s11652; GFX1132-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]1653; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1654; GFX1132-NEXT: buffer_gl0_inv1655; GFX1132-NEXT: .LBB4_2:1656; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s01657; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x241658; GFX1132-NEXT: v_readfirstlane_b32 s3, v11659; GFX1132-NEXT: v_readfirstlane_b32 s2, v01660; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)1661; GFX1132-NEXT: v_mad_u64_u32 v[0:1], null, v2, 5, s[2:3]1662; GFX1132-NEXT: s_mov_b32 s3, 0x310160001663; GFX1132-NEXT: s_mov_b32 s2, -11664; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1665; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 01666; GFX1132-NEXT: s_endpgm1667entry:1668 %old = atomicrmw add ptr addrspace(3) @local_var64, i64 5 acq_rel1669 store i64 %old, ptr addrspace(1) %out1670 ret void1671}1672 1673define amdgpu_kernel void @add_i64_uniform(ptr addrspace(1) %out, i64 %additive) {1674; GFX7LESS-LABEL: add_i64_uniform:1675; GFX7LESS: ; %bb.0: ; %entry1676; GFX7LESS-NEXT: s_mov_b64 s[6:7], exec1677; GFX7LESS-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x91678; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s6, 01679; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v2, s7, v01680; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21681; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr11682; GFX7LESS-NEXT: s_and_saveexec_b64 s[4:5], vcc1683; GFX7LESS-NEXT: s_cbranch_execz .LBB5_21684; GFX7LESS-NEXT: ; %bb.1:1685; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[6:7]1686; GFX7LESS-NEXT: v_mov_b32_e32 v3, 01687; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1688; GFX7LESS-NEXT: s_mul_i32 s7, s3, s61689; GFX7LESS-NEXT: v_mov_b32_e32 v0, s61690; GFX7LESS-NEXT: v_mul_hi_u32 v0, s2, v01691; GFX7LESS-NEXT: s_mul_i32 s6, s2, s61692; GFX7LESS-NEXT: v_add_i32_e32 v1, vcc, s7, v01693; GFX7LESS-NEXT: v_mov_b32_e32 v0, s61694; GFX7LESS-NEXT: s_mov_b32 m0, -11695; GFX7LESS-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1696; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1697; GFX7LESS-NEXT: .LBB5_2:1698; GFX7LESS-NEXT: s_or_b64 exec, exec, s[4:5]1699; GFX7LESS-NEXT: s_mov_b32 s7, 0xf0001700; GFX7LESS-NEXT: s_mov_b32 s6, -11701; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1702; GFX7LESS-NEXT: s_mov_b32 s4, s01703; GFX7LESS-NEXT: s_mov_b32 s5, s11704; GFX7LESS-NEXT: v_readfirstlane_b32 s0, v11705; GFX7LESS-NEXT: v_readfirstlane_b32 s1, v01706; GFX7LESS-NEXT: v_mul_lo_u32 v0, s3, v21707; GFX7LESS-NEXT: v_mul_hi_u32 v1, s2, v21708; GFX7LESS-NEXT: v_mul_lo_u32 v2, s2, v21709; GFX7LESS-NEXT: v_add_i32_e32 v1, vcc, v1, v01710; GFX7LESS-NEXT: v_mov_b32_e32 v3, s01711; GFX7LESS-NEXT: v_add_i32_e32 v0, vcc, s1, v21712; GFX7LESS-NEXT: v_addc_u32_e32 v1, vcc, v3, v1, vcc1713; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 01714; GFX7LESS-NEXT: s_endpgm1715;1716; GFX8-LABEL: add_i64_uniform:1717; GFX8: ; %bb.0: ; %entry1718; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241719; GFX8-NEXT: s_mov_b64 s[6:7], exec1720; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 01721; GFX8-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v01722; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21723; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr11724; GFX8-NEXT: s_and_saveexec_b64 s[4:5], vcc1725; GFX8-NEXT: s_cbranch_execz .LBB5_21726; GFX8-NEXT: ; %bb.1:1727; GFX8-NEXT: s_bcnt1_i32_b64 s8, s[6:7]1728; GFX8-NEXT: v_mov_b32_e32 v0, s81729; GFX8-NEXT: s_waitcnt lgkmcnt(0)1730; GFX8-NEXT: v_mad_u64_u32 v[0:1], s[6:7], s2, v0, 01731; GFX8-NEXT: s_mul_i32 s6, s3, s81732; GFX8-NEXT: v_mov_b32_e32 v3, 01733; GFX8-NEXT: v_add_u32_e32 v1, vcc, s6, v11734; GFX8-NEXT: s_mov_b32 m0, -11735; GFX8-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1736; GFX8-NEXT: s_waitcnt lgkmcnt(0)1737; GFX8-NEXT: .LBB5_2:1738; GFX8-NEXT: s_or_b64 exec, exec, s[4:5]1739; GFX8-NEXT: v_readfirstlane_b32 s4, v11740; GFX8-NEXT: v_readfirstlane_b32 s5, v01741; GFX8-NEXT: v_mov_b32_e32 v0, s51742; GFX8-NEXT: v_mov_b32_e32 v1, s41743; GFX8-NEXT: s_waitcnt lgkmcnt(0)1744; GFX8-NEXT: v_mul_lo_u32 v3, s3, v21745; GFX8-NEXT: v_mad_u64_u32 v[0:1], s[2:3], s2, v2, v[0:1]1746; GFX8-NEXT: s_mov_b32 s7, 0xf0001747; GFX8-NEXT: s_mov_b32 s6, -11748; GFX8-NEXT: s_mov_b32 s4, s01749; GFX8-NEXT: s_mov_b32 s5, s11750; GFX8-NEXT: v_add_u32_e32 v1, vcc, v3, v11751; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 01752; GFX8-NEXT: s_endpgm1753;1754; GFX9-LABEL: add_i64_uniform:1755; GFX9: ; %bb.0: ; %entry1756; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241757; GFX9-NEXT: s_mov_b64 s[6:7], exec1758; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 01759; GFX9-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v01760; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21761; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr11762; GFX9-NEXT: s_and_saveexec_b64 s[4:5], vcc1763; GFX9-NEXT: s_cbranch_execz .LBB5_21764; GFX9-NEXT: ; %bb.1:1765; GFX9-NEXT: s_bcnt1_i32_b64 s6, s[6:7]1766; GFX9-NEXT: s_waitcnt lgkmcnt(0)1767; GFX9-NEXT: s_mul_i32 s7, s3, s61768; GFX9-NEXT: s_mul_hi_u32 s8, s2, s61769; GFX9-NEXT: s_add_i32 s8, s8, s71770; GFX9-NEXT: s_mul_i32 s6, s2, s61771; GFX9-NEXT: v_mov_b32_e32 v0, s61772; GFX9-NEXT: v_mov_b32_e32 v1, s81773; GFX9-NEXT: v_mov_b32_e32 v3, 01774; GFX9-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1775; GFX9-NEXT: s_waitcnt lgkmcnt(0)1776; GFX9-NEXT: .LBB5_2:1777; GFX9-NEXT: s_or_b64 exec, exec, s[4:5]1778; GFX9-NEXT: v_readfirstlane_b32 s4, v11779; GFX9-NEXT: v_readfirstlane_b32 s5, v01780; GFX9-NEXT: v_mov_b32_e32 v0, s51781; GFX9-NEXT: v_mov_b32_e32 v1, s41782; GFX9-NEXT: s_waitcnt lgkmcnt(0)1783; GFX9-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s2, v2, v[0:1]1784; GFX9-NEXT: s_mov_b32 s7, 0xf0001785; GFX9-NEXT: s_mov_b32 s6, -11786; GFX9-NEXT: v_mad_u64_u32 v[1:2], s[2:3], s3, v2, v[1:2]1787; GFX9-NEXT: s_mov_b32 s4, s01788; GFX9-NEXT: s_mov_b32 s5, s11789; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 01790; GFX9-NEXT: s_endpgm1791;1792; GFX1064-LABEL: add_i64_uniform:1793; GFX1064: ; %bb.0: ; %entry1794; GFX1064-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241795; GFX1064-NEXT: s_mov_b64 s[6:7], exec1796; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 01797; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v01798; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr11799; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21800; GFX1064-NEXT: s_and_saveexec_b64 s[4:5], vcc1801; GFX1064-NEXT: s_cbranch_execz .LBB5_21802; GFX1064-NEXT: ; %bb.1:1803; GFX1064-NEXT: s_bcnt1_i32_b64 s6, s[6:7]1804; GFX1064-NEXT: v_mov_b32_e32 v3, 01805; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1806; GFX1064-NEXT: s_mul_i32 s7, s3, s61807; GFX1064-NEXT: s_mul_hi_u32 s8, s2, s61808; GFX1064-NEXT: s_mul_i32 s6, s2, s61809; GFX1064-NEXT: s_add_i32 s8, s8, s71810; GFX1064-NEXT: v_mov_b32_e32 v0, s61811; GFX1064-NEXT: v_mov_b32_e32 v1, s81812; GFX1064-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1813; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1814; GFX1064-NEXT: buffer_gl0_inv1815; GFX1064-NEXT: .LBB5_2:1816; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1817; GFX1064-NEXT: s_or_b64 exec, exec, s[4:5]1818; GFX1064-NEXT: v_readfirstlane_b32 s5, v11819; GFX1064-NEXT: v_readfirstlane_b32 s4, v01820; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1821; GFX1064-NEXT: v_mad_u64_u32 v[0:1], s[4:5], s2, v2, s[4:5]1822; GFX1064-NEXT: v_mad_u64_u32 v[1:2], s[2:3], s3, v2, v[1:2]1823; GFX1064-NEXT: s_mov_b32 s3, 0x310160001824; GFX1064-NEXT: s_mov_b32 s2, -11825; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01826; GFX1064-NEXT: s_endpgm1827;1828; GFX1032-LABEL: add_i64_uniform:1829; GFX1032: ; %bb.0: ; %entry1830; GFX1032-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241831; GFX1032-NEXT: s_mov_b32 s6, exec_lo1832; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr11833; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v2, s6, 01834; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v21835; GFX1032-NEXT: s_and_saveexec_b32 s4, vcc_lo1836; GFX1032-NEXT: s_cbranch_execz .LBB5_21837; GFX1032-NEXT: ; %bb.1:1838; GFX1032-NEXT: s_bcnt1_i32_b32 s5, s61839; GFX1032-NEXT: v_mov_b32_e32 v3, 01840; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1841; GFX1032-NEXT: s_mul_i32 s6, s3, s51842; GFX1032-NEXT: s_mul_hi_u32 s7, s2, s51843; GFX1032-NEXT: s_mul_i32 s5, s2, s51844; GFX1032-NEXT: s_add_i32 s7, s7, s61845; GFX1032-NEXT: v_mov_b32_e32 v0, s51846; GFX1032-NEXT: v_mov_b32_e32 v1, s71847; GFX1032-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1848; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1849; GFX1032-NEXT: buffer_gl0_inv1850; GFX1032-NEXT: .LBB5_2:1851; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)1852; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s41853; GFX1032-NEXT: v_readfirstlane_b32 s5, v11854; GFX1032-NEXT: v_readfirstlane_b32 s4, v01855; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1856; GFX1032-NEXT: v_mad_u64_u32 v[0:1], s2, s2, v2, s[4:5]1857; GFX1032-NEXT: v_mad_u64_u32 v[1:2], s2, s3, v2, v[1:2]1858; GFX1032-NEXT: s_mov_b32 s3, 0x310160001859; GFX1032-NEXT: s_mov_b32 s2, -11860; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01861; GFX1032-NEXT: s_endpgm1862;1863; GFX1164-LABEL: add_i64_uniform:1864; GFX1164: ; %bb.0: ; %entry1865; GFX1164-NEXT: s_load_b128 s[0:3], s[4:5], 0x241866; GFX1164-NEXT: s_mov_b64 s[6:7], exec1867; GFX1164-NEXT: s_mov_b64 s[4:5], exec1868; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 01869; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1870; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v01871; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr11872; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v21873; GFX1164-NEXT: s_cbranch_execz .LBB5_21874; GFX1164-NEXT: ; %bb.1:1875; GFX1164-NEXT: s_bcnt1_i32_b64 s6, s[6:7]1876; GFX1164-NEXT: v_mov_b32_e32 v3, 01877; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1878; GFX1164-NEXT: s_mul_i32 s7, s3, s61879; GFX1164-NEXT: s_mul_hi_u32 s8, s2, s61880; GFX1164-NEXT: s_mul_i32 s6, s2, s61881; GFX1164-NEXT: s_add_i32 s8, s8, s71882; GFX1164-NEXT: v_mov_b32_e32 v0, s61883; GFX1164-NEXT: v_mov_b32_e32 v1, s81884; GFX1164-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1885; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1886; GFX1164-NEXT: buffer_gl0_inv1887; GFX1164-NEXT: .LBB5_2:1888; GFX1164-NEXT: s_or_b64 exec, exec, s[4:5]1889; GFX1164-NEXT: v_readfirstlane_b32 s5, v11890; GFX1164-NEXT: v_readfirstlane_b32 s4, v01891; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1892; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)1893; GFX1164-NEXT: v_mad_u64_u32 v[0:1], null, s2, v2, s[4:5]1894; GFX1164-NEXT: s_mov_b32 s2, -11895; GFX1164-NEXT: v_mad_u64_u32 v[3:4], null, s3, v2, v[1:2]1896; GFX1164-NEXT: s_mov_b32 s3, 0x310160001897; GFX1164-NEXT: v_mov_b32_e32 v1, v31898; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 01899; GFX1164-NEXT: s_endpgm1900;1901; GFX1132-LABEL: add_i64_uniform:1902; GFX1132: ; %bb.0: ; %entry1903; GFX1132-NEXT: s_load_b128 s[0:3], s[4:5], 0x241904; GFX1132-NEXT: s_mov_b32 s6, exec_lo1905; GFX1132-NEXT: s_mov_b32 s4, exec_lo1906; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, s6, 01907; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr11908; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)1909; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v21910; GFX1132-NEXT: s_cbranch_execz .LBB5_21911; GFX1132-NEXT: ; %bb.1:1912; GFX1132-NEXT: s_bcnt1_i32_b32 s5, s61913; GFX1132-NEXT: v_mov_b32_e32 v3, 01914; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1915; GFX1132-NEXT: s_mul_i32 s6, s3, s51916; GFX1132-NEXT: s_mul_hi_u32 s7, s2, s51917; GFX1132-NEXT: s_mul_i32 s5, s2, s51918; GFX1132-NEXT: s_add_i32 s7, s7, s61919; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1920; GFX1132-NEXT: v_dual_mov_b32 v0, s5 :: v_dual_mov_b32 v1, s71921; GFX1132-NEXT: ds_add_rtn_u64 v[0:1], v3, v[0:1]1922; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1923; GFX1132-NEXT: buffer_gl0_inv1924; GFX1132-NEXT: .LBB5_2:1925; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s41926; GFX1132-NEXT: v_readfirstlane_b32 s5, v11927; GFX1132-NEXT: v_readfirstlane_b32 s4, v01928; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1929; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)1930; GFX1132-NEXT: v_mad_u64_u32 v[0:1], null, s2, v2, s[4:5]1931; GFX1132-NEXT: s_mov_b32 s2, -11932; GFX1132-NEXT: v_mad_u64_u32 v[3:4], null, s3, v2, v[1:2]1933; GFX1132-NEXT: s_mov_b32 s3, 0x310160001934; GFX1132-NEXT: v_mov_b32_e32 v1, v31935; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 01936; GFX1132-NEXT: s_endpgm1937entry:1938 %old = atomicrmw add ptr addrspace(3) @local_var64, i64 %additive acq_rel1939 store i64 %old, ptr addrspace(1) %out1940 ret void1941}1942 1943define amdgpu_kernel void @add_i64_varying(ptr addrspace(1) %out) {1944; GFX7LESS_ITERATIVE-LABEL: add_i64_varying:1945; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry1946; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec1947; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 01948; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], 01949; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr21950; GFX7LESS_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop1951; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=11952; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]1953; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s61954; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s61955; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s61956; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m01957; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m01958; GFX7LESS_ITERATIVE-NEXT: s_add_u32 s0, s0, s81959; GFX7LESS_ITERATIVE-NEXT: s_addc_u32 s1, s1, s71960; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s61961; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]1962; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[2:3], 01963; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]1964; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB6_11965; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd1966; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 01967; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v01968; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01969; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr41970; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc1971; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]1972; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB6_41973; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:1974; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 01975; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s11976; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s01977; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -11978; GFX7LESS_ITERATIVE-NEXT: ds_add_rtn_u64 v[3:4], v0, v[3:4]1979; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1980; GFX7LESS_ITERATIVE-NEXT: .LBB6_4:1981; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]1982; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x91983; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0001984; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -11985; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v41986; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v31987; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s41988; GFX7LESS_ITERATIVE-NEXT: v_add_i32_e32 v0, vcc, s5, v11989; GFX7LESS_ITERATIVE-NEXT: v_addc_u32_e32 v1, vcc, v3, v2, vcc1990; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)1991; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 01992; GFX7LESS_ITERATIVE-NEXT: s_endpgm1993;1994; GFX8_ITERATIVE-LABEL: add_i64_varying:1995; GFX8_ITERATIVE: ; %bb.0: ; %entry1996; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec1997; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 01998; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], 01999; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr22000; GFX8_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop2001; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12002; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]2003; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s62004; GFX8_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s62005; GFX8_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s62006; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m02007; GFX8_ITERATIVE-NEXT: s_add_u32 s0, s0, s82008; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m02009; GFX8_ITERATIVE-NEXT: s_addc_u32 s1, s1, s72010; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s62011; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]2012; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB6_12013; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2014; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02015; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02016; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02017; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr42018; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2019; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2020; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB6_42021; GFX8_ITERATIVE-NEXT: ; %bb.3:2022; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s12023; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 02024; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s02025; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -12026; GFX8_ITERATIVE-NEXT: ds_add_rtn_u64 v[3:4], v0, v[3:4]2027; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2028; GFX8_ITERATIVE-NEXT: .LBB6_4:2029; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]2030; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242031; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v42032; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v32033; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s42034; GFX8_ITERATIVE-NEXT: v_add_u32_e32 v0, vcc, s5, v12035; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0002036; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -12037; GFX8_ITERATIVE-NEXT: v_addc_u32_e32 v1, vcc, v3, v2, vcc2038; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2039; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 02040; GFX8_ITERATIVE-NEXT: s_endpgm2041;2042; GFX9_ITERATIVE-LABEL: add_i64_varying:2043; GFX9_ITERATIVE: ; %bb.0: ; %entry2044; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2045; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 02046; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02047; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr22048; GFX9_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop2049; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12050; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]2051; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s62052; GFX9_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s62053; GFX9_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s62054; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m02055; GFX9_ITERATIVE-NEXT: s_add_u32 s0, s0, s82056; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m02057; GFX9_ITERATIVE-NEXT: s_addc_u32 s1, s1, s72058; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s62059; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]2060; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB6_12061; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2062; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02063; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02064; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02065; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr42066; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2067; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2068; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB6_42069; GFX9_ITERATIVE-NEXT: ; %bb.3:2070; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s12071; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 02072; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s02073; GFX9_ITERATIVE-NEXT: ds_add_rtn_u64 v[3:4], v0, v[3:4]2074; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2075; GFX9_ITERATIVE-NEXT: .LBB6_4:2076; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]2077; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242078; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v42079; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v32080; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s42081; GFX9_ITERATIVE-NEXT: v_add_co_u32_e32 v0, vcc, s5, v12082; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0002083; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -12084; GFX9_ITERATIVE-NEXT: v_addc_co_u32_e32 v1, vcc, v3, v2, vcc2085; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2086; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 02087; GFX9_ITERATIVE-NEXT: s_endpgm2088;2089; GFX1064_ITERATIVE-LABEL: add_i64_varying:2090; GFX1064_ITERATIVE: ; %bb.0: ; %entry2091; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 02092; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2093; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02094; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr22095; GFX1064_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop2096; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12097; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]2098; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v0, s62099; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v3, s62100; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s62101; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s62102; GFX1064_ITERATIVE-NEXT: s_add_u32 s0, s0, s72103; GFX1064_ITERATIVE-NEXT: s_addc_u32 s1, s1, s82104; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s62105; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]2106; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB6_12107; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2108; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02109; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr42110; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02111; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02112; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2113; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2114; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB6_42115; GFX1064_ITERATIVE-NEXT: ; %bb.3:2116; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s12117; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 02118; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s02119; GFX1064_ITERATIVE-NEXT: ds_add_rtn_u64 v[3:4], v0, v[3:4]2120; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2121; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv2122; GFX1064_ITERATIVE-NEXT: .LBB6_4:2123; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)2124; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]2125; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242126; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v32127; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v42128; GFX1064_ITERATIVE-NEXT: v_add_co_u32 v0, vcc, s2, v12129; GFX1064_ITERATIVE-NEXT: v_add_co_ci_u32_e32 v1, vcc, s3, v2, vcc2130; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160002131; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -12132; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2133; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 02134; GFX1064_ITERATIVE-NEXT: s_endpgm2135;2136; GFX1032_ITERATIVE-LABEL: add_i64_varying:2137; GFX1032_ITERATIVE: ; %bb.0: ; %entry2138; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 02139; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo2140; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02141; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr22142; GFX1032_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop2143; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12144; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s22145; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s32146; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s32147; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s32148; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s32149; GFX1032_ITERATIVE-NEXT: s_add_u32 s0, s0, s62150; GFX1032_ITERATIVE-NEXT: s_addc_u32 s1, s1, s72151; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s32152; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s32153; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB6_12154; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2155; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02156; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr42157; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02158; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo2159; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s22160; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB6_42161; GFX1032_ITERATIVE-NEXT: ; %bb.3:2162; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s12163; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 02164; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s02165; GFX1032_ITERATIVE-NEXT: ds_add_rtn_u64 v[3:4], v0, v[3:4]2166; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2167; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv2168; GFX1032_ITERATIVE-NEXT: .LBB6_4:2169; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)2170; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s22171; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242172; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v32173; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v42174; GFX1032_ITERATIVE-NEXT: v_add_co_u32 v0, vcc_lo, s2, v12175; GFX1032_ITERATIVE-NEXT: v_add_co_ci_u32_e32 v1, vcc_lo, s3, v2, vcc_lo2176; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160002177; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -12178; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2179; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 02180; GFX1032_ITERATIVE-NEXT: s_endpgm2181;2182; GFX1164_ITERATIVE-LABEL: add_i64_varying:2183; GFX1164_ITERATIVE: ; %bb.0: ; %entry2184; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 02185; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v02186; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2187; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02188; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr12189; GFX1164_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop2190; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12191; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s6, s[2:3]2192; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)2193; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s62194; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v2, s62195; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s62196; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s62197; GFX1164_ITERATIVE-NEXT: s_add_u32 s0, s0, s72198; GFX1164_ITERATIVE-NEXT: s_addc_u32 s1, s1, s82199; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s62200; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2201; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[6:7]2202; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB6_12203; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2204; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02205; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2206; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v22207; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v22208; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr32209; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2210; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2211; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2212; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB6_42213; GFX1164_ITERATIVE-NEXT: ; %bb.3:2214; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s12215; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 02216; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s02217; GFX1164_ITERATIVE-NEXT: ds_add_rtn_u64 v[2:3], v4, v[2:3]2218; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2219; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv2220; GFX1164_ITERATIVE-NEXT: .LBB6_4:2221; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]2222; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x242223; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v22224; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v32225; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2226; GFX1164_ITERATIVE-NEXT: v_add_co_u32 v0, vcc, s2, v02227; GFX1164_ITERATIVE-NEXT: v_add_co_ci_u32_e64 v1, null, s3, v1, vcc2228; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160002229; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -12230; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2231; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 02232; GFX1164_ITERATIVE-NEXT: s_endpgm2233;2234; GFX1132_ITERATIVE-LABEL: add_i64_varying:2235; GFX1132_ITERATIVE: ; %bb.0: ; %entry2236; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v02237; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo2238; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02239; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr12240; GFX1132_ITERATIVE-NEXT: .LBB6_1: ; %ComputeLoop2241; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12242; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s22243; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)2244; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s32245; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s32246; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s32247; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s32248; GFX1132_ITERATIVE-NEXT: s_add_u32 s0, s0, s62249; GFX1132_ITERATIVE-NEXT: s_addc_u32 s1, s1, s72250; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s32251; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2252; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s32253; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB6_12254; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2255; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02256; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2257; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v22258; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr32259; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo2260; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s22261; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB6_42262; GFX1132_ITERATIVE-NEXT: ; %bb.3:2263; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s12264; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s02265; GFX1132_ITERATIVE-NEXT: ds_add_rtn_u64 v[2:3], v4, v[2:3]2266; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2267; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv2268; GFX1132_ITERATIVE-NEXT: .LBB6_4:2269; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s22270; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x242271; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v22272; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v32273; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2274; GFX1132_ITERATIVE-NEXT: v_add_co_u32 v0, vcc_lo, s2, v02275; GFX1132_ITERATIVE-NEXT: v_add_co_ci_u32_e64 v1, null, s3, v1, vcc_lo2276; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160002277; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -12278; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2279; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 02280; GFX1132_ITERATIVE-NEXT: s_endpgm2281;2282; GFX7LESS_DPP-LABEL: add_i64_varying:2283; GFX7LESS_DPP: ; %bb.0: ; %entry2284; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x92285; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 02286; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -12287; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)2288; GFX7LESS_DPP-NEXT: ds_add_rtn_u64 v[0:1], v1, v[0:1]2289; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)2290; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0002291; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -12292; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 02293; GFX7LESS_DPP-NEXT: s_endpgm2294;2295; GFX8_DPP-LABEL: add_i64_varying:2296; GFX8_DPP: ; %bb.0: ; %entry2297; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 02298; GFX8_DPP-NEXT: v_mov_b32_e32 v7, 02299; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v52300; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -12301; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]2302; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02303; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]2304; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02305; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf2306; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v42307; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf2308; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02309; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc2310; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02311; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf2312; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v42313; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf2314; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02315; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc2316; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02317; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf2318; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v42319; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf2320; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02321; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc2322; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02323; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf2324; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v42325; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf2326; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02327; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc2328; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02329; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf2330; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v42331; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf2332; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02333; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc2334; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02335; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf2336; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v42337; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf2338; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc2339; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 02340; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 02341; GFX8_DPP-NEXT: v_readlane_b32 s3, v1, 632342; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 632343; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf2344; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf2345; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]2346; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v52347; GFX8_DPP-NEXT: ; implicit-def: $vgpr5_vgpr62348; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc2349; GFX8_DPP-NEXT: s_cbranch_execz .LBB6_22350; GFX8_DPP-NEXT: ; %bb.1:2351; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s32352; GFX8_DPP-NEXT: v_mov_b32_e32 v5, s22353; GFX8_DPP-NEXT: s_mov_b32 m0, -12354; GFX8_DPP-NEXT: ds_add_rtn_u64 v[5:6], v7, v[5:6]2355; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)2356; GFX8_DPP-NEXT: .LBB6_2:2357; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]2358; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242359; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v62360; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v52361; GFX8_DPP-NEXT: v_mov_b32_e32 v5, v32362; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v42363; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s42364; GFX8_DPP-NEXT: v_add_u32_e32 v5, vcc, s5, v52365; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0002366; GFX8_DPP-NEXT: s_mov_b32 s2, -12367; GFX8_DPP-NEXT: v_addc_u32_e32 v6, vcc, v0, v6, vcc2368; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)2369; GFX8_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 02370; GFX8_DPP-NEXT: s_endpgm2371;2372; GFX9_DPP-LABEL: add_i64_varying:2373; GFX9_DPP: ; %bb.0: ; %entry2374; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 02375; GFX9_DPP-NEXT: v_mov_b32_e32 v7, 02376; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v52377; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -12378; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]2379; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02380; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]2381; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02382; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf2383; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v42384; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf2385; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02386; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2387; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02388; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf2389; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v42390; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf2391; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02392; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2393; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02394; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf2395; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v42396; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf2397; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02398; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2399; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02400; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf2401; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v42402; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf2403; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02404; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2405; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02406; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf2407; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v42408; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf2409; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02410; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2411; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02412; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf2413; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v42414; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf2415; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc2416; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 02417; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 02418; GFX9_DPP-NEXT: v_readlane_b32 s3, v1, 632419; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 632420; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf2421; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf2422; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]2423; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v52424; GFX9_DPP-NEXT: ; implicit-def: $vgpr5_vgpr62425; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc2426; GFX9_DPP-NEXT: s_cbranch_execz .LBB6_22427; GFX9_DPP-NEXT: ; %bb.1:2428; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s32429; GFX9_DPP-NEXT: v_mov_b32_e32 v5, s22430; GFX9_DPP-NEXT: ds_add_rtn_u64 v[5:6], v7, v[5:6]2431; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)2432; GFX9_DPP-NEXT: .LBB6_2:2433; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]2434; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242435; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v62436; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v52437; GFX9_DPP-NEXT: v_mov_b32_e32 v5, v32438; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v42439; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s42440; GFX9_DPP-NEXT: v_add_co_u32_e32 v5, vcc, s5, v52441; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0002442; GFX9_DPP-NEXT: s_mov_b32 s2, -12443; GFX9_DPP-NEXT: v_addc_co_u32_e32 v6, vcc, v0, v6, vcc2444; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)2445; GFX9_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 02446; GFX9_DPP-NEXT: s_endpgm2447;2448; GFX1064_DPP-LABEL: add_i64_varying:2449; GFX1064_DPP: ; %bb.0: ; %entry2450; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -12451; GFX1064_DPP-NEXT: v_mov_b32_e32 v1, 02452; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]2453; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v3, 0, 0, s[0:1]2454; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 02455; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 02456; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 02457; GFX1064_DPP-NEXT: v_mov_b32_dpp v1, v2 row_shr:1 row_mask:0xf bank_mask:0xf2458; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, 02459; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v3 row_shr:1 row_mask:0xf bank_mask:0xf2460; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, 02461; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v2, v12462; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v3, v4, vcc2463; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 02464; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:2 row_mask:0xf bank_mask:0xf2465; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 02466; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:2 row_mask:0xf bank_mask:0xf2467; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v62468; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc2469; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 02470; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:4 row_mask:0xf bank_mask:0xf2471; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 02472; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v2 row_shr:4 row_mask:0xf bank_mask:0xf2473; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v42474; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v3, vcc2475; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 02476; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:8 row_mask:0xf bank_mask:0xf2477; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:8 row_mask:0xf bank_mask:0xf2478; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v62479; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc2480; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 02481; GFX1064_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -12482; GFX1064_DPP-NEXT: v_permlanex16_b32 v6, v2, -1, -12483; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2484; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2485; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v32486; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc2487; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 02488; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 312489; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 02490; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 312491; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s22492; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, s32493; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf2494; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf2495; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v32496; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc2497; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]2498; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02499; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -12500; GFX1064_DPP-NEXT: v_mov_b32_dpp v7, v1 row_shr:1 row_mask:0xf bank_mask:0xf2501; GFX1064_DPP-NEXT: v_mov_b32_dpp v8, v2 row_shr:1 row_mask:0xf bank_mask:0xf2502; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 152503; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 152504; GFX1064_DPP-NEXT: v_readlane_b32 s6, v2, 312505; GFX1064_DPP-NEXT: v_readlane_b32 s7, v1, 312506; GFX1064_DPP-NEXT: v_readlane_b32 s8, v1, 472507; GFX1064_DPP-NEXT: v_writelane_b32 v8, s2, 162508; GFX1064_DPP-NEXT: v_writelane_b32 v7, s3, 162509; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 632510; GFX1064_DPP-NEXT: v_readlane_b32 s9, v2, 472511; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 632512; GFX1064_DPP-NEXT: v_writelane_b32 v8, s6, 322513; GFX1064_DPP-NEXT: v_writelane_b32 v7, s7, 322514; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]2515; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v9, exec_hi, v02516; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 02517; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -12518; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]2519; GFX1064_DPP-NEXT: v_writelane_b32 v8, s9, 482520; GFX1064_DPP-NEXT: v_writelane_b32 v7, s8, 482521; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]2522; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v92523; GFX1064_DPP-NEXT: s_mov_b32 s2, -12524; GFX1064_DPP-NEXT: ; implicit-def: $vgpr9_vgpr102525; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc2526; GFX1064_DPP-NEXT: s_cbranch_execz .LBB6_22527; GFX1064_DPP-NEXT: ; %bb.1:2528; GFX1064_DPP-NEXT: v_mov_b32_e32 v10, s12529; GFX1064_DPP-NEXT: v_mov_b32_e32 v9, s02530; GFX1064_DPP-NEXT: ds_add_rtn_u64 v[9:10], v0, v[9:10]2531; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)2532; GFX1064_DPP-NEXT: buffer_gl0_inv2533; GFX1064_DPP-NEXT: .LBB6_2:2534; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)2535; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]2536; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242537; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v92538; GFX1064_DPP-NEXT: v_mov_b32_e32 v11, v72539; GFX1064_DPP-NEXT: v_mov_b32_e32 v12, v82540; GFX1064_DPP-NEXT: s_mov_b32 null, 02541; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v102542; GFX1064_DPP-NEXT: v_add_co_u32 v9, vcc, s3, v112543; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160002544; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v10, vcc, s4, v12, vcc2545; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)2546; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[9:10], off, s[0:3], 02547; GFX1064_DPP-NEXT: s_endpgm2548;2549; GFX1032_DPP-LABEL: add_i64_varying:2550; GFX1032_DPP: ; %bb.0: ; %entry2551; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -12552; GFX1032_DPP-NEXT: v_mov_b32_e32 v1, 02553; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s22554; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v3, 0, 0, s22555; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 02556; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 02557; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 02558; GFX1032_DPP-NEXT: v_mov_b32_dpp v1, v2 row_shr:1 row_mask:0xf bank_mask:0xf2559; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, 02560; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v3 row_shr:1 row_mask:0xf bank_mask:0xf2561; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, 02562; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v2, v12563; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v3, v4, vcc_lo2564; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 02565; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:2 row_mask:0xf bank_mask:0xf2566; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 02567; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:2 row_mask:0xf bank_mask:0xf2568; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v62569; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo2570; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 02571; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:4 row_mask:0xf bank_mask:0xf2572; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 02573; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v2 row_shr:4 row_mask:0xf bank_mask:0xf2574; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v42575; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v3, vcc_lo2576; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 02577; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:8 row_mask:0xf bank_mask:0xf2578; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:8 row_mask:0xf bank_mask:0xf2579; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v62580; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo2581; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 02582; GFX1032_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -12583; GFX1032_DPP-NEXT: v_permlanex16_b32 v6, v2, -1, -12584; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2585; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2586; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v32587; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo2588; GFX1032_DPP-NEXT: v_readlane_b32 s3, v1, 152589; GFX1032_DPP-NEXT: v_readlane_b32 s0, v1, 312590; GFX1032_DPP-NEXT: v_readlane_b32 s1, v2, 312591; GFX1032_DPP-NEXT: v_mov_b32_dpp v7, v1 row_shr:1 row_mask:0xf bank_mask:0xf2592; GFX1032_DPP-NEXT: v_mov_b32_dpp v8, v2 row_shr:1 row_mask:0xf bank_mask:0xf2593; GFX1032_DPP-NEXT: v_readlane_b32 s6, v2, 152594; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s22595; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v9, exec_lo, 02596; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 02597; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -12598; GFX1032_DPP-NEXT: v_writelane_b32 v8, s6, 162599; GFX1032_DPP-NEXT: v_writelane_b32 v7, s3, 162600; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s22601; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v92602; GFX1032_DPP-NEXT: s_mov_b32 s2, -12603; GFX1032_DPP-NEXT: ; implicit-def: $vgpr9_vgpr102604; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo2605; GFX1032_DPP-NEXT: s_cbranch_execz .LBB6_22606; GFX1032_DPP-NEXT: ; %bb.1:2607; GFX1032_DPP-NEXT: v_mov_b32_e32 v10, s12608; GFX1032_DPP-NEXT: v_mov_b32_e32 v9, s02609; GFX1032_DPP-NEXT: ds_add_rtn_u64 v[9:10], v0, v[9:10]2610; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)2611; GFX1032_DPP-NEXT: buffer_gl0_inv2612; GFX1032_DPP-NEXT: .LBB6_2:2613; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)2614; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s32615; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242616; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v92617; GFX1032_DPP-NEXT: v_mov_b32_e32 v11, v72618; GFX1032_DPP-NEXT: v_mov_b32_e32 v12, v82619; GFX1032_DPP-NEXT: s_mov_b32 null, 02620; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v102621; GFX1032_DPP-NEXT: v_add_co_u32 v9, vcc_lo, s3, v112622; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160002623; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v10, vcc_lo, s4, v12, vcc_lo2624; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)2625; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[9:10], off, s[0:3], 02626; GFX1032_DPP-NEXT: s_endpgm2627;2628; GFX1164_DPP-LABEL: add_i64_varying:2629; GFX1164_DPP: ; %bb.0: ; %entry2630; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v02631; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -12632; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)2633; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]2634; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, 02635; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s[0:1]2636; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 02637; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, 02638; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2639; GFX1164_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:1 row_mask:0xf bank_mask:0xf2640; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:12641; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2642; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc2643; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:12644; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)2645; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, 02646; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2647; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:2 row_mask:0xf bank_mask:0xf2648; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc2649; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:12650; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)2651; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 02652; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2653; GFX1164_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:4 row_mask:0xf bank_mask:0xf2654; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc2655; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v3, v3 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:12656; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)2657; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 02658; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2659; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:8 row_mask:0xf bank_mask:0xf2660; GFX1164_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -12661; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2662; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc2663; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v5, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2664; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)2665; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 02666; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2667; GFX1164_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -12668; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2669; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2670; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v3, vcc2671; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 02672; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 312673; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2674; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s22675; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 312676; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf2677; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)2678; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v2, s2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf2679; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)2680; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v3, vcc2681; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]2682; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2683; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02684; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -12685; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)2686; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf2687; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 152688; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf2689; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 152690; GFX1164_DPP-NEXT: v_readlane_b32 s6, v2, 312691; GFX1164_DPP-NEXT: v_readlane_b32 s7, v1, 312692; GFX1164_DPP-NEXT: v_writelane_b32 v5, s2, 162693; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 632694; GFX1164_DPP-NEXT: v_writelane_b32 v6, s3, 162695; GFX1164_DPP-NEXT: v_readlane_b32 s8, v2, 472696; GFX1164_DPP-NEXT: v_readlane_b32 s9, v1, 472697; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 632698; GFX1164_DPP-NEXT: v_writelane_b32 v5, s6, 322699; GFX1164_DPP-NEXT: v_writelane_b32 v6, s7, 322700; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]2701; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2702; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v02703; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 02704; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -12705; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]2706; GFX1164_DPP-NEXT: v_writelane_b32 v5, s8, 482707; GFX1164_DPP-NEXT: v_writelane_b32 v6, s9, 482708; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]2709; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v72710; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)2711; GFX1164_DPP-NEXT: s_mov_b32 s2, -12712; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr82713; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc2714; GFX1164_DPP-NEXT: s_cbranch_execz .LBB6_22715; GFX1164_DPP-NEXT: ; %bb.1:2716; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s12717; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s02718; GFX1164_DPP-NEXT: ds_add_rtn_u64 v[7:8], v0, v[7:8]2719; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)2720; GFX1164_DPP-NEXT: buffer_gl0_inv2721; GFX1164_DPP-NEXT: .LBB6_2:2722; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]2723; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x242724; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v72725; GFX1164_DPP-NEXT: v_mov_b32_e32 v9, v52726; GFX1164_DPP-NEXT: v_mov_b32_e32 v10, v62727; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v82728; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)2729; GFX1164_DPP-NEXT: v_add_co_u32 v7, vcc, s3, v92730; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160002731; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v8, null, s4, v10, vcc2732; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)2733; GFX1164_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 02734; GFX1164_DPP-NEXT: s_endpgm2735;2736; GFX1132_DPP-LABEL: add_i64_varying:2737; GFX1132_DPP: ; %bb.0: ; %entry2738; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v02739; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -12740; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)2741; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s22742; GFX1132_DPP-NEXT: v_mov_b32_e32 v2, 02743; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s22744; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v7, 02745; GFX1132_DPP-NEXT: v_mov_b32_e32 v6, 02746; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2747; GFX1132_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:1 row_mask:0xf bank_mask:0xf2748; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:12749; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)2750; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc_lo2751; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:12752; GFX1132_DPP-NEXT: v_mov_b32_e32 v2, 02753; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)2754; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:2 row_mask:0xf bank_mask:0xf2755; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo2756; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)2757; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:12758; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 02759; GFX1132_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:4 row_mask:0xf bank_mask:0xf2760; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)2761; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc_lo2762; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc_lo, v3, v3 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:12763; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 02764; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2765; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:8 row_mask:0xf bank_mask:0xf2766; GFX1132_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -12767; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2768; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo2769; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc_lo, v5, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2770; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)2771; GFX1132_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -12772; GFX1132_DPP-NEXT: v_readlane_b32 s3, v2, 152773; GFX1132_DPP-NEXT: v_readlane_b32 s0, v2, 312774; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:1 row_mask:0xf bank_mask:0xf2775; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)2776; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf2777; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo2778; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)2779; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 312780; GFX1132_DPP-NEXT: v_mov_b32_dpp v7, v1 row_shr:1 row_mask:0xf bank_mask:0xf2781; GFX1132_DPP-NEXT: v_readlane_b32 s6, v1, 152782; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s22783; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v8, exec_lo, 02784; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 02785; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -12786; GFX1132_DPP-NEXT: v_writelane_b32 v6, s3, 162787; GFX1132_DPP-NEXT: v_writelane_b32 v7, s6, 162788; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s22789; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v82790; GFX1132_DPP-NEXT: s_mov_b32 s2, -12791; GFX1132_DPP-NEXT: ; implicit-def: $vgpr8_vgpr92792; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo2793; GFX1132_DPP-NEXT: s_cbranch_execz .LBB6_22794; GFX1132_DPP-NEXT: ; %bb.1:2795; GFX1132_DPP-NEXT: v_dual_mov_b32 v9, s1 :: v_dual_mov_b32 v8, s02796; GFX1132_DPP-NEXT: ds_add_rtn_u64 v[8:9], v0, v[8:9]2797; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)2798; GFX1132_DPP-NEXT: buffer_gl0_inv2799; GFX1132_DPP-NEXT: .LBB6_2:2800; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s32801; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x242802; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v82803; GFX1132_DPP-NEXT: v_mov_b32_e32 v10, v62804; GFX1132_DPP-NEXT: v_mov_b32_e32 v11, v72805; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v92806; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)2807; GFX1132_DPP-NEXT: v_add_co_u32 v8, vcc_lo, s3, v102808; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160002809; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v9, null, s4, v11, vcc_lo2810; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)2811; GFX1132_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 02812; GFX1132_DPP-NEXT: s_endpgm2813entry:2814 %lane = call i32 @llvm.amdgcn.workitem.id.x()2815 %zext = zext i32 %lane to i642816 %old = atomicrmw add ptr addrspace(3) @local_var64, i64 %zext acq_rel2817 store i64 %old, ptr addrspace(1) %out2818 ret void2819}2820 2821define amdgpu_kernel void @add_i64_varying_nouse() {2822; GFX7LESS_ITERATIVE-LABEL: add_i64_varying_nouse:2823; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry2824; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2825; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v1, 02826; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02827; GFX7LESS_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop2828; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12829; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s4, s[2:3]2830; GFX7LESS_ITERATIVE-NEXT: s_nop 02831; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s5, v1, s42832; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s42833; GFX7LESS_ITERATIVE-NEXT: s_add_u32 s0, s0, s62834; GFX7LESS_ITERATIVE-NEXT: s_addc_u32 s1, s1, s52835; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s42836; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[4:5]2837; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[4:5], s[2:3], 02838; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[4:5]2839; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB7_12840; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2841; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 02842; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v02843; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02844; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2845; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2846; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB7_42847; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:2848; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, 02849; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s02850; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v1, s12851; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -12852; GFX7LESS_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]2853; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2854; GFX7LESS_ITERATIVE-NEXT: .LBB7_4:2855; GFX7LESS_ITERATIVE-NEXT: s_endpgm2856;2857; GFX8_ITERATIVE-LABEL: add_i64_varying_nouse:2858; GFX8_ITERATIVE: ; %bb.0: ; %entry2859; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2860; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v1, 02861; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02862; GFX8_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop2863; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12864; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s4, s[2:3]2865; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s42866; GFX8_ITERATIVE-NEXT: v_readlane_b32 s5, v1, s42867; GFX8_ITERATIVE-NEXT: s_add_u32 s0, s0, s62868; GFX8_ITERATIVE-NEXT: s_addc_u32 s1, s1, s52869; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s42870; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[4:5]2871; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB7_12872; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2873; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02874; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02875; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02876; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2877; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2878; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB7_42879; GFX8_ITERATIVE-NEXT: ; %bb.3:2880; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s02881; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, 02882; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v1, s12883; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -12884; GFX8_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]2885; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2886; GFX8_ITERATIVE-NEXT: .LBB7_4:2887; GFX8_ITERATIVE-NEXT: s_endpgm2888;2889; GFX9_ITERATIVE-LABEL: add_i64_varying_nouse:2890; GFX9_ITERATIVE: ; %bb.0: ; %entry2891; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2892; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v1, 02893; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02894; GFX9_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop2895; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12896; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s4, s[2:3]2897; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s42898; GFX9_ITERATIVE-NEXT: v_readlane_b32 s5, v1, s42899; GFX9_ITERATIVE-NEXT: s_add_u32 s0, s0, s62900; GFX9_ITERATIVE-NEXT: s_addc_u32 s1, s1, s52901; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s42902; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[4:5]2903; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB7_12904; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2905; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02906; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02907; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02908; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2909; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2910; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB7_42911; GFX9_ITERATIVE-NEXT: ; %bb.3:2912; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s02913; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, 02914; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v1, s12915; GFX9_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]2916; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2917; GFX9_ITERATIVE-NEXT: .LBB7_4:2918; GFX9_ITERATIVE-NEXT: s_endpgm2919;2920; GFX1064_ITERATIVE-LABEL: add_i64_varying_nouse:2921; GFX1064_ITERATIVE: ; %bb.0: ; %entry2922; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v1, 02923; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2924; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02925; GFX1064_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop2926; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12927; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s4, s[2:3]2928; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s5, v0, s42929; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v1, s42930; GFX1064_ITERATIVE-NEXT: s_add_u32 s0, s0, s52931; GFX1064_ITERATIVE-NEXT: s_addc_u32 s1, s1, s62932; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s42933; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[4:5]2934; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB7_12935; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2936; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02937; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02938; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02939; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc2940; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]2941; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB7_42942; GFX1064_ITERATIVE-NEXT: ; %bb.3:2943; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, s02944; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, 02945; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v1, s12946; GFX1064_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]2947; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2948; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv2949; GFX1064_ITERATIVE-NEXT: .LBB7_4:2950; GFX1064_ITERATIVE-NEXT: s_endpgm2951;2952; GFX1032_ITERATIVE-LABEL: add_i64_varying_nouse:2953; GFX1032_ITERATIVE: ; %bb.0: ; %entry2954; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v1, 02955; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo2956; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02957; GFX1032_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop2958; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12959; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s22960; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s4, v0, s32961; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s5, v1, s32962; GFX1032_ITERATIVE-NEXT: s_add_u32 s0, s0, s42963; GFX1032_ITERATIVE-NEXT: s_addc_u32 s1, s1, s52964; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s32965; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s32966; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB7_12967; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd2968; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02969; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02970; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo2971; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s22972; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB7_42973; GFX1032_ITERATIVE-NEXT: ; %bb.3:2974; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, s02975; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, 02976; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v1, s12977; GFX1032_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]2978; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)2979; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv2980; GFX1032_ITERATIVE-NEXT: .LBB7_4:2981; GFX1032_ITERATIVE-NEXT: s_endpgm2982;2983; GFX1164_ITERATIVE-LABEL: add_i64_varying_nouse:2984; GFX1164_ITERATIVE: ; %bb.0: ; %entry2985; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 02986; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v0, 0x3ff, v02987; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec2988; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], 02989; GFX1164_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop2990; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=12991; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s4, s[2:3]2992; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)2993; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s5, v0, s42994; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v1, s42995; GFX1164_ITERATIVE-NEXT: s_add_u32 s0, s0, s52996; GFX1164_ITERATIVE-NEXT: s_addc_u32 s1, s1, s62997; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s42998; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2999; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[4:5]3000; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB7_13001; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd3002; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03003; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec3004; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3005; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03006; GFX1164_ITERATIVE-NEXT: v_cmpx_eq_u32_e32 0, v03007; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]3008; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB7_43009; GFX1164_ITERATIVE-NEXT: ; %bb.3:3010; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v0, s03011; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 03012; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, s13013; GFX1164_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]3014; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3015; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv3016; GFX1164_ITERATIVE-NEXT: .LBB7_4:3017; GFX1164_ITERATIVE-NEXT: s_endpgm3018;3019; GFX1132_ITERATIVE-LABEL: add_i64_varying_nouse:3020; GFX1132_ITERATIVE: ; %bb.0: ; %entry3021; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_and_b32 v0, 0x3ff, v03022; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo3023; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], 03024; GFX1132_ITERATIVE-NEXT: .LBB7_1: ; %ComputeLoop3025; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=13026; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s23027; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)3028; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s4, v0, s33029; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s5, v1, s33030; GFX1132_ITERATIVE-NEXT: s_add_u32 s0, s0, s43031; GFX1132_ITERATIVE-NEXT: s_addc_u32 s1, s1, s53032; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s33033; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3034; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s33035; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB7_13036; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd3037; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03038; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo3039; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)3040; GFX1132_ITERATIVE-NEXT: v_cmpx_eq_u32_e32 0, v03041; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s23042; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB7_43043; GFX1132_ITERATIVE-NEXT: ; %bb.3:3044; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v0, s03045; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v1, s13046; GFX1132_ITERATIVE-NEXT: ds_add_u64 v2, v[0:1]3047; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3048; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv3049; GFX1132_ITERATIVE-NEXT: .LBB7_4:3050; GFX1132_ITERATIVE-NEXT: s_endpgm3051;3052; GFX7LESS_DPP-LABEL: add_i64_varying_nouse:3053; GFX7LESS_DPP: ; %bb.0: ; %entry3054; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 03055; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -13056; GFX7LESS_DPP-NEXT: ds_add_u64 v1, v[0:1]3057; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)3058; GFX7LESS_DPP-NEXT: s_endpgm3059;3060; GFX8_DPP-LABEL: add_i64_varying_nouse:3061; GFX8_DPP: ; %bb.0: ; %entry3062; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 03063; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 03064; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v63065; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -13066; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]3067; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 03068; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]3069; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 03070; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf3071; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v43072; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf3073; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 03074; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc3075; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 03076; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf3077; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v43078; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf3079; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 03080; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc3081; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 03082; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf3083; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v43084; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf3085; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 03086; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc3087; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 03088; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf3089; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v43090; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf3091; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 03092; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc3093; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 03094; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf3095; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v43096; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf3097; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 03098; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc3099; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 03100; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf3101; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v43102; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf3103; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc3104; GFX8_DPP-NEXT: v_readlane_b32 s3, v1, 633105; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 633106; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]3107; GFX8_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]3108; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v63109; GFX8_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc3110; GFX8_DPP-NEXT: s_cbranch_execz .LBB7_23111; GFX8_DPP-NEXT: ; %bb.1:3112; GFX8_DPP-NEXT: v_mov_b32_e32 v7, s13113; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s03114; GFX8_DPP-NEXT: s_mov_b32 m0, -13115; GFX8_DPP-NEXT: ds_add_u64 v5, v[6:7]3116; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)3117; GFX8_DPP-NEXT: .LBB7_2:3118; GFX8_DPP-NEXT: s_endpgm3119;3120; GFX9_DPP-LABEL: add_i64_varying_nouse:3121; GFX9_DPP: ; %bb.0: ; %entry3122; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 03123; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 03124; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v63125; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -13126; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]3127; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 03128; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]3129; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 03130; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf3131; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v43132; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf3133; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 03134; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3135; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 03136; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf3137; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v43138; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf3139; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 03140; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3141; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 03142; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf3143; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v43144; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf3145; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 03146; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3147; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 03148; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf3149; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v43150; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf3151; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 03152; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3153; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 03154; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf3155; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v43156; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf3157; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 03158; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3159; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 03160; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf3161; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v43162; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf3163; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc3164; GFX9_DPP-NEXT: v_readlane_b32 s3, v1, 633165; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 633166; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]3167; GFX9_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]3168; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v63169; GFX9_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc3170; GFX9_DPP-NEXT: s_cbranch_execz .LBB7_23171; GFX9_DPP-NEXT: ; %bb.1:3172; GFX9_DPP-NEXT: v_mov_b32_e32 v7, s13173; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s03174; GFX9_DPP-NEXT: ds_add_u64 v5, v[6:7]3175; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)3176; GFX9_DPP-NEXT: .LBB7_2:3177; GFX9_DPP-NEXT: s_endpgm3178;3179; GFX1064_DPP-LABEL: add_i64_varying_nouse:3180; GFX1064_DPP: ; %bb.0: ; %entry3181; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -13182; GFX1064_DPP-NEXT: v_mov_b32_e32 v1, 03183; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]3184; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v3, 0, 0, s[0:1]3185; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 03186; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 03187; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 03188; GFX1064_DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf3189; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:1 row_mask:0xf bank_mask:0xf3190; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v2, v13191; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v3, v4, vcc3192; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 03193; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3194; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 03195; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_xmask:2 row_mask:0xf bank_mask:0xf3196; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v63197; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc3198; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 03199; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3200; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 03201; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v2 row_xmask:4 row_mask:0xf bank_mask:0xf3202; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v43203; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v3, vcc3204; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3205; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_xmask:8 row_mask:0xf bank_mask:0xf3206; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v63207; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc3208; GFX1064_DPP-NEXT: v_permlanex16_b32 v3, v1, 0, 03209; GFX1064_DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 03210; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v33211; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v4, vcc3212; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]3213; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03214; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -13215; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 03216; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 03217; GFX1064_DPP-NEXT: v_readlane_b32 s4, v1, 323218; GFX1064_DPP-NEXT: v_readlane_b32 s5, v2, 323219; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]3220; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v03221; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 03222; GFX1064_DPP-NEXT: s_add_u32 s0, s3, s43223; GFX1064_DPP-NEXT: s_addc_u32 s1, s2, s53224; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v73225; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc3226; GFX1064_DPP-NEXT: s_cbranch_execz .LBB7_23227; GFX1064_DPP-NEXT: ; %bb.1:3228; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s13229; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s03230; GFX1064_DPP-NEXT: ds_add_u64 v0, v[7:8]3231; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)3232; GFX1064_DPP-NEXT: buffer_gl0_inv3233; GFX1064_DPP-NEXT: .LBB7_2:3234; GFX1064_DPP-NEXT: s_endpgm3235;3236; GFX1032_DPP-LABEL: add_i64_varying_nouse:3237; GFX1032_DPP: ; %bb.0: ; %entry3238; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -13239; GFX1032_DPP-NEXT: v_mov_b32_e32 v1, 03240; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s03241; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v3, 0, 0, s03242; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 03243; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 03244; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 03245; GFX1032_DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf3246; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:1 row_mask:0xf bank_mask:0xf3247; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v2, v13248; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v3, v4, vcc_lo3249; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 03250; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3251; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 03252; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_xmask:2 row_mask:0xf bank_mask:0xf3253; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v63254; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo3255; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 03256; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3257; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 03258; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v2 row_xmask:4 row_mask:0xf bank_mask:0xf3259; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v43260; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v3, vcc_lo3261; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3262; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_xmask:8 row_mask:0xf bank_mask:0xf3263; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v63264; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo3265; GFX1032_DPP-NEXT: v_permlanex16_b32 v3, v1, 0, 03266; GFX1032_DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 03267; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v33268; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v4, vcc_lo3269; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s03270; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v9, exec_lo, 03271; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, v13272; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 03273; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v23274; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v93275; GFX1032_DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo3276; GFX1032_DPP-NEXT: s_cbranch_execz .LBB7_23277; GFX1032_DPP-NEXT: ; %bb.1:3278; GFX1032_DPP-NEXT: ds_add_u64 v0, v[7:8]3279; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)3280; GFX1032_DPP-NEXT: buffer_gl0_inv3281; GFX1032_DPP-NEXT: .LBB7_2:3282; GFX1032_DPP-NEXT: s_endpgm3283;3284; GFX1164_DPP-LABEL: add_i64_varying_nouse:3285; GFX1164_DPP: ; %bb.0: ; %entry3286; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v03287; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -13288; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)3289; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]3290; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, 03291; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s[0:1]3292; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 03293; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3294; GFX1164_DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:1 row_mask:0xf bank_mask:0xf3295; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:13296; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)3297; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc3298; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:13299; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)3300; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, 03301; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3302; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3303; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc3304; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:13305; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)3306; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 03307; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3308; GFX1164_DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3309; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc3310; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v3, v3 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:13311; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)3312; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3313; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3314; GFX1164_DPP-NEXT: v_permlanex16_b32 v3, v2, 0, 03315; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3316; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc3317; GFX1164_DPP-NEXT: v_add_co_u32 v2, vcc, v2, v33318; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)3319; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3320; GFX1164_DPP-NEXT: v_permlanex16_b32 v4, v1, 0, 03321; GFX1164_DPP-NEXT: v_permlane64_b32 v3, v23322; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3323; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc3324; GFX1164_DPP-NEXT: v_permlane64_b32 v4, v13325; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]3326; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3327; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03328; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -13329; GFX1164_DPP-NEXT: v_add_co_u32 v2, vcc, v2, v33330; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0) depctr_va_vcc(0)3331; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v3, null, v1, v4, vcc3332; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]3333; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, v23334; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v03335; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 03336; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, v33337; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], exec3338; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)3339; GFX1164_DPP-NEXT: v_cmpx_eq_u32_e32 0, v73340; GFX1164_DPP-NEXT: s_cbranch_execz .LBB7_23341; GFX1164_DPP-NEXT: ; %bb.1:3342; GFX1164_DPP-NEXT: ds_add_u64 v0, v[5:6]3343; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)3344; GFX1164_DPP-NEXT: buffer_gl0_inv3345; GFX1164_DPP-NEXT: .LBB7_2:3346; GFX1164_DPP-NEXT: s_endpgm3347;3348; GFX1132_DPP-LABEL: add_i64_varying_nouse:3349; GFX1132_DPP: ; %bb.0: ; %entry3350; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v03351; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -13352; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)3353; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s03354; GFX1132_DPP-NEXT: v_mov_b32_e32 v2, 03355; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s03356; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 03357; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)3358; GFX1132_DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:1 row_mask:0xf bank_mask:0xf3359; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:13360; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)3361; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc_lo3362; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:13363; GFX1132_DPP-NEXT: v_mov_b32_e32 v2, 03364; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3365; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3366; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo3367; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)3368; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:13369; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 03370; GFX1132_DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3371; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)3372; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc_lo3373; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc_lo, v3, v3 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:13374; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3375; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3376; GFX1132_DPP-NEXT: v_permlanex16_b32 v3, v2, 0, 03377; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)3378; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo3379; GFX1132_DPP-NEXT: v_add_co_u32 v2, vcc_lo, v2, v33380; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3381; GFX1132_DPP-NEXT: v_permlanex16_b32 v4, v1, 0, 03382; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v3, null, v1, v4, vcc_lo3383; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s03384; GFX1132_DPP-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v5, v23385; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 03386; GFX1132_DPP-NEXT: v_mov_b32_e32 v6, v33387; GFX1132_DPP-NEXT: s_mov_b32 s0, exec_lo3388; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)3389; GFX1132_DPP-NEXT: v_cmpx_eq_u32_e32 0, v73390; GFX1132_DPP-NEXT: s_cbranch_execz .LBB7_23391; GFX1132_DPP-NEXT: ; %bb.1:3392; GFX1132_DPP-NEXT: ds_add_u64 v0, v[5:6]3393; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)3394; GFX1132_DPP-NEXT: buffer_gl0_inv3395; GFX1132_DPP-NEXT: .LBB7_2:3396; GFX1132_DPP-NEXT: s_endpgm3397entry:3398 %lane = call i32 @llvm.amdgcn.workitem.id.x()3399 %zext = zext i32 %lane to i643400 %old = atomicrmw add ptr addrspace(3) @local_var64, i64 %zext acq_rel3401 ret void3402}3403 3404define amdgpu_kernel void @sub_i32_constant(ptr addrspace(1) %out) {3405; GFX7LESS-LABEL: sub_i32_constant:3406; GFX7LESS: ; %bb.0: ; %entry3407; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec3408; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 03409; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v03410; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03411; GFX7LESS-NEXT: ; implicit-def: $vgpr13412; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc3413; GFX7LESS-NEXT: s_cbranch_execz .LBB8_23414; GFX7LESS-NEXT: ; %bb.1:3415; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3416; GFX7LESS-NEXT: s_mul_i32 s2, s2, 53417; GFX7LESS-NEXT: v_mov_b32_e32 v1, 03418; GFX7LESS-NEXT: v_mov_b32_e32 v2, s23419; GFX7LESS-NEXT: s_mov_b32 m0, -13420; GFX7LESS-NEXT: ds_sub_rtn_u32 v1, v1, v23421; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3422; GFX7LESS-NEXT: .LBB8_2:3423; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]3424; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x93425; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0003426; GFX7LESS-NEXT: s_mov_b32 s2, -13427; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v13428; GFX7LESS-NEXT: v_mul_u32_u24_e32 v0, 5, v03429; GFX7LESS-NEXT: v_sub_i32_e32 v0, vcc, s4, v03430; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3431; GFX7LESS-NEXT: buffer_store_dword v0, off, s[0:3], 03432; GFX7LESS-NEXT: s_endpgm3433;3434; GFX8-LABEL: sub_i32_constant:3435; GFX8: ; %bb.0: ; %entry3436; GFX8-NEXT: s_mov_b64 s[2:3], exec3437; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03438; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03439; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03440; GFX8-NEXT: ; implicit-def: $vgpr13441; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc3442; GFX8-NEXT: s_cbranch_execz .LBB8_23443; GFX8-NEXT: ; %bb.1:3444; GFX8-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3445; GFX8-NEXT: s_mul_i32 s2, s2, 53446; GFX8-NEXT: v_mov_b32_e32 v1, 03447; GFX8-NEXT: v_mov_b32_e32 v2, s23448; GFX8-NEXT: s_mov_b32 m0, -13449; GFX8-NEXT: ds_sub_rtn_u32 v1, v1, v23450; GFX8-NEXT: s_waitcnt lgkmcnt(0)3451; GFX8-NEXT: .LBB8_2:3452; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]3453; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243454; GFX8-NEXT: v_readfirstlane_b32 s4, v13455; GFX8-NEXT: v_mul_u32_u24_e32 v0, 5, v03456; GFX8-NEXT: s_mov_b32 s3, 0xf0003457; GFX8-NEXT: s_mov_b32 s2, -13458; GFX8-NEXT: v_sub_u32_e32 v0, vcc, s4, v03459; GFX8-NEXT: s_waitcnt lgkmcnt(0)3460; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], 03461; GFX8-NEXT: s_endpgm3462;3463; GFX9-LABEL: sub_i32_constant:3464; GFX9: ; %bb.0: ; %entry3465; GFX9-NEXT: s_mov_b64 s[2:3], exec3466; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03467; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03468; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03469; GFX9-NEXT: ; implicit-def: $vgpr13470; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc3471; GFX9-NEXT: s_cbranch_execz .LBB8_23472; GFX9-NEXT: ; %bb.1:3473; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3474; GFX9-NEXT: s_mul_i32 s2, s2, 53475; GFX9-NEXT: v_mov_b32_e32 v1, 03476; GFX9-NEXT: v_mov_b32_e32 v2, s23477; GFX9-NEXT: ds_sub_rtn_u32 v1, v1, v23478; GFX9-NEXT: s_waitcnt lgkmcnt(0)3479; GFX9-NEXT: .LBB8_2:3480; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]3481; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243482; GFX9-NEXT: v_readfirstlane_b32 s4, v13483; GFX9-NEXT: v_mul_u32_u24_e32 v0, 5, v03484; GFX9-NEXT: s_mov_b32 s3, 0xf0003485; GFX9-NEXT: s_mov_b32 s2, -13486; GFX9-NEXT: v_sub_u32_e32 v0, s4, v03487; GFX9-NEXT: s_waitcnt lgkmcnt(0)3488; GFX9-NEXT: buffer_store_dword v0, off, s[0:3], 03489; GFX9-NEXT: s_endpgm3490;3491; GFX1064-LABEL: sub_i32_constant:3492; GFX1064: ; %bb.0: ; %entry3493; GFX1064-NEXT: s_mov_b64 s[2:3], exec3494; GFX1064-NEXT: ; implicit-def: $vgpr13495; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03496; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03497; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03498; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc3499; GFX1064-NEXT: s_cbranch_execz .LBB8_23500; GFX1064-NEXT: ; %bb.1:3501; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3502; GFX1064-NEXT: v_mov_b32_e32 v1, 03503; GFX1064-NEXT: s_mul_i32 s2, s2, 53504; GFX1064-NEXT: v_mov_b32_e32 v2, s23505; GFX1064-NEXT: ds_sub_rtn_u32 v1, v1, v23506; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3507; GFX1064-NEXT: buffer_gl0_inv3508; GFX1064-NEXT: .LBB8_2:3509; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)3510; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]3511; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243512; GFX1064-NEXT: v_readfirstlane_b32 s2, v13513; GFX1064-NEXT: v_mul_u32_u24_e32 v0, 5, v03514; GFX1064-NEXT: s_mov_b32 s3, 0x310160003515; GFX1064-NEXT: v_sub_nc_u32_e32 v0, s2, v03516; GFX1064-NEXT: s_mov_b32 s2, -13517; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3518; GFX1064-NEXT: buffer_store_dword v0, off, s[0:3], 03519; GFX1064-NEXT: s_endpgm3520;3521; GFX1032-LABEL: sub_i32_constant:3522; GFX1032: ; %bb.0: ; %entry3523; GFX1032-NEXT: s_mov_b32 s1, exec_lo3524; GFX1032-NEXT: ; implicit-def: $vgpr13525; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s1, 03526; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03527; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo3528; GFX1032-NEXT: s_cbranch_execz .LBB8_23529; GFX1032-NEXT: ; %bb.1:3530; GFX1032-NEXT: s_bcnt1_i32_b32 s1, s13531; GFX1032-NEXT: v_mov_b32_e32 v1, 03532; GFX1032-NEXT: s_mul_i32 s1, s1, 53533; GFX1032-NEXT: v_mov_b32_e32 v2, s13534; GFX1032-NEXT: ds_sub_rtn_u32 v1, v1, v23535; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3536; GFX1032-NEXT: buffer_gl0_inv3537; GFX1032-NEXT: .LBB8_2:3538; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)3539; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s03540; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243541; GFX1032-NEXT: v_readfirstlane_b32 s2, v13542; GFX1032-NEXT: v_mul_u32_u24_e32 v0, 5, v03543; GFX1032-NEXT: s_mov_b32 s3, 0x310160003544; GFX1032-NEXT: v_sub_nc_u32_e32 v0, s2, v03545; GFX1032-NEXT: s_mov_b32 s2, -13546; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3547; GFX1032-NEXT: buffer_store_dword v0, off, s[0:3], 03548; GFX1032-NEXT: s_endpgm3549;3550; GFX1164-LABEL: sub_i32_constant:3551; GFX1164: ; %bb.0: ; %entry3552; GFX1164-NEXT: s_mov_b64 s[2:3], exec3553; GFX1164-NEXT: s_mov_b64 s[0:1], exec3554; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03555; GFX1164-NEXT: ; implicit-def: $vgpr13556; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3557; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03558; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v03559; GFX1164-NEXT: s_cbranch_execz .LBB8_23560; GFX1164-NEXT: ; %bb.1:3561; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3562; GFX1164-NEXT: v_mov_b32_e32 v1, 03563; GFX1164-NEXT: s_mul_i32 s2, s2, 53564; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3565; GFX1164-NEXT: v_mov_b32_e32 v2, s23566; GFX1164-NEXT: ds_sub_rtn_u32 v1, v1, v23567; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3568; GFX1164-NEXT: buffer_gl0_inv3569; GFX1164-NEXT: .LBB8_2:3570; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]3571; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x243572; GFX1164-NEXT: v_readfirstlane_b32 s2, v13573; GFX1164-NEXT: v_mul_u32_u24_e32 v0, 5, v03574; GFX1164-NEXT: s_mov_b32 s3, 0x310160003575; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)3576; GFX1164-NEXT: v_sub_nc_u32_e32 v0, s2, v03577; GFX1164-NEXT: s_mov_b32 s2, -13578; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3579; GFX1164-NEXT: buffer_store_b32 v0, off, s[0:3], 03580; GFX1164-NEXT: s_endpgm3581;3582; GFX1132-LABEL: sub_i32_constant:3583; GFX1132: ; %bb.0: ; %entry3584; GFX1132-NEXT: s_mov_b32 s1, exec_lo3585; GFX1132-NEXT: s_mov_b32 s0, exec_lo3586; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s1, 03587; GFX1132-NEXT: ; implicit-def: $vgpr13588; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)3589; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v03590; GFX1132-NEXT: s_cbranch_execz .LBB8_23591; GFX1132-NEXT: ; %bb.1:3592; GFX1132-NEXT: s_bcnt1_i32_b32 s1, s13593; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3594; GFX1132-NEXT: s_mul_i32 s1, s1, 53595; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s13596; GFX1132-NEXT: ds_sub_rtn_u32 v1, v1, v23597; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3598; GFX1132-NEXT: buffer_gl0_inv3599; GFX1132-NEXT: .LBB8_2:3600; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s03601; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x243602; GFX1132-NEXT: v_readfirstlane_b32 s2, v13603; GFX1132-NEXT: v_mul_u32_u24_e32 v0, 5, v03604; GFX1132-NEXT: s_mov_b32 s3, 0x310160003605; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)3606; GFX1132-NEXT: v_sub_nc_u32_e32 v0, s2, v03607; GFX1132-NEXT: s_mov_b32 s2, -13608; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3609; GFX1132-NEXT: buffer_store_b32 v0, off, s[0:3], 03610; GFX1132-NEXT: s_endpgm3611entry:3612 %old = atomicrmw sub ptr addrspace(3) @local_var32, i32 5 acq_rel3613 store i32 %old, ptr addrspace(1) %out3614 ret void3615}3616 3617define amdgpu_kernel void @sub_i32_uniform(ptr addrspace(1) %out, i32 %subitive) {3618; GFX7LESS-LABEL: sub_i32_uniform:3619; GFX7LESS: ; %bb.0: ; %entry3620; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec3621; GFX7LESS-NEXT: s_load_dword s6, s[4:5], 0xb3622; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 03623; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v03624; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03625; GFX7LESS-NEXT: ; implicit-def: $vgpr13626; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc3627; GFX7LESS-NEXT: s_cbranch_execz .LBB9_23628; GFX7LESS-NEXT: ; %bb.1:3629; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3630; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3631; GFX7LESS-NEXT: s_mul_i32 s2, s6, s23632; GFX7LESS-NEXT: v_mov_b32_e32 v1, 03633; GFX7LESS-NEXT: v_mov_b32_e32 v2, s23634; GFX7LESS-NEXT: s_mov_b32 m0, -13635; GFX7LESS-NEXT: ds_sub_rtn_u32 v1, v1, v23636; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3637; GFX7LESS-NEXT: .LBB9_2:3638; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]3639; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x93640; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0003641; GFX7LESS-NEXT: s_mov_b32 s2, -13642; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v13643; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3644; GFX7LESS-NEXT: v_mul_lo_u32 v0, s6, v03645; GFX7LESS-NEXT: v_sub_i32_e32 v0, vcc, s4, v03646; GFX7LESS-NEXT: buffer_store_dword v0, off, s[0:3], 03647; GFX7LESS-NEXT: s_endpgm3648;3649; GFX8-LABEL: sub_i32_uniform:3650; GFX8: ; %bb.0: ; %entry3651; GFX8-NEXT: s_load_dword s6, s[4:5], 0x2c3652; GFX8-NEXT: s_mov_b64 s[2:3], exec3653; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03654; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03655; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03656; GFX8-NEXT: ; implicit-def: $vgpr13657; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc3658; GFX8-NEXT: s_cbranch_execz .LBB9_23659; GFX8-NEXT: ; %bb.1:3660; GFX8-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3661; GFX8-NEXT: s_waitcnt lgkmcnt(0)3662; GFX8-NEXT: s_mul_i32 s2, s6, s23663; GFX8-NEXT: v_mov_b32_e32 v1, 03664; GFX8-NEXT: v_mov_b32_e32 v2, s23665; GFX8-NEXT: s_mov_b32 m0, -13666; GFX8-NEXT: ds_sub_rtn_u32 v1, v1, v23667; GFX8-NEXT: s_waitcnt lgkmcnt(0)3668; GFX8-NEXT: .LBB9_2:3669; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]3670; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243671; GFX8-NEXT: s_waitcnt lgkmcnt(0)3672; GFX8-NEXT: v_mul_lo_u32 v0, s6, v03673; GFX8-NEXT: v_readfirstlane_b32 s4, v13674; GFX8-NEXT: s_mov_b32 s3, 0xf0003675; GFX8-NEXT: s_mov_b32 s2, -13676; GFX8-NEXT: v_sub_u32_e32 v0, vcc, s4, v03677; GFX8-NEXT: buffer_store_dword v0, off, s[0:3], 03678; GFX8-NEXT: s_endpgm3679;3680; GFX9-LABEL: sub_i32_uniform:3681; GFX9: ; %bb.0: ; %entry3682; GFX9-NEXT: s_load_dword s6, s[4:5], 0x2c3683; GFX9-NEXT: s_mov_b64 s[2:3], exec3684; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03685; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03686; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03687; GFX9-NEXT: ; implicit-def: $vgpr13688; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc3689; GFX9-NEXT: s_cbranch_execz .LBB9_23690; GFX9-NEXT: ; %bb.1:3691; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3692; GFX9-NEXT: s_waitcnt lgkmcnt(0)3693; GFX9-NEXT: s_mul_i32 s2, s6, s23694; GFX9-NEXT: v_mov_b32_e32 v1, 03695; GFX9-NEXT: v_mov_b32_e32 v2, s23696; GFX9-NEXT: ds_sub_rtn_u32 v1, v1, v23697; GFX9-NEXT: s_waitcnt lgkmcnt(0)3698; GFX9-NEXT: .LBB9_2:3699; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]3700; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243701; GFX9-NEXT: s_waitcnt lgkmcnt(0)3702; GFX9-NEXT: v_mul_lo_u32 v0, s6, v03703; GFX9-NEXT: v_readfirstlane_b32 s4, v13704; GFX9-NEXT: s_mov_b32 s3, 0xf0003705; GFX9-NEXT: s_mov_b32 s2, -13706; GFX9-NEXT: v_sub_u32_e32 v0, s4, v03707; GFX9-NEXT: buffer_store_dword v0, off, s[0:3], 03708; GFX9-NEXT: s_endpgm3709;3710; GFX1064-LABEL: sub_i32_uniform:3711; GFX1064: ; %bb.0: ; %entry3712; GFX1064-NEXT: s_load_dword s6, s[4:5], 0x2c3713; GFX1064-NEXT: s_mov_b64 s[2:3], exec3714; GFX1064-NEXT: ; implicit-def: $vgpr13715; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03716; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03717; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03718; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc3719; GFX1064-NEXT: s_cbranch_execz .LBB9_23720; GFX1064-NEXT: ; %bb.1:3721; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3722; GFX1064-NEXT: v_mov_b32_e32 v1, 03723; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3724; GFX1064-NEXT: s_mul_i32 s2, s6, s23725; GFX1064-NEXT: v_mov_b32_e32 v2, s23726; GFX1064-NEXT: ds_sub_rtn_u32 v1, v1, v23727; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3728; GFX1064-NEXT: buffer_gl0_inv3729; GFX1064-NEXT: .LBB9_2:3730; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)3731; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]3732; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243733; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3734; GFX1064-NEXT: v_mul_lo_u32 v0, s6, v03735; GFX1064-NEXT: v_readfirstlane_b32 s2, v13736; GFX1064-NEXT: s_mov_b32 s3, 0x310160003737; GFX1064-NEXT: v_sub_nc_u32_e32 v0, s2, v03738; GFX1064-NEXT: s_mov_b32 s2, -13739; GFX1064-NEXT: buffer_store_dword v0, off, s[0:3], 03740; GFX1064-NEXT: s_endpgm3741;3742; GFX1032-LABEL: sub_i32_uniform:3743; GFX1032: ; %bb.0: ; %entry3744; GFX1032-NEXT: s_load_dword s0, s[4:5], 0x2c3745; GFX1032-NEXT: s_mov_b32 s2, exec_lo3746; GFX1032-NEXT: ; implicit-def: $vgpr13747; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03748; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03749; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo3750; GFX1032-NEXT: s_cbranch_execz .LBB9_23751; GFX1032-NEXT: ; %bb.1:3752; GFX1032-NEXT: s_bcnt1_i32_b32 s2, s23753; GFX1032-NEXT: v_mov_b32_e32 v1, 03754; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3755; GFX1032-NEXT: s_mul_i32 s2, s0, s23756; GFX1032-NEXT: v_mov_b32_e32 v2, s23757; GFX1032-NEXT: ds_sub_rtn_u32 v1, v1, v23758; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3759; GFX1032-NEXT: buffer_gl0_inv3760; GFX1032-NEXT: .LBB9_2:3761; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)3762; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s13763; GFX1032-NEXT: s_load_dwordx2 s[8:9], s[4:5], 0x243764; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3765; GFX1032-NEXT: v_mul_lo_u32 v0, s0, v03766; GFX1032-NEXT: v_readfirstlane_b32 s0, v13767; GFX1032-NEXT: s_mov_b32 s11, 0x310160003768; GFX1032-NEXT: s_mov_b32 s10, -13769; GFX1032-NEXT: v_sub_nc_u32_e32 v0, s0, v03770; GFX1032-NEXT: buffer_store_dword v0, off, s[8:11], 03771; GFX1032-NEXT: s_endpgm3772;3773; GFX1164-LABEL: sub_i32_uniform:3774; GFX1164: ; %bb.0: ; %entry3775; GFX1164-NEXT: s_load_b32 s6, s[4:5], 0x2c3776; GFX1164-NEXT: s_mov_b64 s[2:3], exec3777; GFX1164-NEXT: s_mov_b64 s[0:1], exec3778; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03779; GFX1164-NEXT: ; implicit-def: $vgpr13780; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3781; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v03782; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v03783; GFX1164-NEXT: s_cbranch_execz .LBB9_23784; GFX1164-NEXT: ; %bb.1:3785; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]3786; GFX1164-NEXT: v_mov_b32_e32 v1, 03787; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3788; GFX1164-NEXT: s_mul_i32 s2, s6, s23789; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3790; GFX1164-NEXT: v_mov_b32_e32 v2, s23791; GFX1164-NEXT: ds_sub_rtn_u32 v1, v1, v23792; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3793; GFX1164-NEXT: buffer_gl0_inv3794; GFX1164-NEXT: .LBB9_2:3795; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]3796; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x243797; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3798; GFX1164-NEXT: v_mul_lo_u32 v0, s6, v03799; GFX1164-NEXT: v_readfirstlane_b32 s2, v13800; GFX1164-NEXT: s_mov_b32 s3, 0x310160003801; GFX1164-NEXT: v_sub_nc_u32_e32 v0, s2, v03802; GFX1164-NEXT: s_mov_b32 s2, -13803; GFX1164-NEXT: buffer_store_b32 v0, off, s[0:3], 03804; GFX1164-NEXT: s_endpgm3805;3806; GFX1132-LABEL: sub_i32_uniform:3807; GFX1132: ; %bb.0: ; %entry3808; GFX1132-NEXT: s_load_b32 s0, s[4:5], 0x2c3809; GFX1132-NEXT: s_mov_b32 s2, exec_lo3810; GFX1132-NEXT: s_mov_b32 s1, exec_lo3811; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 03812; GFX1132-NEXT: ; implicit-def: $vgpr13813; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)3814; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v03815; GFX1132-NEXT: s_cbranch_execz .LBB9_23816; GFX1132-NEXT: ; %bb.1:3817; GFX1132-NEXT: s_bcnt1_i32_b32 s2, s23818; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3819; GFX1132-NEXT: s_mul_i32 s2, s0, s23820; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3821; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s23822; GFX1132-NEXT: ds_sub_rtn_u32 v1, v1, v23823; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3824; GFX1132-NEXT: buffer_gl0_inv3825; GFX1132-NEXT: .LBB9_2:3826; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s13827; GFX1132-NEXT: s_load_b64 s[4:5], s[4:5], 0x243828; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3829; GFX1132-NEXT: v_mul_lo_u32 v0, s0, v03830; GFX1132-NEXT: v_readfirstlane_b32 s0, v13831; GFX1132-NEXT: s_mov_b32 s7, 0x310160003832; GFX1132-NEXT: s_mov_b32 s6, -13833; GFX1132-NEXT: v_sub_nc_u32_e32 v0, s0, v03834; GFX1132-NEXT: buffer_store_b32 v0, off, s[4:7], 03835; GFX1132-NEXT: s_endpgm3836entry:3837 %old = atomicrmw sub ptr addrspace(3) @local_var32, i32 %subitive acq_rel3838 store i32 %old, ptr addrspace(1) %out3839 ret void3840}3841 3842define amdgpu_kernel void @sub_i32_varying(ptr addrspace(1) %out) {3843; GFX7LESS_ITERATIVE-LABEL: sub_i32_varying:3844; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry3845; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec3846; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 03847; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr13848; GFX7LESS_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop3849; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=13850; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]3851; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s33852; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s33853; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m03854; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s33855; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]3856; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 03857; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]3858; GFX7LESS_ITERATIVE-NEXT: s_add_i32 s2, s2, s83859; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB10_13860; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd3861; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 03862; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v03863; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03864; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr03865; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc3866; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3867; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB10_43868; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:3869; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 03870; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s23871; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -13872; GFX7LESS_ITERATIVE-NEXT: ds_sub_rtn_u32 v0, v0, v23873; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3874; GFX7LESS_ITERATIVE-NEXT: .LBB10_4:3875; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]3876; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x93877; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0003878; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -13879; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v03880; GFX7LESS_ITERATIVE-NEXT: v_sub_i32_e32 v0, vcc, s4, v13881; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3882; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 03883; GFX7LESS_ITERATIVE-NEXT: s_endpgm3884;3885; GFX8_ITERATIVE-LABEL: sub_i32_varying:3886; GFX8_ITERATIVE: ; %bb.0: ; %entry3887; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec3888; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 03889; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr13890; GFX8_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop3891; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=13892; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]3893; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s33894; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s33895; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m03896; GFX8_ITERATIVE-NEXT: s_add_i32 s2, s2, s63897; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s33898; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]3899; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB10_13900; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd3901; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03902; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03903; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03904; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr03905; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc3906; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3907; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB10_43908; GFX8_ITERATIVE-NEXT: ; %bb.3:3909; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 03910; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s23911; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -13912; GFX8_ITERATIVE-NEXT: ds_sub_rtn_u32 v0, v0, v23913; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3914; GFX8_ITERATIVE-NEXT: .LBB10_4:3915; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]3916; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243917; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v03918; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0003919; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -13920; GFX8_ITERATIVE-NEXT: v_sub_u32_e32 v0, vcc, s4, v13921; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3922; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 03923; GFX8_ITERATIVE-NEXT: s_endpgm3924;3925; GFX9_ITERATIVE-LABEL: sub_i32_varying:3926; GFX9_ITERATIVE: ; %bb.0: ; %entry3927; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec3928; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 03929; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr13930; GFX9_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop3931; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=13932; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]3933; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s33934; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s33935; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m03936; GFX9_ITERATIVE-NEXT: s_add_i32 s2, s2, s63937; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s33938; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]3939; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB10_13940; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd3941; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03942; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03943; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03944; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr03945; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc3946; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3947; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB10_43948; GFX9_ITERATIVE-NEXT: ; %bb.3:3949; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 03950; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s23951; GFX9_ITERATIVE-NEXT: ds_sub_rtn_u32 v0, v0, v23952; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3953; GFX9_ITERATIVE-NEXT: .LBB10_4:3954; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]3955; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243956; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v03957; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0003958; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -13959; GFX9_ITERATIVE-NEXT: v_sub_u32_e32 v0, s4, v13960; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3961; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 03962; GFX9_ITERATIVE-NEXT: s_endpgm3963;3964; GFX1064_ITERATIVE-LABEL: sub_i32_varying:3965; GFX1064_ITERATIVE: ; %bb.0: ; %entry3966; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec3967; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 03968; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr13969; GFX1064_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop3970; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=13971; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]3972; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s33973; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s33974; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s33975; GFX1064_ITERATIVE-NEXT: s_add_i32 s2, s2, s83976; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]3977; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB10_13978; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd3979; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03980; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03981; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03982; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr03983; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc3984; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3985; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB10_43986; GFX1064_ITERATIVE-NEXT: ; %bb.3:3987; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 03988; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s23989; GFX1064_ITERATIVE-NEXT: ds_sub_rtn_u32 v0, v0, v23990; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)3991; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv3992; GFX1064_ITERATIVE-NEXT: .LBB10_4:3993; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)3994; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]3995; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243996; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v03997; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160003998; GFX1064_ITERATIVE-NEXT: v_sub_nc_u32_e32 v0, s2, v13999; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -14000; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4001; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 04002; GFX1064_ITERATIVE-NEXT: s_endpgm4003;4004; GFX1032_ITERATIVE-LABEL: sub_i32_varying:4005; GFX1032_ITERATIVE: ; %bb.0: ; %entry4006; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo4007; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 04008; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr14009; GFX1032_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop4010; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14011; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s14012; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s24013; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s24014; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s24015; GFX1032_ITERATIVE-NEXT: s_add_i32 s0, s0, s34016; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s24017; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB10_14018; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4019; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04020; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04021; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr04022; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo4023; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s14024; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB10_44025; GFX1032_ITERATIVE-NEXT: ; %bb.3:4026; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04027; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s04028; GFX1032_ITERATIVE-NEXT: ds_sub_rtn_u32 v0, v0, v24029; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4030; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv4031; GFX1032_ITERATIVE-NEXT: .LBB10_4:4032; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)4033; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s14034; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244035; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v04036; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160004037; GFX1032_ITERATIVE-NEXT: v_sub_nc_u32_e32 v0, s2, v14038; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -14039; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4040; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 04041; GFX1032_ITERATIVE-NEXT: s_endpgm4042;4043; GFX1164_ITERATIVE-LABEL: sub_i32_varying:4044; GFX1164_ITERATIVE: ; %bb.0: ; %entry4045; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v04046; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4047; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 04048; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr04049; GFX1164_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop4050; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14051; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]4052; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4053; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s34054; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s34055; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s34056; GFX1164_ITERATIVE-NEXT: s_add_i32 s2, s2, s84057; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]4058; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB10_14059; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4060; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 04061; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4062; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v14063; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v14064; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr14065; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc4066; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4067; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4068; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB10_44069; GFX1164_ITERATIVE-NEXT: ; %bb.3:4070; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 04071; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s24072; GFX1164_ITERATIVE-NEXT: ds_sub_rtn_u32 v1, v1, v24073; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4074; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv4075; GFX1164_ITERATIVE-NEXT: .LBB10_4:4076; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]4077; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x244078; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v14079; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160004080; GFX1164_ITERATIVE-NEXT: v_sub_nc_u32_e32 v0, s2, v04081; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -14082; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4083; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 04084; GFX1164_ITERATIVE-NEXT: s_endpgm4085;4086; GFX1132_ITERATIVE-LABEL: sub_i32_varying:4087; GFX1132_ITERATIVE: ; %bb.0: ; %entry4088; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v04089; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo4090; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 04091; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr04092; GFX1132_ITERATIVE-NEXT: .LBB10_1: ; %ComputeLoop4093; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14094; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s14095; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4096; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s24097; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s24098; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s24099; GFX1132_ITERATIVE-NEXT: s_add_i32 s0, s0, s34100; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s24101; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB10_14102; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4103; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 04104; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4105; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v14106; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr14107; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo4108; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s14109; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB10_44110; GFX1132_ITERATIVE-NEXT: ; %bb.3:4111; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s04112; GFX1132_ITERATIVE-NEXT: ds_sub_rtn_u32 v1, v1, v24113; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4114; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv4115; GFX1132_ITERATIVE-NEXT: .LBB10_4:4116; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s14117; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x244118; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v14119; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160004120; GFX1132_ITERATIVE-NEXT: v_sub_nc_u32_e32 v0, s2, v04121; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -14122; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4123; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 04124; GFX1132_ITERATIVE-NEXT: s_endpgm4125;4126; GFX7LESS_DPP-LABEL: sub_i32_varying:4127; GFX7LESS_DPP: ; %bb.0: ; %entry4128; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x94129; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 04130; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -14131; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)4132; GFX7LESS_DPP-NEXT: ds_sub_rtn_u32 v0, v1, v04133; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)4134; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0004135; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -14136; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 04137; GFX7LESS_DPP-NEXT: s_endpgm4138;4139; GFX8_DPP-LABEL: sub_i32_varying:4140; GFX8_DPP: ; %bb.0: ; %entry4141; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 04142; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 04143; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v44144; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14145; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4146; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 04147; GFX8_DPP-NEXT: s_nop 04148; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14149; GFX8_DPP-NEXT: s_nop 14150; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14151; GFX8_DPP-NEXT: s_nop 14152; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14153; GFX8_DPP-NEXT: s_nop 14154; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14155; GFX8_DPP-NEXT: s_nop 14156; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf4157; GFX8_DPP-NEXT: s_nop 14158; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf4159; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 634160; GFX8_DPP-NEXT: s_nop 04161; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf4162; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]4163; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v44164; GFX8_DPP-NEXT: ; implicit-def: $vgpr04165; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4166; GFX8_DPP-NEXT: s_cbranch_execz .LBB10_24167; GFX8_DPP-NEXT: ; %bb.1:4168; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s24169; GFX8_DPP-NEXT: s_mov_b32 m0, -14170; GFX8_DPP-NEXT: ds_sub_rtn_u32 v0, v3, v04171; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)4172; GFX8_DPP-NEXT: .LBB10_2:4173; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]4174; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244175; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v04176; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v24177; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0004178; GFX8_DPP-NEXT: s_mov_b32 s2, -14179; GFX8_DPP-NEXT: v_sub_u32_e32 v0, vcc, s4, v04180; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)4181; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 04182; GFX8_DPP-NEXT: s_endpgm4183;4184; GFX9_DPP-LABEL: sub_i32_varying:4185; GFX9_DPP: ; %bb.0: ; %entry4186; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 04187; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 04188; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v44189; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14190; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4191; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 04192; GFX9_DPP-NEXT: s_nop 04193; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14194; GFX9_DPP-NEXT: s_nop 14195; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14196; GFX9_DPP-NEXT: s_nop 14197; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14198; GFX9_DPP-NEXT: s_nop 14199; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14200; GFX9_DPP-NEXT: s_nop 14201; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf4202; GFX9_DPP-NEXT: s_nop 14203; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf4204; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 634205; GFX9_DPP-NEXT: s_nop 04206; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf4207; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]4208; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v44209; GFX9_DPP-NEXT: ; implicit-def: $vgpr04210; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4211; GFX9_DPP-NEXT: s_cbranch_execz .LBB10_24212; GFX9_DPP-NEXT: ; %bb.1:4213; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s24214; GFX9_DPP-NEXT: ds_sub_rtn_u32 v0, v3, v04215; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)4216; GFX9_DPP-NEXT: .LBB10_2:4217; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]4218; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244219; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v04220; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v24221; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0004222; GFX9_DPP-NEXT: s_mov_b32 s2, -14223; GFX9_DPP-NEXT: v_sub_u32_e32 v0, s4, v04224; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)4225; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 04226; GFX9_DPP-NEXT: s_endpgm4227;4228; GFX1064_DPP-LABEL: sub_i32_varying:4229; GFX1064_DPP: ; %bb.0: ; %entry4230; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14231; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4232; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 04233; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14234; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14235; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14236; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14237; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -14238; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf4239; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 314240; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s24241; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf4242; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf4243; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 154244; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 314245; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 164246; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]4247; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04248; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14249; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 474250; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 634251; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 324252; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]4253; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04254; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 04255; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14256; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 484257; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]4258; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04259; GFX1064_DPP-NEXT: s_mov_b32 s2, -14260; GFX1064_DPP-NEXT: ; implicit-def: $vgpr04261; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4262; GFX1064_DPP-NEXT: s_cbranch_execz .LBB10_24263; GFX1064_DPP-NEXT: ; %bb.1:4264; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, s64265; GFX1064_DPP-NEXT: ds_sub_rtn_u32 v0, v4, v04266; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)4267; GFX1064_DPP-NEXT: buffer_gl0_inv4268; GFX1064_DPP-NEXT: .LBB10_2:4269; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)4270; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]4271; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244272; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v04273; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v34274; GFX1064_DPP-NEXT: v_sub_nc_u32_e32 v0, s3, v04275; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160004276; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)4277; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 04278; GFX1064_DPP-NEXT: s_endpgm4279;4280; GFX1032_DPP-LABEL: sub_i32_varying:4281; GFX1032_DPP: ; %bb.0: ; %entry4282; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -14283; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s04284; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 04285; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14286; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14287; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14288; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14289; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -14290; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf4291; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 154292; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 314293; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf4294; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s04295; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04296; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 04297; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -14298; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 164299; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s04300; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04301; GFX1032_DPP-NEXT: s_mov_b32 s0, s24302; GFX1032_DPP-NEXT: s_mov_b32 s2, -14303; GFX1032_DPP-NEXT: ; implicit-def: $vgpr04304; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo4305; GFX1032_DPP-NEXT: s_cbranch_execz .LBB10_24306; GFX1032_DPP-NEXT: ; %bb.1:4307; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, s04308; GFX1032_DPP-NEXT: ds_sub_rtn_u32 v0, v4, v04309; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)4310; GFX1032_DPP-NEXT: buffer_gl0_inv4311; GFX1032_DPP-NEXT: .LBB10_2:4312; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)4313; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s14314; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244315; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v04316; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v34317; GFX1032_DPP-NEXT: v_sub_nc_u32_e32 v0, s3, v04318; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160004319; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)4320; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 04321; GFX1032_DPP-NEXT: s_endpgm4322;4323; GFX1164_DPP-LABEL: sub_i32_varying:4324; GFX1164_DPP: ; %bb.0: ; %entry4325; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v04326; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14327; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4328; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4329; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 04330; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4331; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14332; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14333; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4334; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14335; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14336; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4337; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -14338; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf4339; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4340; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 314341; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s24342; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4343; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf4344; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf4345; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 154346; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 314347; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4348; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 164349; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]4350; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04351; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14352; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)4353; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 474354; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 634355; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 324356; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]4357; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4358; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04359; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 04360; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14361; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 484362; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]4363; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04364; GFX1164_DPP-NEXT: s_mov_b32 s2, -14365; GFX1164_DPP-NEXT: ; implicit-def: $vgpr04366; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4367; GFX1164_DPP-NEXT: s_cbranch_execz .LBB10_24368; GFX1164_DPP-NEXT: ; %bb.1:4369; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, s64370; GFX1164_DPP-NEXT: ds_sub_rtn_u32 v0, v4, v04371; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)4372; GFX1164_DPP-NEXT: buffer_gl0_inv4373; GFX1164_DPP-NEXT: .LBB10_2:4374; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]4375; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x244376; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v04377; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v34378; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)4379; GFX1164_DPP-NEXT: v_sub_nc_u32_e32 v0, s3, v04380; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160004381; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)4382; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 04383; GFX1164_DPP-NEXT: s_endpgm4384;4385; GFX1132_DPP-LABEL: sub_i32_varying:4386; GFX1132_DPP: ; %bb.0: ; %entry4387; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v04388; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -14389; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4390; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s04391; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 04392; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4393; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14394; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14395; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4396; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14397; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14398; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4399; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -14400; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf4401; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)4402; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 154403; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 314404; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf4405; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s04406; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04407; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 04408; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -14409; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 164410; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s04411; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04412; GFX1132_DPP-NEXT: s_mov_b32 s0, s24413; GFX1132_DPP-NEXT: s_mov_b32 s2, -14414; GFX1132_DPP-NEXT: ; implicit-def: $vgpr04415; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo4416; GFX1132_DPP-NEXT: s_cbranch_execz .LBB10_24417; GFX1132_DPP-NEXT: ; %bb.1:4418; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, s04419; GFX1132_DPP-NEXT: ds_sub_rtn_u32 v0, v4, v04420; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)4421; GFX1132_DPP-NEXT: buffer_gl0_inv4422; GFX1132_DPP-NEXT: .LBB10_2:4423; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s14424; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x244425; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v04426; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v34427; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)4428; GFX1132_DPP-NEXT: v_sub_nc_u32_e32 v0, s3, v04429; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160004430; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)4431; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 04432; GFX1132_DPP-NEXT: s_endpgm4433entry:4434 %lane = call i32 @llvm.amdgcn.workitem.id.x()4435 %old = atomicrmw sub ptr addrspace(3) @local_var32, i32 %lane acq_rel4436 store i32 %old, ptr addrspace(1) %out4437 ret void4438}4439 4440define amdgpu_kernel void @sub_i32_varying_nouse() {4441; GFX7LESS_ITERATIVE-LABEL: sub_i32_varying_nouse:4442; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry4443; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4444; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 04445; GFX7LESS_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4446; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14447; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]4448; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s34449; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s34450; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]4451; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 04452; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[4:5]4453; GFX7LESS_ITERATIVE-NEXT: s_add_i32 s2, s2, s64454; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB11_14455; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4456; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 04457; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v04458; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04459; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc4460; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4461; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44462; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:4463; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04464; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v1, s24465; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -14466; GFX7LESS_ITERATIVE-NEXT: ds_sub_u32 v0, v14467; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4468; GFX7LESS_ITERATIVE-NEXT: .LBB11_4:4469; GFX7LESS_ITERATIVE-NEXT: s_endpgm4470;4471; GFX8_ITERATIVE-LABEL: sub_i32_varying_nouse:4472; GFX8_ITERATIVE: ; %bb.0: ; %entry4473; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4474; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 04475; GFX8_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4476; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14477; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]4478; GFX8_ITERATIVE-NEXT: v_readlane_b32 s4, v0, s34479; GFX8_ITERATIVE-NEXT: s_add_i32 s2, s2, s44480; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s34481; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]4482; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB11_14483; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4484; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04485; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04486; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04487; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc4488; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4489; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44490; GFX8_ITERATIVE-NEXT: ; %bb.3:4491; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04492; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v1, s24493; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -14494; GFX8_ITERATIVE-NEXT: ds_sub_u32 v0, v14495; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4496; GFX8_ITERATIVE-NEXT: .LBB11_4:4497; GFX8_ITERATIVE-NEXT: s_endpgm4498;4499; GFX9_ITERATIVE-LABEL: sub_i32_varying_nouse:4500; GFX9_ITERATIVE: ; %bb.0: ; %entry4501; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4502; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 04503; GFX9_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4504; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14505; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]4506; GFX9_ITERATIVE-NEXT: v_readlane_b32 s4, v0, s34507; GFX9_ITERATIVE-NEXT: s_add_i32 s2, s2, s44508; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s34509; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]4510; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB11_14511; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4512; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04513; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04514; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04515; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc4516; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4517; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44518; GFX9_ITERATIVE-NEXT: ; %bb.3:4519; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04520; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v1, s24521; GFX9_ITERATIVE-NEXT: ds_sub_u32 v0, v14522; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4523; GFX9_ITERATIVE-NEXT: .LBB11_4:4524; GFX9_ITERATIVE-NEXT: s_endpgm4525;4526; GFX1064_ITERATIVE-LABEL: sub_i32_varying_nouse:4527; GFX1064_ITERATIVE: ; %bb.0: ; %entry4528; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4529; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 04530; GFX1064_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4531; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14532; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]4533; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s34534; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s34535; GFX1064_ITERATIVE-NEXT: s_add_i32 s2, s2, s64536; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]4537; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB11_14538; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4539; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04540; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04541; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04542; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc4543; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4544; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44545; GFX1064_ITERATIVE-NEXT: ; %bb.3:4546; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04547; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v1, s24548; GFX1064_ITERATIVE-NEXT: ds_sub_u32 v0, v14549; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4550; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv4551; GFX1064_ITERATIVE-NEXT: .LBB11_4:4552; GFX1064_ITERATIVE-NEXT: s_endpgm4553;4554; GFX1032_ITERATIVE-LABEL: sub_i32_varying_nouse:4555; GFX1032_ITERATIVE: ; %bb.0: ; %entry4556; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo4557; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 04558; GFX1032_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4559; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14560; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s14561; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s24562; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s24563; GFX1032_ITERATIVE-NEXT: s_add_i32 s0, s0, s34564; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s24565; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB11_14566; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4567; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04568; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04569; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo4570; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s14571; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44572; GFX1032_ITERATIVE-NEXT: ; %bb.3:4573; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04574; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v1, s04575; GFX1032_ITERATIVE-NEXT: ds_sub_u32 v0, v14576; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4577; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv4578; GFX1032_ITERATIVE-NEXT: .LBB11_4:4579; GFX1032_ITERATIVE-NEXT: s_endpgm4580;4581; GFX1164_ITERATIVE-LABEL: sub_i32_varying_nouse:4582; GFX1164_ITERATIVE: ; %bb.0: ; %entry4583; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v0, 0x3ff, v04584; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4585; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 04586; GFX1164_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4587; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14588; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]4589; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4590; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s34591; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[4:5], 1, s34592; GFX1164_ITERATIVE-NEXT: s_add_i32 s2, s2, s64593; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[4:5]4594; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB11_14595; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4596; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04597; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec4598; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4599; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04600; GFX1164_ITERATIVE-NEXT: v_cmpx_eq_u32_e32 0, v04601; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4602; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44603; GFX1164_ITERATIVE-NEXT: ; %bb.3:4604; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v0, 04605; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, s24606; GFX1164_ITERATIVE-NEXT: ds_sub_u32 v0, v14607; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4608; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv4609; GFX1164_ITERATIVE-NEXT: .LBB11_4:4610; GFX1164_ITERATIVE-NEXT: s_endpgm4611;4612; GFX1132_ITERATIVE-LABEL: sub_i32_varying_nouse:4613; GFX1132_ITERATIVE: ; %bb.0: ; %entry4614; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v0, 0x3ff, v04615; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo4616; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 04617; GFX1132_ITERATIVE-NEXT: .LBB11_1: ; %ComputeLoop4618; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=14619; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s14620; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4621; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s24622; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s24623; GFX1132_ITERATIVE-NEXT: s_add_i32 s0, s0, s34624; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s24625; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB11_14626; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd4627; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04628; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo4629; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)4630; GFX1132_ITERATIVE-NEXT: v_cmpx_eq_u32_e32 0, v04631; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s14632; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB11_44633; GFX1132_ITERATIVE-NEXT: ; %bb.3:4634; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, s04635; GFX1132_ITERATIVE-NEXT: ds_sub_u32 v0, v14636; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)4637; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv4638; GFX1132_ITERATIVE-NEXT: .LBB11_4:4639; GFX1132_ITERATIVE-NEXT: s_endpgm4640;4641; GFX7LESS_DPP-LABEL: sub_i32_varying_nouse:4642; GFX7LESS_DPP: ; %bb.0: ; %entry4643; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 04644; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -14645; GFX7LESS_DPP-NEXT: ds_sub_u32 v1, v04646; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)4647; GFX7LESS_DPP-NEXT: s_endpgm4648;4649; GFX8_DPP-LABEL: sub_i32_varying_nouse:4650; GFX8_DPP: ; %bb.0: ; %entry4651; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 04652; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 04653; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v34654; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14655; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4656; GFX8_DPP-NEXT: s_nop 14657; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14658; GFX8_DPP-NEXT: s_nop 14659; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14660; GFX8_DPP-NEXT: s_nop 14661; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14662; GFX8_DPP-NEXT: s_nop 14663; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14664; GFX8_DPP-NEXT: s_nop 14665; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf4666; GFX8_DPP-NEXT: s_nop 14667; GFX8_DPP-NEXT: v_add_u32_dpp v1, vcc, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf4668; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 634669; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]4670; GFX8_DPP-NEXT: s_mov_b32 s0, s24671; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v34672; GFX8_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4673; GFX8_DPP-NEXT: s_cbranch_execz .LBB11_24674; GFX8_DPP-NEXT: ; %bb.1:4675; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s04676; GFX8_DPP-NEXT: s_mov_b32 m0, -14677; GFX8_DPP-NEXT: ds_sub_u32 v2, v04678; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)4679; GFX8_DPP-NEXT: .LBB11_2:4680; GFX8_DPP-NEXT: s_endpgm4681;4682; GFX9_DPP-LABEL: sub_i32_varying_nouse:4683; GFX9_DPP: ; %bb.0: ; %entry4684; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 04685; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 04686; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v34687; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14688; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4689; GFX9_DPP-NEXT: s_nop 14690; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:14691; GFX9_DPP-NEXT: s_nop 14692; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:14693; GFX9_DPP-NEXT: s_nop 14694; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:14695; GFX9_DPP-NEXT: s_nop 14696; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:14697; GFX9_DPP-NEXT: s_nop 14698; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf4699; GFX9_DPP-NEXT: s_nop 14700; GFX9_DPP-NEXT: v_add_u32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf4701; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 634702; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]4703; GFX9_DPP-NEXT: s_mov_b32 s0, s24704; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v34705; GFX9_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4706; GFX9_DPP-NEXT: s_cbranch_execz .LBB11_24707; GFX9_DPP-NEXT: ; %bb.1:4708; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s04709; GFX9_DPP-NEXT: ds_sub_u32 v2, v04710; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)4711; GFX9_DPP-NEXT: .LBB11_2:4712; GFX9_DPP-NEXT: s_endpgm4713;4714; GFX1064_DPP-LABEL: sub_i32_varying_nouse:4715; GFX1064_DPP: ; %bb.0: ; %entry4716; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14717; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4718; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:14719; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:14720; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:14721; GFX1064_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:14722; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04723; GFX1064_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v24724; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]4725; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04726; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14727; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 04728; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 324729; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]4730; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v04731; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 04732; GFX1064_DPP-NEXT: s_add_i32 s0, s2, s34733; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v34734; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4735; GFX1064_DPP-NEXT: s_cbranch_execz .LBB11_24736; GFX1064_DPP-NEXT: ; %bb.1:4737; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, s04738; GFX1064_DPP-NEXT: ds_sub_u32 v0, v34739; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)4740; GFX1064_DPP-NEXT: buffer_gl0_inv4741; GFX1064_DPP-NEXT: .LBB11_2:4742; GFX1064_DPP-NEXT: s_endpgm4743;4744; GFX1032_DPP-LABEL: sub_i32_varying_nouse:4745; GFX1032_DPP: ; %bb.0: ; %entry4746; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -14747; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s04748; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:14749; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:14750; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:14751; GFX1032_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:14752; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04753; GFX1032_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v24754; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s04755; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 04756; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 04757; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, v14758; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v44759; GFX1032_DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo4760; GFX1032_DPP-NEXT: s_cbranch_execz .LBB11_24761; GFX1032_DPP-NEXT: ; %bb.1:4762; GFX1032_DPP-NEXT: ds_sub_u32 v0, v34763; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)4764; GFX1032_DPP-NEXT: buffer_gl0_inv4765; GFX1032_DPP-NEXT: .LBB11_2:4766; GFX1032_DPP-NEXT: s_endpgm4767;4768; GFX1164_DPP-LABEL: sub_i32_varying_nouse:4769; GFX1164_DPP: ; %bb.0: ; %entry4770; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v04771; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14772; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4773; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]4774; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4775; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:14776; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:14777; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4778; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:14779; GFX1164_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:14780; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4781; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04782; GFX1164_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v24783; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4784; GFX1164_DPP-NEXT: v_permlane64_b32 v2, v14785; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]4786; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04787; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -14788; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)4789; GFX1164_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v24790; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]4791; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)4792; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v04793; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 04794; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, v14795; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], exec4796; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)4797; GFX1164_DPP-NEXT: v_cmpx_eq_u32_e32 0, v44798; GFX1164_DPP-NEXT: s_cbranch_execz .LBB11_24799; GFX1164_DPP-NEXT: ; %bb.1:4800; GFX1164_DPP-NEXT: ds_sub_u32 v0, v34801; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)4802; GFX1164_DPP-NEXT: buffer_gl0_inv4803; GFX1164_DPP-NEXT: .LBB11_2:4804; GFX1164_DPP-NEXT: s_endpgm4805;4806; GFX1132_DPP-LABEL: sub_i32_varying_nouse:4807; GFX1132_DPP: ; %bb.0: ; %entry4808; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v04809; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -14810; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)4811; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s04812; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4813; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:1 row_mask:0xf bank_mask:0xf bound_ctrl:14814; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:2 row_mask:0xf bank_mask:0xf bound_ctrl:14815; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4816; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:4 row_mask:0xf bank_mask:0xf bound_ctrl:14817; GFX1132_DPP-NEXT: v_add_nc_u32_dpp v1, v1, v1 row_xmask:8 row_mask:0xf bank_mask:0xf bound_ctrl:14818; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4819; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04820; GFX1132_DPP-NEXT: v_add_nc_u32_e32 v1, v1, v24821; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s04822; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)4823; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 04824; GFX1132_DPP-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v3, v14825; GFX1132_DPP-NEXT: s_mov_b32 s0, exec_lo4826; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)4827; GFX1132_DPP-NEXT: v_cmpx_eq_u32_e32 0, v44828; GFX1132_DPP-NEXT: s_cbranch_execz .LBB11_24829; GFX1132_DPP-NEXT: ; %bb.1:4830; GFX1132_DPP-NEXT: ds_sub_u32 v0, v34831; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)4832; GFX1132_DPP-NEXT: buffer_gl0_inv4833; GFX1132_DPP-NEXT: .LBB11_2:4834; GFX1132_DPP-NEXT: s_endpgm4835entry:4836 %lane = call i32 @llvm.amdgcn.workitem.id.x()4837 %old = atomicrmw sub ptr addrspace(3) @local_var32, i32 %lane acq_rel4838 ret void4839}4840 4841define amdgpu_kernel void @sub_i64_constant(ptr addrspace(1) %out) {4842; GFX7LESS-LABEL: sub_i64_constant:4843; GFX7LESS: ; %bb.0: ; %entry4844; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec4845; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 04846; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v2, s3, v04847; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v24848; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr14849; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc4850; GFX7LESS-NEXT: s_cbranch_execz .LBB12_24851; GFX7LESS-NEXT: ; %bb.1:4852; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]4853; GFX7LESS-NEXT: s_mul_i32 s2, s2, 54854; GFX7LESS-NEXT: v_mov_b32_e32 v1, 04855; GFX7LESS-NEXT: v_mov_b32_e32 v0, s24856; GFX7LESS-NEXT: s_mov_b32 m0, -14857; GFX7LESS-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]4858; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4859; GFX7LESS-NEXT: .LBB12_2:4860; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]4861; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x94862; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0004863; GFX7LESS-NEXT: s_mov_b32 s2, -14864; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v14865; GFX7LESS-NEXT: v_readfirstlane_b32 s5, v04866; GFX7LESS-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v24867; GFX7LESS-NEXT: v_mul_u32_u24_e32 v0, 5, v24868; GFX7LESS-NEXT: v_mov_b32_e32 v2, s44869; GFX7LESS-NEXT: v_sub_i32_e32 v0, vcc, s5, v04870; GFX7LESS-NEXT: v_subb_u32_e32 v1, vcc, v2, v1, vcc4871; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4872; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 04873; GFX7LESS-NEXT: s_endpgm4874;4875; GFX8-LABEL: sub_i64_constant:4876; GFX8: ; %bb.0: ; %entry4877; GFX8-NEXT: s_mov_b64 s[2:3], exec4878; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 04879; GFX8-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v04880; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v24881; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr14882; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc4883; GFX8-NEXT: s_cbranch_execz .LBB12_24884; GFX8-NEXT: ; %bb.1:4885; GFX8-NEXT: s_bcnt1_i32_b64 s2, s[2:3]4886; GFX8-NEXT: s_mul_i32 s2, s2, 54887; GFX8-NEXT: v_mov_b32_e32 v0, s24888; GFX8-NEXT: v_mov_b32_e32 v1, 04889; GFX8-NEXT: s_mov_b32 m0, -14890; GFX8-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]4891; GFX8-NEXT: s_waitcnt lgkmcnt(0)4892; GFX8-NEXT: .LBB12_2:4893; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]4894; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244895; GFX8-NEXT: v_readfirstlane_b32 s4, v14896; GFX8-NEXT: v_readfirstlane_b32 s5, v04897; GFX8-NEXT: v_mul_u32_u24_e32 v0, 5, v24898; GFX8-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v24899; GFX8-NEXT: v_mov_b32_e32 v2, s44900; GFX8-NEXT: v_sub_u32_e32 v0, vcc, s5, v04901; GFX8-NEXT: s_mov_b32 s3, 0xf0004902; GFX8-NEXT: s_mov_b32 s2, -14903; GFX8-NEXT: v_subb_u32_e32 v1, vcc, v2, v1, vcc4904; GFX8-NEXT: s_waitcnt lgkmcnt(0)4905; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 04906; GFX8-NEXT: s_endpgm4907;4908; GFX9-LABEL: sub_i64_constant:4909; GFX9: ; %bb.0: ; %entry4910; GFX9-NEXT: s_mov_b64 s[2:3], exec4911; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 04912; GFX9-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v04913; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v24914; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr14915; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc4916; GFX9-NEXT: s_cbranch_execz .LBB12_24917; GFX9-NEXT: ; %bb.1:4918; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]4919; GFX9-NEXT: s_mul_i32 s2, s2, 54920; GFX9-NEXT: v_mov_b32_e32 v0, s24921; GFX9-NEXT: v_mov_b32_e32 v1, 04922; GFX9-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]4923; GFX9-NEXT: s_waitcnt lgkmcnt(0)4924; GFX9-NEXT: .LBB12_2:4925; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]4926; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244927; GFX9-NEXT: v_readfirstlane_b32 s4, v14928; GFX9-NEXT: v_readfirstlane_b32 s5, v04929; GFX9-NEXT: v_mul_u32_u24_e32 v0, 5, v24930; GFX9-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v24931; GFX9-NEXT: v_mov_b32_e32 v2, s44932; GFX9-NEXT: v_sub_co_u32_e32 v0, vcc, s5, v04933; GFX9-NEXT: s_mov_b32 s3, 0xf0004934; GFX9-NEXT: s_mov_b32 s2, -14935; GFX9-NEXT: v_subb_co_u32_e32 v1, vcc, v2, v1, vcc4936; GFX9-NEXT: s_waitcnt lgkmcnt(0)4937; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 04938; GFX9-NEXT: s_endpgm4939;4940; GFX1064-LABEL: sub_i64_constant:4941; GFX1064: ; %bb.0: ; %entry4942; GFX1064-NEXT: s_mov_b64 s[2:3], exec4943; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 04944; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v04945; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr14946; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v24947; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc4948; GFX1064-NEXT: s_cbranch_execz .LBB12_24949; GFX1064-NEXT: ; %bb.1:4950; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]4951; GFX1064-NEXT: v_mov_b32_e32 v1, 04952; GFX1064-NEXT: s_mul_i32 s2, s2, 54953; GFX1064-NEXT: v_mov_b32_e32 v0, s24954; GFX1064-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]4955; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4956; GFX1064-NEXT: buffer_gl0_inv4957; GFX1064-NEXT: .LBB12_2:4958; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)4959; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]4960; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244961; GFX1064-NEXT: v_readfirstlane_b32 s2, v04962; GFX1064-NEXT: v_mul_u32_u24_e32 v0, 5, v24963; GFX1064-NEXT: v_readfirstlane_b32 s3, v14964; GFX1064-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v24965; GFX1064-NEXT: v_sub_co_u32 v0, vcc, s2, v04966; GFX1064-NEXT: v_sub_co_ci_u32_e32 v1, vcc, s3, v1, vcc4967; GFX1064-NEXT: s_mov_b32 s3, 0x310160004968; GFX1064-NEXT: s_mov_b32 s2, -14969; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4970; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 04971; GFX1064-NEXT: s_endpgm4972;4973; GFX1032-LABEL: sub_i64_constant:4974; GFX1032: ; %bb.0: ; %entry4975; GFX1032-NEXT: s_mov_b32 s1, exec_lo4976; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr14977; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v2, s1, 04978; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v24979; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo4980; GFX1032-NEXT: s_cbranch_execz .LBB12_24981; GFX1032-NEXT: ; %bb.1:4982; GFX1032-NEXT: s_bcnt1_i32_b32 s1, s14983; GFX1032-NEXT: v_mov_b32_e32 v1, 04984; GFX1032-NEXT: s_mul_i32 s1, s1, 54985; GFX1032-NEXT: v_mov_b32_e32 v0, s14986; GFX1032-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]4987; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4988; GFX1032-NEXT: buffer_gl0_inv4989; GFX1032-NEXT: .LBB12_2:4990; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)4991; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s04992; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244993; GFX1032-NEXT: v_readfirstlane_b32 s2, v04994; GFX1032-NEXT: v_mul_u32_u24_e32 v0, 5, v24995; GFX1032-NEXT: v_readfirstlane_b32 s3, v14996; GFX1032-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v24997; GFX1032-NEXT: v_sub_co_u32 v0, vcc_lo, s2, v04998; GFX1032-NEXT: v_sub_co_ci_u32_e32 v1, vcc_lo, s3, v1, vcc_lo4999; GFX1032-NEXT: s_mov_b32 s3, 0x310160005000; GFX1032-NEXT: s_mov_b32 s2, -15001; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5002; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05003; GFX1032-NEXT: s_endpgm5004;5005; GFX1164-LABEL: sub_i64_constant:5006; GFX1164: ; %bb.0: ; %entry5007; GFX1164-NEXT: s_mov_b64 s[2:3], exec5008; GFX1164-NEXT: s_mov_b64 s[0:1], exec5009; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 05010; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5011; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, s3, v05012; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr15013; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v25014; GFX1164-NEXT: s_cbranch_execz .LBB12_25015; GFX1164-NEXT: ; %bb.1:5016; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]5017; GFX1164-NEXT: v_mov_b32_e32 v1, 05018; GFX1164-NEXT: s_mul_i32 s2, s2, 55019; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5020; GFX1164-NEXT: v_mov_b32_e32 v0, s25021; GFX1164-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]5022; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5023; GFX1164-NEXT: buffer_gl0_inv5024; GFX1164-NEXT: .LBB12_2:5025; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]5026; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x245027; GFX1164-NEXT: v_readfirstlane_b32 s2, v05028; GFX1164-NEXT: v_mul_u32_u24_e32 v0, 5, v25029; GFX1164-NEXT: v_readfirstlane_b32 s3, v15030; GFX1164-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v25031; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)5032; GFX1164-NEXT: v_sub_co_u32 v0, vcc, s2, v05033; GFX1164-NEXT: v_sub_co_ci_u32_e64 v1, null, s3, v1, vcc5034; GFX1164-NEXT: s_mov_b32 s3, 0x310160005035; GFX1164-NEXT: s_mov_b32 s2, -15036; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5037; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 05038; GFX1164-NEXT: s_endpgm5039;5040; GFX1132-LABEL: sub_i64_constant:5041; GFX1132: ; %bb.0: ; %entry5042; GFX1132-NEXT: s_mov_b32 s1, exec_lo5043; GFX1132-NEXT: s_mov_b32 s0, exec_lo5044; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, s1, 05045; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr15046; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5047; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v25048; GFX1132-NEXT: s_cbranch_execz .LBB12_25049; GFX1132-NEXT: ; %bb.1:5050; GFX1132-NEXT: s_bcnt1_i32_b32 s1, s15051; GFX1132-NEXT: v_mov_b32_e32 v1, 05052; GFX1132-NEXT: s_mul_i32 s1, s1, 55053; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5054; GFX1132-NEXT: v_mov_b32_e32 v0, s15055; GFX1132-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]5056; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5057; GFX1132-NEXT: buffer_gl0_inv5058; GFX1132-NEXT: .LBB12_2:5059; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s05060; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x245061; GFX1132-NEXT: v_readfirstlane_b32 s2, v05062; GFX1132-NEXT: v_mul_u32_u24_e32 v0, 5, v25063; GFX1132-NEXT: v_readfirstlane_b32 s3, v15064; GFX1132-NEXT: v_mul_hi_u32_u24_e32 v1, 5, v25065; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)5066; GFX1132-NEXT: v_sub_co_u32 v0, vcc_lo, s2, v05067; GFX1132-NEXT: v_sub_co_ci_u32_e64 v1, null, s3, v1, vcc_lo5068; GFX1132-NEXT: s_mov_b32 s3, 0x310160005069; GFX1132-NEXT: s_mov_b32 s2, -15070; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5071; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 05072; GFX1132-NEXT: s_endpgm5073entry:5074 %old = atomicrmw sub ptr addrspace(3) @local_var64, i64 5 acq_rel5075 store i64 %old, ptr addrspace(1) %out5076 ret void5077}5078 5079define amdgpu_kernel void @sub_i64_uniform(ptr addrspace(1) %out, i64 %subitive) {5080; GFX7LESS-LABEL: sub_i64_uniform:5081; GFX7LESS: ; %bb.0: ; %entry5082; GFX7LESS-NEXT: s_mov_b64 s[6:7], exec5083; GFX7LESS-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x95084; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s6, 05085; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v2, s7, v05086; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v25087; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr15088; GFX7LESS-NEXT: s_and_saveexec_b64 s[4:5], vcc5089; GFX7LESS-NEXT: s_cbranch_execz .LBB13_25090; GFX7LESS-NEXT: ; %bb.1:5091; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[6:7]5092; GFX7LESS-NEXT: v_mov_b32_e32 v3, 05093; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5094; GFX7LESS-NEXT: s_mul_i32 s7, s3, s65095; GFX7LESS-NEXT: v_mov_b32_e32 v0, s65096; GFX7LESS-NEXT: v_mul_hi_u32 v0, s2, v05097; GFX7LESS-NEXT: s_mul_i32 s6, s2, s65098; GFX7LESS-NEXT: v_add_i32_e32 v1, vcc, s7, v05099; GFX7LESS-NEXT: v_mov_b32_e32 v0, s65100; GFX7LESS-NEXT: s_mov_b32 m0, -15101; GFX7LESS-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5102; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5103; GFX7LESS-NEXT: .LBB13_2:5104; GFX7LESS-NEXT: s_or_b64 exec, exec, s[4:5]5105; GFX7LESS-NEXT: s_mov_b32 s7, 0xf0005106; GFX7LESS-NEXT: s_mov_b32 s6, -15107; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5108; GFX7LESS-NEXT: s_mov_b32 s4, s05109; GFX7LESS-NEXT: s_mov_b32 s5, s15110; GFX7LESS-NEXT: v_readfirstlane_b32 s0, v15111; GFX7LESS-NEXT: v_readfirstlane_b32 s1, v05112; GFX7LESS-NEXT: v_mul_lo_u32 v0, s3, v25113; GFX7LESS-NEXT: v_mul_hi_u32 v1, s2, v25114; GFX7LESS-NEXT: v_mul_lo_u32 v2, s2, v25115; GFX7LESS-NEXT: v_add_i32_e32 v1, vcc, v1, v05116; GFX7LESS-NEXT: v_mov_b32_e32 v3, s05117; GFX7LESS-NEXT: v_sub_i32_e32 v0, vcc, s1, v25118; GFX7LESS-NEXT: v_subb_u32_e32 v1, vcc, v3, v1, vcc5119; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 05120; GFX7LESS-NEXT: s_endpgm5121;5122; GFX8-LABEL: sub_i64_uniform:5123; GFX8: ; %bb.0: ; %entry5124; GFX8-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x245125; GFX8-NEXT: s_mov_b64 s[6:7], exec5126; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 05127; GFX8-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v05128; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v25129; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr15130; GFX8-NEXT: s_and_saveexec_b64 s[4:5], vcc5131; GFX8-NEXT: s_cbranch_execz .LBB13_25132; GFX8-NEXT: ; %bb.1:5133; GFX8-NEXT: s_bcnt1_i32_b64 s8, s[6:7]5134; GFX8-NEXT: v_mov_b32_e32 v0, s85135; GFX8-NEXT: s_waitcnt lgkmcnt(0)5136; GFX8-NEXT: v_mad_u64_u32 v[0:1], s[6:7], s2, v0, 05137; GFX8-NEXT: s_mul_i32 s6, s3, s85138; GFX8-NEXT: v_mov_b32_e32 v3, 05139; GFX8-NEXT: v_add_u32_e32 v1, vcc, s6, v15140; GFX8-NEXT: s_mov_b32 m0, -15141; GFX8-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5142; GFX8-NEXT: s_waitcnt lgkmcnt(0)5143; GFX8-NEXT: .LBB13_2:5144; GFX8-NEXT: s_or_b64 exec, exec, s[4:5]5145; GFX8-NEXT: s_waitcnt lgkmcnt(0)5146; GFX8-NEXT: s_mov_b32 s4, s05147; GFX8-NEXT: s_mov_b32 s5, s15148; GFX8-NEXT: v_mul_lo_u32 v4, s3, v25149; GFX8-NEXT: v_mad_u64_u32 v[2:3], s[0:1], s2, v2, 05150; GFX8-NEXT: v_readfirstlane_b32 s0, v15151; GFX8-NEXT: v_readfirstlane_b32 s1, v05152; GFX8-NEXT: v_add_u32_e32 v1, vcc, v3, v45153; GFX8-NEXT: v_mov_b32_e32 v3, s05154; GFX8-NEXT: v_sub_u32_e32 v0, vcc, s1, v25155; GFX8-NEXT: s_mov_b32 s7, 0xf0005156; GFX8-NEXT: s_mov_b32 s6, -15157; GFX8-NEXT: v_subb_u32_e32 v1, vcc, v3, v1, vcc5158; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 05159; GFX8-NEXT: s_endpgm5160;5161; GFX9-LABEL: sub_i64_uniform:5162; GFX9: ; %bb.0: ; %entry5163; GFX9-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x245164; GFX9-NEXT: s_mov_b64 s[6:7], exec5165; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 05166; GFX9-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v05167; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v25168; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr15169; GFX9-NEXT: s_and_saveexec_b64 s[4:5], vcc5170; GFX9-NEXT: s_cbranch_execz .LBB13_25171; GFX9-NEXT: ; %bb.1:5172; GFX9-NEXT: s_bcnt1_i32_b64 s6, s[6:7]5173; GFX9-NEXT: s_waitcnt lgkmcnt(0)5174; GFX9-NEXT: s_mul_i32 s7, s3, s65175; GFX9-NEXT: s_mul_hi_u32 s8, s2, s65176; GFX9-NEXT: s_add_i32 s8, s8, s75177; GFX9-NEXT: s_mul_i32 s6, s2, s65178; GFX9-NEXT: v_mov_b32_e32 v0, s65179; GFX9-NEXT: v_mov_b32_e32 v1, s85180; GFX9-NEXT: v_mov_b32_e32 v3, 05181; GFX9-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5182; GFX9-NEXT: s_waitcnt lgkmcnt(0)5183; GFX9-NEXT: .LBB13_2:5184; GFX9-NEXT: s_or_b64 exec, exec, s[4:5]5185; GFX9-NEXT: s_waitcnt lgkmcnt(0)5186; GFX9-NEXT: s_mov_b32 s4, s05187; GFX9-NEXT: s_mov_b32 s5, s15188; GFX9-NEXT: v_mad_u64_u32 v[3:4], s[0:1], s2, v2, 05189; GFX9-NEXT: v_readfirstlane_b32 s2, v15190; GFX9-NEXT: v_readfirstlane_b32 s8, v05191; GFX9-NEXT: v_mad_u64_u32 v[0:1], s[0:1], s3, v2, v[4:5]5192; GFX9-NEXT: v_mov_b32_e32 v2, s25193; GFX9-NEXT: v_sub_co_u32_e32 v1, vcc, s8, v35194; GFX9-NEXT: s_mov_b32 s7, 0xf0005195; GFX9-NEXT: s_mov_b32 s6, -15196; GFX9-NEXT: v_subb_co_u32_e32 v2, vcc, v2, v0, vcc5197; GFX9-NEXT: buffer_store_dwordx2 v[1:2], off, s[4:7], 05198; GFX9-NEXT: s_endpgm5199;5200; GFX1064-LABEL: sub_i64_uniform:5201; GFX1064: ; %bb.0: ; %entry5202; GFX1064-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x245203; GFX1064-NEXT: s_mov_b64 s[6:7], exec5204; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 05205; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v05206; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr15207; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v25208; GFX1064-NEXT: s_and_saveexec_b64 s[4:5], vcc5209; GFX1064-NEXT: s_cbranch_execz .LBB13_25210; GFX1064-NEXT: ; %bb.1:5211; GFX1064-NEXT: s_bcnt1_i32_b64 s6, s[6:7]5212; GFX1064-NEXT: v_mov_b32_e32 v3, 05213; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5214; GFX1064-NEXT: s_mul_i32 s7, s3, s65215; GFX1064-NEXT: s_mul_hi_u32 s8, s2, s65216; GFX1064-NEXT: s_mul_i32 s6, s2, s65217; GFX1064-NEXT: s_add_i32 s8, s8, s75218; GFX1064-NEXT: v_mov_b32_e32 v0, s65219; GFX1064-NEXT: v_mov_b32_e32 v1, s85220; GFX1064-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5221; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5222; GFX1064-NEXT: buffer_gl0_inv5223; GFX1064-NEXT: .LBB13_2:5224; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)5225; GFX1064-NEXT: s_or_b64 exec, exec, s[4:5]5226; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5227; GFX1064-NEXT: v_mad_u64_u32 v[3:4], s[4:5], s2, v2, 05228; GFX1064-NEXT: v_readfirstlane_b32 s4, v15229; GFX1064-NEXT: v_mad_u64_u32 v[4:5], s[2:3], s3, v2, v[4:5]5230; GFX1064-NEXT: v_readfirstlane_b32 s2, v05231; GFX1064-NEXT: s_mov_b32 s3, 0x310160005232; GFX1064-NEXT: v_sub_co_u32 v0, vcc, s2, v35233; GFX1064-NEXT: v_sub_co_ci_u32_e32 v1, vcc, s4, v4, vcc5234; GFX1064-NEXT: s_mov_b32 s2, -15235; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05236; GFX1064-NEXT: s_endpgm5237;5238; GFX1032-LABEL: sub_i64_uniform:5239; GFX1032: ; %bb.0: ; %entry5240; GFX1032-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x245241; GFX1032-NEXT: s_mov_b32 s6, exec_lo5242; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr15243; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v2, s6, 05244; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v25245; GFX1032-NEXT: s_and_saveexec_b32 s4, vcc_lo5246; GFX1032-NEXT: s_cbranch_execz .LBB13_25247; GFX1032-NEXT: ; %bb.1:5248; GFX1032-NEXT: s_bcnt1_i32_b32 s5, s65249; GFX1032-NEXT: v_mov_b32_e32 v3, 05250; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5251; GFX1032-NEXT: s_mul_i32 s6, s3, s55252; GFX1032-NEXT: s_mul_hi_u32 s7, s2, s55253; GFX1032-NEXT: s_mul_i32 s5, s2, s55254; GFX1032-NEXT: s_add_i32 s7, s7, s65255; GFX1032-NEXT: v_mov_b32_e32 v0, s55256; GFX1032-NEXT: v_mov_b32_e32 v1, s75257; GFX1032-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5258; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5259; GFX1032-NEXT: buffer_gl0_inv5260; GFX1032-NEXT: .LBB13_2:5261; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)5262; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s45263; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5264; GFX1032-NEXT: v_mad_u64_u32 v[3:4], s2, s2, v2, 05265; GFX1032-NEXT: v_readfirstlane_b32 s4, v15266; GFX1032-NEXT: v_mad_u64_u32 v[4:5], s2, s3, v2, v[4:5]5267; GFX1032-NEXT: v_readfirstlane_b32 s2, v05268; GFX1032-NEXT: s_mov_b32 s3, 0x310160005269; GFX1032-NEXT: v_sub_co_u32 v0, vcc_lo, s2, v35270; GFX1032-NEXT: v_sub_co_ci_u32_e32 v1, vcc_lo, s4, v4, vcc_lo5271; GFX1032-NEXT: s_mov_b32 s2, -15272; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05273; GFX1032-NEXT: s_endpgm5274;5275; GFX1164-LABEL: sub_i64_uniform:5276; GFX1164: ; %bb.0: ; %entry5277; GFX1164-NEXT: s_load_b128 s[0:3], s[4:5], 0x245278; GFX1164-NEXT: s_mov_b64 s[6:7], exec5279; GFX1164-NEXT: s_mov_b64 s[4:5], exec5280; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s6, 05281; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5282; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, s7, v05283; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr15284; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v25285; GFX1164-NEXT: s_cbranch_execz .LBB13_25286; GFX1164-NEXT: ; %bb.1:5287; GFX1164-NEXT: s_bcnt1_i32_b64 s6, s[6:7]5288; GFX1164-NEXT: v_mov_b32_e32 v3, 05289; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5290; GFX1164-NEXT: s_mul_i32 s7, s3, s65291; GFX1164-NEXT: s_mul_hi_u32 s8, s2, s65292; GFX1164-NEXT: s_mul_i32 s6, s2, s65293; GFX1164-NEXT: s_add_i32 s8, s8, s75294; GFX1164-NEXT: v_mov_b32_e32 v0, s65295; GFX1164-NEXT: v_mov_b32_e32 v1, s85296; GFX1164-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5297; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5298; GFX1164-NEXT: buffer_gl0_inv5299; GFX1164-NEXT: .LBB13_2:5300; GFX1164-NEXT: s_or_b64 exec, exec, s[4:5]5301; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5302; GFX1164-NEXT: v_mad_u64_u32 v[3:4], null, s2, v2, 05303; GFX1164-NEXT: v_readfirstlane_b32 s2, v05304; GFX1164-NEXT: v_readfirstlane_b32 s4, v15305; GFX1164-NEXT: s_waitcnt_depctr depctr_va_vdst(0)5306; GFX1164-NEXT: v_mad_u64_u32 v[5:6], null, s3, v2, v[4:5]5307; GFX1164-NEXT: v_sub_co_u32 v0, vcc, s2, v35308; GFX1164-NEXT: s_mov_b32 s3, 0x310160005309; GFX1164-NEXT: s_mov_b32 s2, -15310; GFX1164-NEXT: v_sub_co_ci_u32_e64 v1, null, s4, v5, vcc5311; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 05312; GFX1164-NEXT: s_endpgm5313;5314; GFX1132-LABEL: sub_i64_uniform:5315; GFX1132: ; %bb.0: ; %entry5316; GFX1132-NEXT: s_load_b128 s[0:3], s[4:5], 0x245317; GFX1132-NEXT: s_mov_b32 s6, exec_lo5318; GFX1132-NEXT: s_mov_b32 s4, exec_lo5319; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, s6, 05320; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr15321; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5322; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v25323; GFX1132-NEXT: s_cbranch_execz .LBB13_25324; GFX1132-NEXT: ; %bb.1:5325; GFX1132-NEXT: s_bcnt1_i32_b32 s5, s65326; GFX1132-NEXT: v_mov_b32_e32 v3, 05327; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5328; GFX1132-NEXT: s_mul_i32 s6, s3, s55329; GFX1132-NEXT: s_mul_hi_u32 s7, s2, s55330; GFX1132-NEXT: s_mul_i32 s5, s2, s55331; GFX1132-NEXT: s_add_i32 s7, s7, s65332; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5333; GFX1132-NEXT: v_dual_mov_b32 v0, s5 :: v_dual_mov_b32 v1, s75334; GFX1132-NEXT: ds_sub_rtn_u64 v[0:1], v3, v[0:1]5335; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5336; GFX1132-NEXT: buffer_gl0_inv5337; GFX1132-NEXT: .LBB13_2:5338; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s45339; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5340; GFX1132-NEXT: v_mad_u64_u32 v[3:4], null, s2, v2, 05341; GFX1132-NEXT: v_readfirstlane_b32 s2, v05342; GFX1132-NEXT: v_readfirstlane_b32 s4, v15343; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)5344; GFX1132-NEXT: v_mad_u64_u32 v[5:6], null, s3, v2, v[4:5]5345; GFX1132-NEXT: v_sub_co_u32 v0, vcc_lo, s2, v35346; GFX1132-NEXT: s_mov_b32 s3, 0x310160005347; GFX1132-NEXT: s_mov_b32 s2, -15348; GFX1132-NEXT: v_sub_co_ci_u32_e64 v1, null, s4, v5, vcc_lo5349; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 05350; GFX1132-NEXT: s_endpgm5351entry:5352 %old = atomicrmw sub ptr addrspace(3) @local_var64, i64 %subitive acq_rel5353 store i64 %old, ptr addrspace(1) %out5354 ret void5355}5356 5357define amdgpu_kernel void @sub_i64_varying(ptr addrspace(1) %out) {5358; GFX7LESS_ITERATIVE-LABEL: sub_i64_varying:5359; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry5360; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec5361; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 05362; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05363; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr25364; GFX7LESS_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5365; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15366; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]5367; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s65368; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s65369; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s65370; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m05371; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m05372; GFX7LESS_ITERATIVE-NEXT: s_add_u32 s0, s0, s85373; GFX7LESS_ITERATIVE-NEXT: s_addc_u32 s1, s1, s75374; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s65375; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]5376; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[2:3], 05377; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]5378; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB14_15379; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5380; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 05381; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v05382; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05383; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr45384; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc5385; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]5386; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45387; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:5388; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 05389; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s15390; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s05391; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -15392; GFX7LESS_ITERATIVE-NEXT: ds_sub_rtn_u64 v[3:4], v0, v[3:4]5393; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5394; GFX7LESS_ITERATIVE-NEXT: .LBB14_4:5395; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]5396; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x95397; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0005398; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -15399; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v45400; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v35401; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s45402; GFX7LESS_ITERATIVE-NEXT: v_sub_i32_e32 v0, vcc, s5, v15403; GFX7LESS_ITERATIVE-NEXT: v_subb_u32_e32 v1, vcc, v3, v2, vcc5404; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5405; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05406; GFX7LESS_ITERATIVE-NEXT: s_endpgm5407;5408; GFX8_ITERATIVE-LABEL: sub_i64_varying:5409; GFX8_ITERATIVE: ; %bb.0: ; %entry5410; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec5411; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 05412; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05413; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr25414; GFX8_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5415; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15416; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]5417; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s65418; GFX8_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s65419; GFX8_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s65420; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m05421; GFX8_ITERATIVE-NEXT: s_add_u32 s0, s0, s85422; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m05423; GFX8_ITERATIVE-NEXT: s_addc_u32 s1, s1, s75424; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s65425; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]5426; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB14_15427; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5428; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05429; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05430; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05431; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr45432; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc5433; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]5434; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45435; GFX8_ITERATIVE-NEXT: ; %bb.3:5436; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s15437; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 05438; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s05439; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -15440; GFX8_ITERATIVE-NEXT: ds_sub_rtn_u64 v[3:4], v0, v[3:4]5441; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5442; GFX8_ITERATIVE-NEXT: .LBB14_4:5443; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]5444; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245445; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v45446; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v35447; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s45448; GFX8_ITERATIVE-NEXT: v_sub_u32_e32 v0, vcc, s5, v15449; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0005450; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -15451; GFX8_ITERATIVE-NEXT: v_subb_u32_e32 v1, vcc, v3, v2, vcc5452; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5453; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05454; GFX8_ITERATIVE-NEXT: s_endpgm5455;5456; GFX9_ITERATIVE-LABEL: sub_i64_varying:5457; GFX9_ITERATIVE: ; %bb.0: ; %entry5458; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec5459; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 05460; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05461; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr25462; GFX9_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5463; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15464; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]5465; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s65466; GFX9_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s65467; GFX9_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s65468; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m05469; GFX9_ITERATIVE-NEXT: s_add_u32 s0, s0, s85470; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m05471; GFX9_ITERATIVE-NEXT: s_addc_u32 s1, s1, s75472; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s65473; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]5474; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB14_15475; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5476; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05477; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05478; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05479; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr45480; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc5481; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]5482; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45483; GFX9_ITERATIVE-NEXT: ; %bb.3:5484; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s15485; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 05486; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s05487; GFX9_ITERATIVE-NEXT: ds_sub_rtn_u64 v[3:4], v0, v[3:4]5488; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5489; GFX9_ITERATIVE-NEXT: .LBB14_4:5490; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]5491; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245492; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v45493; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v35494; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s45495; GFX9_ITERATIVE-NEXT: v_sub_co_u32_e32 v0, vcc, s5, v15496; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0005497; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -15498; GFX9_ITERATIVE-NEXT: v_subb_co_u32_e32 v1, vcc, v3, v2, vcc5499; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5500; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05501; GFX9_ITERATIVE-NEXT: s_endpgm5502;5503; GFX1064_ITERATIVE-LABEL: sub_i64_varying:5504; GFX1064_ITERATIVE: ; %bb.0: ; %entry5505; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 05506; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec5507; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05508; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr25509; GFX1064_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5510; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15511; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s6, s[2:3]5512; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v0, s65513; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v3, s65514; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s65515; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s65516; GFX1064_ITERATIVE-NEXT: s_add_u32 s0, s0, s75517; GFX1064_ITERATIVE-NEXT: s_addc_u32 s1, s1, s85518; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s65519; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]5520; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB14_15521; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5522; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05523; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr45524; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05525; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05526; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc5527; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]5528; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45529; GFX1064_ITERATIVE-NEXT: ; %bb.3:5530; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s15531; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 05532; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s05533; GFX1064_ITERATIVE-NEXT: ds_sub_rtn_u64 v[3:4], v0, v[3:4]5534; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5535; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv5536; GFX1064_ITERATIVE-NEXT: .LBB14_4:5537; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)5538; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]5539; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245540; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v35541; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v45542; GFX1064_ITERATIVE-NEXT: v_sub_co_u32 v0, vcc, s2, v15543; GFX1064_ITERATIVE-NEXT: v_sub_co_ci_u32_e32 v1, vcc, s3, v2, vcc5544; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160005545; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -15546; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5547; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05548; GFX1064_ITERATIVE-NEXT: s_endpgm5549;5550; GFX1032_ITERATIVE-LABEL: sub_i64_varying:5551; GFX1032_ITERATIVE: ; %bb.0: ; %entry5552; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 05553; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo5554; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05555; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr25556; GFX1032_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5557; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15558; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s25559; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s35560; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s35561; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s35562; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s35563; GFX1032_ITERATIVE-NEXT: s_add_u32 s0, s0, s65564; GFX1032_ITERATIVE-NEXT: s_addc_u32 s1, s1, s75565; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s35566; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s35567; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB14_15568; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5569; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05570; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr45571; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05572; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo5573; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s25574; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45575; GFX1032_ITERATIVE-NEXT: ; %bb.3:5576; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s15577; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 05578; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s05579; GFX1032_ITERATIVE-NEXT: ds_sub_rtn_u64 v[3:4], v0, v[3:4]5580; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5581; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv5582; GFX1032_ITERATIVE-NEXT: .LBB14_4:5583; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)5584; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s25585; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245586; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v35587; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v45588; GFX1032_ITERATIVE-NEXT: v_sub_co_u32 v0, vcc_lo, s2, v15589; GFX1032_ITERATIVE-NEXT: v_sub_co_ci_u32_e32 v1, vcc_lo, s3, v2, vcc_lo5590; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160005591; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -15592; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5593; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05594; GFX1032_ITERATIVE-NEXT: s_endpgm5595;5596; GFX1164_ITERATIVE-LABEL: sub_i64_varying:5597; GFX1164_ITERATIVE: ; %bb.0: ; %entry5598; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 05599; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v05600; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec5601; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05602; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr15603; GFX1164_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5604; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15605; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s6, s[2:3]5606; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)5607; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s65608; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v2, s65609; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s65610; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s65611; GFX1164_ITERATIVE-NEXT: s_add_u32 s0, s0, s75612; GFX1164_ITERATIVE-NEXT: s_addc_u32 s1, s1, s85613; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s65614; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5615; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[6:7]5616; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB14_15617; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5618; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 05619; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5620; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v25621; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v25622; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr35623; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc5624; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5625; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]5626; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45627; GFX1164_ITERATIVE-NEXT: ; %bb.3:5628; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s15629; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 05630; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s05631; GFX1164_ITERATIVE-NEXT: ds_sub_rtn_u64 v[2:3], v4, v[2:3]5632; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5633; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv5634; GFX1164_ITERATIVE-NEXT: .LBB14_4:5635; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]5636; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x245637; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v25638; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v35639; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5640; GFX1164_ITERATIVE-NEXT: v_sub_co_u32 v0, vcc, s2, v05641; GFX1164_ITERATIVE-NEXT: v_sub_co_ci_u32_e64 v1, null, s3, v1, vcc5642; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160005643; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -15644; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5645; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 05646; GFX1164_ITERATIVE-NEXT: s_endpgm5647;5648; GFX1132_ITERATIVE-LABEL: sub_i64_varying:5649; GFX1132_ITERATIVE: ; %bb.0: ; %entry5650; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v05651; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo5652; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], 05653; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr15654; GFX1132_ITERATIVE-NEXT: .LBB14_1: ; %ComputeLoop5655; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=15656; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s25657; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)5658; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s35659; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s35660; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s35661; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s35662; GFX1132_ITERATIVE-NEXT: s_add_u32 s0, s0, s65663; GFX1132_ITERATIVE-NEXT: s_addc_u32 s1, s1, s75664; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s35665; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5666; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s35667; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB14_15668; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd5669; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 05670; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5671; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v25672; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr35673; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo5674; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s25675; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB14_45676; GFX1132_ITERATIVE-NEXT: ; %bb.3:5677; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s15678; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s05679; GFX1132_ITERATIVE-NEXT: ds_sub_rtn_u64 v[2:3], v4, v[2:3]5680; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5681; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv5682; GFX1132_ITERATIVE-NEXT: .LBB14_4:5683; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s25684; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x245685; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v25686; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v35687; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5688; GFX1132_ITERATIVE-NEXT: v_sub_co_u32 v0, vcc_lo, s2, v05689; GFX1132_ITERATIVE-NEXT: v_sub_co_ci_u32_e64 v1, null, s3, v1, vcc_lo5690; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160005691; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -15692; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)5693; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 05694; GFX1132_ITERATIVE-NEXT: s_endpgm5695;5696; GFX7LESS_DPP-LABEL: sub_i64_varying:5697; GFX7LESS_DPP: ; %bb.0: ; %entry5698; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x95699; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 05700; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -15701; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)5702; GFX7LESS_DPP-NEXT: ds_sub_rtn_u64 v[0:1], v1, v[0:1]5703; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)5704; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0005705; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -15706; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 05707; GFX7LESS_DPP-NEXT: s_endpgm5708;5709; GFX8_DPP-LABEL: sub_i64_varying:5710; GFX8_DPP: ; %bb.0: ; %entry5711; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 05712; GFX8_DPP-NEXT: v_mov_b32_e32 v7, 05713; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v55714; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -15715; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]5716; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05717; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]5718; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05719; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf5720; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v45721; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf5722; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05723; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc5724; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05725; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf5726; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v45727; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf5728; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05729; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc5730; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05731; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf5732; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v45733; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf5734; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05735; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc5736; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05737; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf5738; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v45739; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf5740; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05741; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc5742; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05743; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf5744; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v45745; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf5746; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05747; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc5748; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05749; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf5750; GFX8_DPP-NEXT: v_add_u32_e32 v2, vcc, v2, v45751; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf5752; GFX8_DPP-NEXT: v_addc_u32_e32 v1, vcc, v1, v3, vcc5753; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 05754; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 05755; GFX8_DPP-NEXT: v_readlane_b32 s3, v1, 635756; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 635757; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf5758; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf5759; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]5760; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v55761; GFX8_DPP-NEXT: ; implicit-def: $vgpr5_vgpr65762; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5763; GFX8_DPP-NEXT: s_cbranch_execz .LBB14_25764; GFX8_DPP-NEXT: ; %bb.1:5765; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s35766; GFX8_DPP-NEXT: v_mov_b32_e32 v5, s25767; GFX8_DPP-NEXT: s_mov_b32 m0, -15768; GFX8_DPP-NEXT: ds_sub_rtn_u64 v[5:6], v7, v[5:6]5769; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)5770; GFX8_DPP-NEXT: .LBB14_2:5771; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]5772; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245773; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v65774; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v55775; GFX8_DPP-NEXT: v_mov_b32_e32 v5, v35776; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v45777; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s45778; GFX8_DPP-NEXT: v_sub_u32_e32 v5, vcc, s5, v55779; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0005780; GFX8_DPP-NEXT: s_mov_b32 s2, -15781; GFX8_DPP-NEXT: v_subb_u32_e32 v6, vcc, v0, v6, vcc5782; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)5783; GFX8_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 05784; GFX8_DPP-NEXT: s_endpgm5785;5786; GFX9_DPP-LABEL: sub_i64_varying:5787; GFX9_DPP: ; %bb.0: ; %entry5788; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 05789; GFX9_DPP-NEXT: v_mov_b32_e32 v7, 05790; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v55791; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -15792; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]5793; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05794; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]5795; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05796; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf5797; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v45798; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf5799; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05800; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc5801; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05802; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf5803; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v45804; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf5805; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05806; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc5807; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05808; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf5809; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v45810; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf5811; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05812; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc5813; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05814; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf5815; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v45816; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf5817; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05818; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc5819; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05820; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf5821; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v45822; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf5823; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05824; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc5825; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05826; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf5827; GFX9_DPP-NEXT: v_add_co_u32_e32 v2, vcc, v2, v45828; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf5829; GFX9_DPP-NEXT: v_addc_co_u32_e32 v1, vcc, v1, v3, vcc5830; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 05831; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 05832; GFX9_DPP-NEXT: v_readlane_b32 s3, v1, 635833; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 635834; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf5835; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf5836; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]5837; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v55838; GFX9_DPP-NEXT: ; implicit-def: $vgpr5_vgpr65839; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5840; GFX9_DPP-NEXT: s_cbranch_execz .LBB14_25841; GFX9_DPP-NEXT: ; %bb.1:5842; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s35843; GFX9_DPP-NEXT: v_mov_b32_e32 v5, s25844; GFX9_DPP-NEXT: ds_sub_rtn_u64 v[5:6], v7, v[5:6]5845; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)5846; GFX9_DPP-NEXT: .LBB14_2:5847; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]5848; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245849; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v65850; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v55851; GFX9_DPP-NEXT: v_mov_b32_e32 v5, v35852; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v45853; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s45854; GFX9_DPP-NEXT: v_sub_co_u32_e32 v5, vcc, s5, v55855; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0005856; GFX9_DPP-NEXT: s_mov_b32 s2, -15857; GFX9_DPP-NEXT: v_subb_co_u32_e32 v6, vcc, v0, v6, vcc5858; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)5859; GFX9_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 05860; GFX9_DPP-NEXT: s_endpgm5861;5862; GFX1064_DPP-LABEL: sub_i64_varying:5863; GFX1064_DPP: ; %bb.0: ; %entry5864; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -15865; GFX1064_DPP-NEXT: v_mov_b32_e32 v1, 05866; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]5867; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v3, 0, 0, s[0:1]5868; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 05869; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 05870; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 05871; GFX1064_DPP-NEXT: v_mov_b32_dpp v1, v2 row_shr:1 row_mask:0xf bank_mask:0xf5872; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, 05873; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v3 row_shr:1 row_mask:0xf bank_mask:0xf5874; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, 05875; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v2, v15876; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v3, v4, vcc5877; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 05878; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:2 row_mask:0xf bank_mask:0xf5879; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 05880; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:2 row_mask:0xf bank_mask:0xf5881; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v65882; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc5883; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 05884; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:4 row_mask:0xf bank_mask:0xf5885; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 05886; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v2 row_shr:4 row_mask:0xf bank_mask:0xf5887; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v45888; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v3, vcc5889; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 05890; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:8 row_mask:0xf bank_mask:0xf5891; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:8 row_mask:0xf bank_mask:0xf5892; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v65893; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc5894; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 05895; GFX1064_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -15896; GFX1064_DPP-NEXT: v_permlanex16_b32 v6, v2, -1, -15897; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf5898; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf5899; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v35900; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc5901; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 05902; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 315903; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 05904; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 315905; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s25906; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, s35907; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf5908; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf5909; GFX1064_DPP-NEXT: v_add_co_u32 v1, vcc, v1, v35910; GFX1064_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc, v2, v5, vcc5911; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]5912; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05913; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -15914; GFX1064_DPP-NEXT: v_mov_b32_dpp v7, v1 row_shr:1 row_mask:0xf bank_mask:0xf5915; GFX1064_DPP-NEXT: v_mov_b32_dpp v8, v2 row_shr:1 row_mask:0xf bank_mask:0xf5916; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 155917; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 155918; GFX1064_DPP-NEXT: v_readlane_b32 s6, v2, 315919; GFX1064_DPP-NEXT: v_readlane_b32 s7, v1, 315920; GFX1064_DPP-NEXT: v_readlane_b32 s8, v1, 475921; GFX1064_DPP-NEXT: v_writelane_b32 v8, s2, 165922; GFX1064_DPP-NEXT: v_writelane_b32 v7, s3, 165923; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 635924; GFX1064_DPP-NEXT: v_readlane_b32 s9, v2, 475925; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 635926; GFX1064_DPP-NEXT: v_writelane_b32 v8, s6, 325927; GFX1064_DPP-NEXT: v_writelane_b32 v7, s7, 325928; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]5929; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v9, exec_hi, v05930; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 05931; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -15932; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]5933; GFX1064_DPP-NEXT: v_writelane_b32 v8, s9, 485934; GFX1064_DPP-NEXT: v_writelane_b32 v7, s8, 485935; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]5936; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v95937; GFX1064_DPP-NEXT: s_mov_b32 s2, -15938; GFX1064_DPP-NEXT: ; implicit-def: $vgpr9_vgpr105939; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc5940; GFX1064_DPP-NEXT: s_cbranch_execz .LBB14_25941; GFX1064_DPP-NEXT: ; %bb.1:5942; GFX1064_DPP-NEXT: v_mov_b32_e32 v10, s15943; GFX1064_DPP-NEXT: v_mov_b32_e32 v9, s05944; GFX1064_DPP-NEXT: ds_sub_rtn_u64 v[9:10], v0, v[9:10]5945; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)5946; GFX1064_DPP-NEXT: buffer_gl0_inv5947; GFX1064_DPP-NEXT: .LBB14_2:5948; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)5949; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]5950; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245951; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v95952; GFX1064_DPP-NEXT: v_mov_b32_e32 v11, v75953; GFX1064_DPP-NEXT: v_mov_b32_e32 v12, v85954; GFX1064_DPP-NEXT: s_mov_b32 null, 05955; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v105956; GFX1064_DPP-NEXT: v_sub_co_u32 v9, vcc, s3, v115957; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160005958; GFX1064_DPP-NEXT: v_sub_co_ci_u32_e32 v10, vcc, s4, v12, vcc5959; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)5960; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[9:10], off, s[0:3], 05961; GFX1064_DPP-NEXT: s_endpgm5962;5963; GFX1032_DPP-LABEL: sub_i64_varying:5964; GFX1032_DPP: ; %bb.0: ; %entry5965; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -15966; GFX1032_DPP-NEXT: v_mov_b32_e32 v1, 05967; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s25968; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v3, 0, 0, s25969; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 05970; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 05971; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 05972; GFX1032_DPP-NEXT: v_mov_b32_dpp v1, v2 row_shr:1 row_mask:0xf bank_mask:0xf5973; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, 05974; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v3 row_shr:1 row_mask:0xf bank_mask:0xf5975; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, 05976; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v2, v15977; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v3, v4, vcc_lo5978; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 05979; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:2 row_mask:0xf bank_mask:0xf5980; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 05981; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:2 row_mask:0xf bank_mask:0xf5982; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v65983; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo5984; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 05985; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:4 row_mask:0xf bank_mask:0xf5986; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 05987; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v2 row_shr:4 row_mask:0xf bank_mask:0xf5988; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v45989; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v3, vcc_lo5990; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 05991; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:8 row_mask:0xf bank_mask:0xf5992; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:8 row_mask:0xf bank_mask:0xf5993; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v65994; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo5995; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 05996; GFX1032_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -15997; GFX1032_DPP-NEXT: v_permlanex16_b32 v6, v2, -1, -15998; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf5999; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6000; GFX1032_DPP-NEXT: v_add_co_u32 v1, vcc_lo, v1, v36001; GFX1032_DPP-NEXT: v_add_co_ci_u32_e32 v2, vcc_lo, v2, v5, vcc_lo6002; GFX1032_DPP-NEXT: v_readlane_b32 s3, v1, 156003; GFX1032_DPP-NEXT: v_readlane_b32 s0, v1, 316004; GFX1032_DPP-NEXT: v_readlane_b32 s1, v2, 316005; GFX1032_DPP-NEXT: v_mov_b32_dpp v7, v1 row_shr:1 row_mask:0xf bank_mask:0xf6006; GFX1032_DPP-NEXT: v_mov_b32_dpp v8, v2 row_shr:1 row_mask:0xf bank_mask:0xf6007; GFX1032_DPP-NEXT: v_readlane_b32 s6, v2, 156008; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s26009; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v9, exec_lo, 06010; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 06011; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -16012; GFX1032_DPP-NEXT: v_writelane_b32 v8, s6, 166013; GFX1032_DPP-NEXT: v_writelane_b32 v7, s3, 166014; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s26015; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v96016; GFX1032_DPP-NEXT: s_mov_b32 s2, -16017; GFX1032_DPP-NEXT: ; implicit-def: $vgpr9_vgpr106018; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo6019; GFX1032_DPP-NEXT: s_cbranch_execz .LBB14_26020; GFX1032_DPP-NEXT: ; %bb.1:6021; GFX1032_DPP-NEXT: v_mov_b32_e32 v10, s16022; GFX1032_DPP-NEXT: v_mov_b32_e32 v9, s06023; GFX1032_DPP-NEXT: ds_sub_rtn_u64 v[9:10], v0, v[9:10]6024; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)6025; GFX1032_DPP-NEXT: buffer_gl0_inv6026; GFX1032_DPP-NEXT: .LBB14_2:6027; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)6028; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s36029; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246030; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v96031; GFX1032_DPP-NEXT: v_mov_b32_e32 v11, v76032; GFX1032_DPP-NEXT: v_mov_b32_e32 v12, v86033; GFX1032_DPP-NEXT: s_mov_b32 null, 06034; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v106035; GFX1032_DPP-NEXT: v_sub_co_u32 v9, vcc_lo, s3, v116036; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160006037; GFX1032_DPP-NEXT: v_sub_co_ci_u32_e32 v10, vcc_lo, s4, v12, vcc_lo6038; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)6039; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[9:10], off, s[0:3], 06040; GFX1032_DPP-NEXT: s_endpgm6041;6042; GFX1164_DPP-LABEL: sub_i64_varying:6043; GFX1164_DPP: ; %bb.0: ; %entry6044; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v06045; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16046; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)6047; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]6048; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, 06049; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s[0:1]6050; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 06051; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, 06052; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6053; GFX1164_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:1 row_mask:0xf bank_mask:0xf6054; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:16055; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)6056; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc6057; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:16058; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)6059; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, 06060; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6061; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:2 row_mask:0xf bank_mask:0xf6062; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc6063; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc, v3, v3 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:16064; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)6065; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 06066; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6067; GFX1164_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:4 row_mask:0xf bank_mask:0xf6068; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc6069; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v3, v3 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:16070; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)6071; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 06072; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6073; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:8 row_mask:0xf bank_mask:0xf6074; GFX1164_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -16075; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6076; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc6077; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v5, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6078; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)6079; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 06080; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6081; GFX1164_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -16082; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6083; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6084; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v3, vcc6085; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 06086; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 316087; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6088; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s26089; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 316090; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf6091; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)6092; GFX1164_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc, v2, s2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf6093; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)6094; GFX1164_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v3, vcc6095; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]6096; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6097; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06098; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16099; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)6100; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf6101; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 156102; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf6103; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 156104; GFX1164_DPP-NEXT: v_readlane_b32 s6, v2, 316105; GFX1164_DPP-NEXT: v_readlane_b32 s7, v1, 316106; GFX1164_DPP-NEXT: v_writelane_b32 v5, s2, 166107; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 636108; GFX1164_DPP-NEXT: v_writelane_b32 v6, s3, 166109; GFX1164_DPP-NEXT: v_readlane_b32 s8, v2, 476110; GFX1164_DPP-NEXT: v_readlane_b32 s9, v1, 476111; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 636112; GFX1164_DPP-NEXT: v_writelane_b32 v5, s6, 326113; GFX1164_DPP-NEXT: v_writelane_b32 v6, s7, 326114; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]6115; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6116; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v06117; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 06118; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -16119; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]6120; GFX1164_DPP-NEXT: v_writelane_b32 v5, s8, 486121; GFX1164_DPP-NEXT: v_writelane_b32 v6, s9, 486122; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]6123; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v76124; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)6125; GFX1164_DPP-NEXT: s_mov_b32 s2, -16126; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr86127; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc6128; GFX1164_DPP-NEXT: s_cbranch_execz .LBB14_26129; GFX1164_DPP-NEXT: ; %bb.1:6130; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s16131; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s06132; GFX1164_DPP-NEXT: ds_sub_rtn_u64 v[7:8], v0, v[7:8]6133; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)6134; GFX1164_DPP-NEXT: buffer_gl0_inv6135; GFX1164_DPP-NEXT: .LBB14_2:6136; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]6137; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246138; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v76139; GFX1164_DPP-NEXT: v_mov_b32_e32 v9, v56140; GFX1164_DPP-NEXT: v_mov_b32_e32 v10, v66141; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v86142; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)6143; GFX1164_DPP-NEXT: v_sub_co_u32 v7, vcc, s3, v96144; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160006145; GFX1164_DPP-NEXT: v_sub_co_ci_u32_e64 v8, null, s4, v10, vcc6146; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)6147; GFX1164_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 06148; GFX1164_DPP-NEXT: s_endpgm6149;6150; GFX1132_DPP-LABEL: sub_i64_varying:6151; GFX1132_DPP: ; %bb.0: ; %entry6152; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v06153; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -16154; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)6155; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s26156; GFX1132_DPP-NEXT: v_mov_b32_e32 v2, 06157; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s26158; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v7, 06159; GFX1132_DPP-NEXT: v_mov_b32_e32 v6, 06160; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6161; GFX1132_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:1 row_mask:0xf bank_mask:0xf6162; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:16163; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)6164; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc_lo6165; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:16166; GFX1132_DPP-NEXT: v_mov_b32_e32 v2, 06167; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)6168; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:2 row_mask:0xf bank_mask:0xf6169; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo6170; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)6171; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v3, vcc_lo, v3, v3 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:16172; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 06173; GFX1132_DPP-NEXT: v_mov_b32_dpp v2, v1 row_shr:4 row_mask:0xf bank_mask:0xf6174; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_4)6175; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v2, vcc_lo6176; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc_lo, v3, v3 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:16177; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 06178; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6179; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:8 row_mask:0xf bank_mask:0xf6180; GFX1132_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -16181; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6182; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo6183; GFX1132_DPP-NEXT: v_add_co_u32_e64_dpp v2, vcc_lo, v5, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6184; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6185; GFX1132_DPP-NEXT: v_permlanex16_b32 v4, v1, -1, -16186; GFX1132_DPP-NEXT: v_readlane_b32 s3, v2, 156187; GFX1132_DPP-NEXT: v_readlane_b32 s0, v2, 316188; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:1 row_mask:0xf bank_mask:0xf6189; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)6190; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v4 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6191; GFX1132_DPP-NEXT: v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo6192; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)6193; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 316194; GFX1132_DPP-NEXT: v_mov_b32_dpp v7, v1 row_shr:1 row_mask:0xf bank_mask:0xf6195; GFX1132_DPP-NEXT: v_readlane_b32 s6, v1, 156196; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s26197; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v8, exec_lo, 06198; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 06199; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -16200; GFX1132_DPP-NEXT: v_writelane_b32 v6, s3, 166201; GFX1132_DPP-NEXT: v_writelane_b32 v7, s6, 166202; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s26203; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v86204; GFX1132_DPP-NEXT: s_mov_b32 s2, -16205; GFX1132_DPP-NEXT: ; implicit-def: $vgpr8_vgpr96206; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo6207; GFX1132_DPP-NEXT: s_cbranch_execz .LBB14_26208; GFX1132_DPP-NEXT: ; %bb.1:6209; GFX1132_DPP-NEXT: v_dual_mov_b32 v9, s1 :: v_dual_mov_b32 v8, s06210; GFX1132_DPP-NEXT: ds_sub_rtn_u64 v[8:9], v0, v[8:9]6211; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)6212; GFX1132_DPP-NEXT: buffer_gl0_inv6213; GFX1132_DPP-NEXT: .LBB14_2:6214; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s36215; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246216; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v86217; GFX1132_DPP-NEXT: v_mov_b32_e32 v10, v66218; GFX1132_DPP-NEXT: v_mov_b32_e32 v11, v76219; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v96220; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3)6221; GFX1132_DPP-NEXT: v_sub_co_u32 v8, vcc_lo, s3, v106222; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160006223; GFX1132_DPP-NEXT: v_sub_co_ci_u32_e64 v9, null, s4, v11, vcc_lo6224; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)6225; GFX1132_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 06226; GFX1132_DPP-NEXT: s_endpgm6227entry:6228 %lane = call i32 @llvm.amdgcn.workitem.id.x()6229 %zext = zext i32 %lane to i646230 %old = atomicrmw sub ptr addrspace(3) @local_var64, i64 %zext acq_rel6231 store i64 %old, ptr addrspace(1) %out6232 ret void6233}6234 6235define amdgpu_kernel void @and_i32_varying(ptr addrspace(1) %out) {6236; GFX7LESS_ITERATIVE-LABEL: and_i32_varying:6237; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry6238; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec6239; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -16240; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr16241; GFX7LESS_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6242; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16243; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]6244; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s36245; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s36246; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m06247; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s36248; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]6249; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 06250; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]6251; GFX7LESS_ITERATIVE-NEXT: s_and_b32 s2, s2, s86252; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB15_16253; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6254; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 06255; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v06256; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06257; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr06258; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc6259; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6260; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46261; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:6262; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06263; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s26264; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -16265; GFX7LESS_ITERATIVE-NEXT: ds_and_rtn_b32 v0, v0, v26266; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6267; GFX7LESS_ITERATIVE-NEXT: .LBB15_4:6268; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]6269; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x96270; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0006271; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -16272; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v06273; GFX7LESS_ITERATIVE-NEXT: v_and_b32_e32 v0, s4, v16274; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6275; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 06276; GFX7LESS_ITERATIVE-NEXT: s_endpgm6277;6278; GFX8_ITERATIVE-LABEL: and_i32_varying:6279; GFX8_ITERATIVE: ; %bb.0: ; %entry6280; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec6281; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -16282; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr16283; GFX8_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6284; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16285; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]6286; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s36287; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s36288; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m06289; GFX8_ITERATIVE-NEXT: s_and_b32 s2, s2, s66290; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s36291; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]6292; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB15_16293; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6294; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06295; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06296; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06297; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr06298; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc6299; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6300; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46301; GFX8_ITERATIVE-NEXT: ; %bb.3:6302; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06303; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s26304; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -16305; GFX8_ITERATIVE-NEXT: ds_and_rtn_b32 v0, v0, v26306; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6307; GFX8_ITERATIVE-NEXT: .LBB15_4:6308; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]6309; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246310; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v06311; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0006312; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -16313; GFX8_ITERATIVE-NEXT: v_and_b32_e32 v0, s4, v16314; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6315; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 06316; GFX8_ITERATIVE-NEXT: s_endpgm6317;6318; GFX9_ITERATIVE-LABEL: and_i32_varying:6319; GFX9_ITERATIVE: ; %bb.0: ; %entry6320; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec6321; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -16322; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr16323; GFX9_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6324; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16325; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]6326; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s36327; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s36328; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m06329; GFX9_ITERATIVE-NEXT: s_and_b32 s2, s2, s66330; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s36331; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]6332; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB15_16333; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6334; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06335; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06336; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06337; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr06338; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc6339; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6340; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46341; GFX9_ITERATIVE-NEXT: ; %bb.3:6342; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06343; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s26344; GFX9_ITERATIVE-NEXT: ds_and_rtn_b32 v0, v0, v26345; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6346; GFX9_ITERATIVE-NEXT: .LBB15_4:6347; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]6348; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246349; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v06350; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0006351; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -16352; GFX9_ITERATIVE-NEXT: v_and_b32_e32 v0, s4, v16353; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6354; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 06355; GFX9_ITERATIVE-NEXT: s_endpgm6356;6357; GFX1064_ITERATIVE-LABEL: and_i32_varying:6358; GFX1064_ITERATIVE: ; %bb.0: ; %entry6359; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec6360; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -16361; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr16362; GFX1064_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6363; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16364; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]6365; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s36366; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s36367; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s36368; GFX1064_ITERATIVE-NEXT: s_and_b32 s2, s2, s86369; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]6370; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB15_16371; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6372; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06373; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06374; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06375; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr06376; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc6377; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6378; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46379; GFX1064_ITERATIVE-NEXT: ; %bb.3:6380; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06381; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s26382; GFX1064_ITERATIVE-NEXT: ds_and_rtn_b32 v0, v0, v26383; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6384; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv6385; GFX1064_ITERATIVE-NEXT: .LBB15_4:6386; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)6387; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]6388; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246389; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v06390; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160006391; GFX1064_ITERATIVE-NEXT: v_and_b32_e32 v0, s2, v16392; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -16393; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6394; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 06395; GFX1064_ITERATIVE-NEXT: s_endpgm6396;6397; GFX1032_ITERATIVE-LABEL: and_i32_varying:6398; GFX1032_ITERATIVE: ; %bb.0: ; %entry6399; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo6400; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, -16401; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr16402; GFX1032_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6403; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16404; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s16405; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s26406; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s26407; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s26408; GFX1032_ITERATIVE-NEXT: s_and_b32 s0, s0, s36409; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s26410; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB15_16411; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6412; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06413; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06414; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr06415; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo6416; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s16417; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46418; GFX1032_ITERATIVE-NEXT: ; %bb.3:6419; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06420; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s06421; GFX1032_ITERATIVE-NEXT: ds_and_rtn_b32 v0, v0, v26422; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6423; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv6424; GFX1032_ITERATIVE-NEXT: .LBB15_4:6425; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)6426; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s16427; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246428; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v06429; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160006430; GFX1032_ITERATIVE-NEXT: v_and_b32_e32 v0, s2, v16431; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -16432; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6433; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 06434; GFX1032_ITERATIVE-NEXT: s_endpgm6435;6436; GFX1164_ITERATIVE-LABEL: and_i32_varying:6437; GFX1164_ITERATIVE: ; %bb.0: ; %entry6438; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v06439; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec6440; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -16441; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr06442; GFX1164_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6443; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16444; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]6445; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)6446; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s36447; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s36448; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s36449; GFX1164_ITERATIVE-NEXT: s_and_b32 s2, s2, s86450; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]6451; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB15_16452; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6453; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 06454; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6455; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v16456; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v16457; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr16458; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc6459; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6460; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6461; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46462; GFX1164_ITERATIVE-NEXT: ; %bb.3:6463; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 06464; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s26465; GFX1164_ITERATIVE-NEXT: ds_and_rtn_b32 v1, v1, v26466; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6467; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv6468; GFX1164_ITERATIVE-NEXT: .LBB15_4:6469; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]6470; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x246471; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v16472; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160006473; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v0, s2, v06474; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -16475; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6476; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 06477; GFX1164_ITERATIVE-NEXT: s_endpgm6478;6479; GFX1132_ITERATIVE-LABEL: and_i32_varying:6480; GFX1132_ITERATIVE: ; %bb.0: ; %entry6481; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v06482; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo6483; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, -16484; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr06485; GFX1132_ITERATIVE-NEXT: .LBB15_1: ; %ComputeLoop6486; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16487; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s16488; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)6489; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s26490; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s26491; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s26492; GFX1132_ITERATIVE-NEXT: s_and_b32 s0, s0, s36493; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s26494; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB15_16495; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6496; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 06497; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6498; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v16499; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr16500; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo6501; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s16502; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB15_46503; GFX1132_ITERATIVE-NEXT: ; %bb.3:6504; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s06505; GFX1132_ITERATIVE-NEXT: ds_and_rtn_b32 v1, v1, v26506; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6507; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv6508; GFX1132_ITERATIVE-NEXT: .LBB15_4:6509; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s16510; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x246511; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v16512; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160006513; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v0, s2, v06514; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -16515; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6516; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 06517; GFX1132_ITERATIVE-NEXT: s_endpgm6518;6519; GFX7LESS_DPP-LABEL: and_i32_varying:6520; GFX7LESS_DPP: ; %bb.0: ; %entry6521; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x96522; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 06523; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -16524; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)6525; GFX7LESS_DPP-NEXT: ds_and_rtn_b32 v0, v1, v06526; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)6527; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0006528; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -16529; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 06530; GFX7LESS_DPP-NEXT: s_endpgm6531;6532; GFX8_DPP-LABEL: and_i32_varying:6533; GFX8_DPP: ; %bb.0: ; %entry6534; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 06535; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v36536; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16537; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]6538; GFX8_DPP-NEXT: v_mov_b32_e32 v1, -16539; GFX8_DPP-NEXT: s_nop 06540; GFX8_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf6541; GFX8_DPP-NEXT: s_nop 16542; GFX8_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf6543; GFX8_DPP-NEXT: s_nop 16544; GFX8_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf6545; GFX8_DPP-NEXT: s_nop 16546; GFX8_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf6547; GFX8_DPP-NEXT: s_nop 16548; GFX8_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf6549; GFX8_DPP-NEXT: s_nop 16550; GFX8_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf6551; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 636552; GFX8_DPP-NEXT: s_nop 06553; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf6554; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]6555; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v36556; GFX8_DPP-NEXT: ; implicit-def: $vgpr06557; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6558; GFX8_DPP-NEXT: s_cbranch_execz .LBB15_26559; GFX8_DPP-NEXT: ; %bb.1:6560; GFX8_DPP-NEXT: v_mov_b32_e32 v0, 06561; GFX8_DPP-NEXT: v_mov_b32_e32 v3, s26562; GFX8_DPP-NEXT: s_mov_b32 m0, -16563; GFX8_DPP-NEXT: ds_and_rtn_b32 v0, v0, v36564; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)6565; GFX8_DPP-NEXT: .LBB15_2:6566; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]6567; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246568; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v06569; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v16570; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0006571; GFX8_DPP-NEXT: s_mov_b32 s2, -16572; GFX8_DPP-NEXT: v_and_b32_e32 v0, s4, v06573; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)6574; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 06575; GFX8_DPP-NEXT: s_endpgm6576;6577; GFX9_DPP-LABEL: and_i32_varying:6578; GFX9_DPP: ; %bb.0: ; %entry6579; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 06580; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v36581; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16582; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]6583; GFX9_DPP-NEXT: v_mov_b32_e32 v1, -16584; GFX9_DPP-NEXT: s_nop 06585; GFX9_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf6586; GFX9_DPP-NEXT: s_nop 16587; GFX9_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf6588; GFX9_DPP-NEXT: s_nop 16589; GFX9_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf6590; GFX9_DPP-NEXT: s_nop 16591; GFX9_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf6592; GFX9_DPP-NEXT: s_nop 16593; GFX9_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf6594; GFX9_DPP-NEXT: s_nop 16595; GFX9_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf6596; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 636597; GFX9_DPP-NEXT: s_nop 06598; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf6599; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]6600; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v36601; GFX9_DPP-NEXT: ; implicit-def: $vgpr06602; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6603; GFX9_DPP-NEXT: s_cbranch_execz .LBB15_26604; GFX9_DPP-NEXT: ; %bb.1:6605; GFX9_DPP-NEXT: v_mov_b32_e32 v0, 06606; GFX9_DPP-NEXT: v_mov_b32_e32 v3, s26607; GFX9_DPP-NEXT: ds_and_rtn_b32 v0, v0, v36608; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)6609; GFX9_DPP-NEXT: .LBB15_2:6610; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]6611; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246612; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v06613; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v16614; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0006615; GFX9_DPP-NEXT: s_mov_b32 s2, -16616; GFX9_DPP-NEXT: v_and_b32_e32 v0, s4, v06617; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)6618; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 06619; GFX9_DPP-NEXT: s_endpgm6620;6621; GFX1064_DPP-LABEL: and_i32_varying:6622; GFX1064_DPP: ; %bb.0: ; %entry6623; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16624; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]6625; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -16626; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf6627; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf6628; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf6629; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf6630; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -16631; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6632; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 316633; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s26634; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf6635; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf6636; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 156637; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 316638; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 166639; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]6640; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06641; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16642; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 476643; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 636644; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 326645; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]6646; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06647; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16648; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 486649; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]6650; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06651; GFX1064_DPP-NEXT: s_mov_b32 s2, -16652; GFX1064_DPP-NEXT: ; implicit-def: $vgpr06653; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6654; GFX1064_DPP-NEXT: s_cbranch_execz .LBB15_26655; GFX1064_DPP-NEXT: ; %bb.1:6656; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 06657; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s66658; GFX1064_DPP-NEXT: ds_and_rtn_b32 v0, v0, v46659; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)6660; GFX1064_DPP-NEXT: buffer_gl0_inv6661; GFX1064_DPP-NEXT: .LBB15_2:6662; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)6663; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]6664; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246665; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v06666; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v36667; GFX1064_DPP-NEXT: v_and_b32_e32 v0, s3, v06668; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160006669; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)6670; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 06671; GFX1064_DPP-NEXT: s_endpgm6672;6673; GFX1032_DPP-LABEL: and_i32_varying:6674; GFX1032_DPP: ; %bb.0: ; %entry6675; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -16676; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s06677; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -16678; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf6679; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf6680; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf6681; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf6682; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -16683; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6684; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 156685; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 316686; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf6687; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s06688; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06689; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -16690; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 166691; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s06692; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06693; GFX1032_DPP-NEXT: s_mov_b32 s0, s26694; GFX1032_DPP-NEXT: s_mov_b32 s2, -16695; GFX1032_DPP-NEXT: ; implicit-def: $vgpr06696; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo6697; GFX1032_DPP-NEXT: s_cbranch_execz .LBB15_26698; GFX1032_DPP-NEXT: ; %bb.1:6699; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 06700; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, s06701; GFX1032_DPP-NEXT: ds_and_rtn_b32 v0, v0, v46702; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)6703; GFX1032_DPP-NEXT: buffer_gl0_inv6704; GFX1032_DPP-NEXT: .LBB15_2:6705; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)6706; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s16707; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246708; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v06709; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v36710; GFX1032_DPP-NEXT: v_and_b32_e32 v0, s3, v06711; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160006712; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)6713; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 06714; GFX1032_DPP-NEXT: s_endpgm6715;6716; GFX1164_DPP-LABEL: and_i32_varying:6717; GFX1164_DPP: ; %bb.0: ; %entry6718; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v06719; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16720; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)6721; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]6722; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -16723; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6724; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf6725; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf6726; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6727; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf6728; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf6729; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6730; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -16731; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6732; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6733; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 316734; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s26735; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6736; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf6737; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf6738; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 156739; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 316740; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6741; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 166742; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]6743; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06744; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16745; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)6746; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 476747; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 636748; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 326749; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]6750; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)6751; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06752; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -16753; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 486754; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]6755; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06756; GFX1164_DPP-NEXT: s_mov_b32 s2, -16757; GFX1164_DPP-NEXT: ; implicit-def: $vgpr06758; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6759; GFX1164_DPP-NEXT: s_cbranch_execz .LBB15_26760; GFX1164_DPP-NEXT: ; %bb.1:6761; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 06762; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s66763; GFX1164_DPP-NEXT: ds_and_rtn_b32 v0, v0, v46764; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)6765; GFX1164_DPP-NEXT: buffer_gl0_inv6766; GFX1164_DPP-NEXT: .LBB15_2:6767; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]6768; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246769; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v06770; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v36771; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6772; GFX1164_DPP-NEXT: v_and_b32_e32 v0, s3, v06773; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160006774; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)6775; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 06776; GFX1164_DPP-NEXT: s_endpgm6777;6778; GFX1132_DPP-LABEL: and_i32_varying:6779; GFX1132_DPP: ; %bb.0: ; %entry6780; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v06781; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -16782; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)6783; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s06784; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, -16785; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6786; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf6787; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf6788; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6789; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf6790; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf6791; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6792; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -16793; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf6794; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)6795; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 156796; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 316797; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf6798; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s06799; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06800; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -16801; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 166802; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s06803; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)6804; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06805; GFX1132_DPP-NEXT: s_mov_b32 s0, s26806; GFX1132_DPP-NEXT: s_mov_b32 s2, -16807; GFX1132_DPP-NEXT: ; implicit-def: $vgpr06808; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo6809; GFX1132_DPP-NEXT: s_cbranch_execz .LBB15_26810; GFX1132_DPP-NEXT: ; %bb.1:6811; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 06812; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, s06813; GFX1132_DPP-NEXT: ds_and_rtn_b32 v0, v0, v46814; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)6815; GFX1132_DPP-NEXT: buffer_gl0_inv6816; GFX1132_DPP-NEXT: .LBB15_2:6817; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s16818; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246819; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v06820; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v36821; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6822; GFX1132_DPP-NEXT: v_and_b32_e32 v0, s3, v06823; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160006824; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)6825; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 06826; GFX1132_DPP-NEXT: s_endpgm6827entry:6828 %lane = call i32 @llvm.amdgcn.workitem.id.x()6829 %old = atomicrmw and ptr addrspace(3) @local_var32, i32 %lane acq_rel6830 store i32 %old, ptr addrspace(1) %out6831 ret void6832}6833 6834define amdgpu_kernel void @and_i64_varying(ptr addrspace(1) %out) {6835; GFX7LESS_ITERATIVE-LABEL: and_i64_varying:6836; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry6837; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec6838; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 06839; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], -16840; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr26841; GFX7LESS_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop6842; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16843; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]6844; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s86845; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s86846; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s86847; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m06848; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m06849; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s86850; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[8:9]6851; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[8:9], s[2:3], 06852; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[8:9]6853; GFX7LESS_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]6854; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB16_16855; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6856; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 06857; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v06858; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06859; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr46860; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc6861; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]6862; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB16_46863; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:6864; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06865; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s16866; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s06867; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -16868; GFX7LESS_ITERATIVE-NEXT: ds_and_rtn_b64 v[3:4], v0, v[3:4]6869; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6870; GFX7LESS_ITERATIVE-NEXT: .LBB16_4:6871; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]6872; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x96873; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0006874; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -16875; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v46876; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v36877; GFX7LESS_ITERATIVE-NEXT: v_and_b32_e32 v2, s4, v26878; GFX7LESS_ITERATIVE-NEXT: v_and_b32_e32 v1, s5, v16879; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6880; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 06881; GFX7LESS_ITERATIVE-NEXT: s_endpgm6882;6883; GFX8_ITERATIVE-LABEL: and_i64_varying:6884; GFX8_ITERATIVE: ; %bb.0: ; %entry6885; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec6886; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 06887; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], -16888; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr26889; GFX8_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop6890; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16891; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]6892; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s86893; GFX8_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s86894; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s86895; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m06896; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m06897; GFX8_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]6898; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s86899; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]6900; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB16_16901; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6902; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06903; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06904; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06905; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr46906; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc6907; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]6908; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB16_46909; GFX8_ITERATIVE-NEXT: ; %bb.3:6910; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s16911; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06912; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s06913; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -16914; GFX8_ITERATIVE-NEXT: ds_and_rtn_b64 v[3:4], v0, v[3:4]6915; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6916; GFX8_ITERATIVE-NEXT: .LBB16_4:6917; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]6918; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246919; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v46920; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v36921; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0006922; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -16923; GFX8_ITERATIVE-NEXT: v_and_b32_e32 v2, s4, v26924; GFX8_ITERATIVE-NEXT: v_and_b32_e32 v1, s5, v16925; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6926; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 06927; GFX8_ITERATIVE-NEXT: s_endpgm6928;6929; GFX9_ITERATIVE-LABEL: and_i64_varying:6930; GFX9_ITERATIVE: ; %bb.0: ; %entry6931; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec6932; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 06933; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], -16934; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr26935; GFX9_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop6936; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16937; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]6938; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s86939; GFX9_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s86940; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s86941; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m06942; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m06943; GFX9_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]6944; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s86945; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]6946; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB16_16947; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6948; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06949; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06950; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06951; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr46952; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc6953; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]6954; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB16_46955; GFX9_ITERATIVE-NEXT: ; %bb.3:6956; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s16957; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 06958; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s06959; GFX9_ITERATIVE-NEXT: ds_and_rtn_b64 v[3:4], v0, v[3:4]6960; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6961; GFX9_ITERATIVE-NEXT: .LBB16_4:6962; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]6963; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246964; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v46965; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v36966; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0006967; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -16968; GFX9_ITERATIVE-NEXT: v_and_b32_e32 v2, s4, v26969; GFX9_ITERATIVE-NEXT: v_and_b32_e32 v1, s5, v16970; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)6971; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 06972; GFX9_ITERATIVE-NEXT: s_endpgm6973;6974; GFX1064_ITERATIVE-LABEL: and_i64_varying:6975; GFX1064_ITERATIVE: ; %bb.0: ; %entry6976; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 06977; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec6978; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], -16979; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr26980; GFX1064_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop6981; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=16982; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]6983; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s86984; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s86985; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s86986; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s86987; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s86988; GFX1064_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]6989; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[8:9]6990; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB16_16991; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd6992; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06993; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr46994; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06995; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06996; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc6997; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]6998; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB16_46999; GFX1064_ITERATIVE-NEXT: ; %bb.3:7000; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s17001; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07002; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s07003; GFX1064_ITERATIVE-NEXT: ds_and_rtn_b64 v[3:4], v0, v[3:4]7004; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7005; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv7006; GFX1064_ITERATIVE-NEXT: .LBB16_4:7007; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)7008; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]7009; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247010; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v47011; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v37012; GFX1064_ITERATIVE-NEXT: v_and_b32_e32 v2, s2, v27013; GFX1064_ITERATIVE-NEXT: v_and_b32_e32 v1, s3, v17014; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007015; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -17016; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7017; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 07018; GFX1064_ITERATIVE-NEXT: s_endpgm7019;7020; GFX1032_ITERATIVE-LABEL: and_i64_varying:7021; GFX1032_ITERATIVE: ; %bb.0: ; %entry7022; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 07023; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo7024; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], -17025; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr27026; GFX1032_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop7027; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17028; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s27029; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s37030; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s37031; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s37032; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s37033; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s37034; GFX1032_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]7035; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s37036; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB16_17037; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7038; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07039; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr47040; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07041; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo7042; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s27043; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB16_47044; GFX1032_ITERATIVE-NEXT: ; %bb.3:7045; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s17046; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07047; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s07048; GFX1032_ITERATIVE-NEXT: ds_and_rtn_b64 v[3:4], v0, v[3:4]7049; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7050; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv7051; GFX1032_ITERATIVE-NEXT: .LBB16_4:7052; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)7053; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s27054; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247055; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v47056; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v37057; GFX1032_ITERATIVE-NEXT: v_and_b32_e32 v2, s2, v27058; GFX1032_ITERATIVE-NEXT: v_and_b32_e32 v1, s3, v17059; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007060; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -17061; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7062; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 07063; GFX1032_ITERATIVE-NEXT: s_endpgm7064;7065; GFX1164_ITERATIVE-LABEL: and_i64_varying:7066; GFX1164_ITERATIVE: ; %bb.0: ; %entry7067; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 07068; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v07069; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec7070; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], -17071; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr17072; GFX1164_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop7073; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17074; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s8, s[2:3]7075; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7076; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s87077; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s87078; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s87079; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s87080; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s87081; GFX1164_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]7082; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[8:9]7083; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB16_17084; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7085; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07086; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7087; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v27088; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v27089; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr37090; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc7091; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7092; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]7093; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB16_47094; GFX1164_ITERATIVE-NEXT: ; %bb.3:7095; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s17096; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 07097; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s07098; GFX1164_ITERATIVE-NEXT: ds_and_rtn_b64 v[2:3], v4, v[2:3]7099; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7100; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv7101; GFX1164_ITERATIVE-NEXT: .LBB16_4:7102; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]7103; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x247104; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v37105; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v27106; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7107; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, s2, v17108; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v0, s3, v07109; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007110; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -17111; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7112; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 07113; GFX1164_ITERATIVE-NEXT: s_endpgm7114;7115; GFX1132_ITERATIVE-LABEL: and_i64_varying:7116; GFX1132_ITERATIVE: ; %bb.0: ; %entry7117; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v07118; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo7119; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], -17120; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr17121; GFX1132_ITERATIVE-NEXT: .LBB16_1: ; %ComputeLoop7122; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17123; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s27124; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)7125; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s37126; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s37127; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s37128; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s37129; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s37130; GFX1132_ITERATIVE-NEXT: s_and_b64 s[0:1], s[0:1], s[6:7]7131; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s37132; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB16_17133; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7134; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07135; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)7136; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v27137; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr37138; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo7139; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s27140; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB16_47141; GFX1132_ITERATIVE-NEXT: ; %bb.3:7142; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s17143; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s07144; GFX1132_ITERATIVE-NEXT: ds_and_rtn_b64 v[2:3], v4, v[2:3]7145; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7146; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv7147; GFX1132_ITERATIVE-NEXT: .LBB16_4:7148; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s27149; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x247150; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v37151; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v27152; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7153; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, s2, v17154; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v0, s3, v07155; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007156; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -17157; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7158; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 07159; GFX1132_ITERATIVE-NEXT: s_endpgm7160;7161; GFX7LESS_DPP-LABEL: and_i64_varying:7162; GFX7LESS_DPP: ; %bb.0: ; %entry7163; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97164; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 07165; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -17166; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)7167; GFX7LESS_DPP-NEXT: ds_and_rtn_b64 v[0:1], v1, v[0:1]7168; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)7169; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0007170; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -17171; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 07172; GFX7LESS_DPP-NEXT: s_endpgm7173;7174; GFX8_DPP-LABEL: and_i64_varying:7175; GFX8_DPP: ; %bb.0: ; %entry7176; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 07177; GFX8_DPP-NEXT: v_mov_b32_e32 v7, 07178; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v57179; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17180; GFX8_DPP-NEXT: v_cndmask_b32_e64 v3, -1, 0, s[0:1]7181; GFX8_DPP-NEXT: v_cndmask_b32_e64 v4, -1, v0, s[0:1]7182; GFX8_DPP-NEXT: v_mov_b32_e32 v1, -17183; GFX8_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:1 row_mask:0xf bank_mask:0xf7184; GFX8_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:1 row_mask:0xf bank_mask:0xf7185; GFX8_DPP-NEXT: v_mov_b32_e32 v2, -17186; GFX8_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:2 row_mask:0xf bank_mask:0xf7187; GFX8_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:2 row_mask:0xf bank_mask:0xf7188; GFX8_DPP-NEXT: s_nop 07189; GFX8_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:4 row_mask:0xf bank_mask:0xf7190; GFX8_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:4 row_mask:0xf bank_mask:0xf7191; GFX8_DPP-NEXT: s_nop 07192; GFX8_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:8 row_mask:0xf bank_mask:0xf7193; GFX8_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:8 row_mask:0xf bank_mask:0xf7194; GFX8_DPP-NEXT: s_nop 07195; GFX8_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_bcast:15 row_mask:0xa bank_mask:0xf7196; GFX8_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_bcast:15 row_mask:0xa bank_mask:0xf7197; GFX8_DPP-NEXT: s_nop 07198; GFX8_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_bcast:31 row_mask:0xc bank_mask:0xf7199; GFX8_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_bcast:31 row_mask:0xc bank_mask:0xf7200; GFX8_DPP-NEXT: v_readlane_b32 s3, v3, 637201; GFX8_DPP-NEXT: v_readlane_b32 s2, v4, 637202; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v3 wave_shr:1 row_mask:0xf bank_mask:0xf7203; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v4 wave_shr:1 row_mask:0xf bank_mask:0xf7204; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]7205; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v57206; GFX8_DPP-NEXT: ; implicit-def: $vgpr5_vgpr67207; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7208; GFX8_DPP-NEXT: s_cbranch_execz .LBB16_27209; GFX8_DPP-NEXT: ; %bb.1:7210; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s37211; GFX8_DPP-NEXT: v_mov_b32_e32 v5, s27212; GFX8_DPP-NEXT: s_mov_b32 m0, -17213; GFX8_DPP-NEXT: ds_and_rtn_b64 v[5:6], v7, v[5:6]7214; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)7215; GFX8_DPP-NEXT: .LBB16_2:7216; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]7217; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247218; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v67219; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v57220; GFX8_DPP-NEXT: v_mov_b32_e32 v5, v17221; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v27222; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0007223; GFX8_DPP-NEXT: s_mov_b32 s2, -17224; GFX8_DPP-NEXT: v_and_b32_e32 v6, s4, v67225; GFX8_DPP-NEXT: v_and_b32_e32 v5, s5, v57226; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)7227; GFX8_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 07228; GFX8_DPP-NEXT: s_endpgm7229;7230; GFX9_DPP-LABEL: and_i64_varying:7231; GFX9_DPP: ; %bb.0: ; %entry7232; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 07233; GFX9_DPP-NEXT: v_mov_b32_e32 v7, 07234; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v57235; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17236; GFX9_DPP-NEXT: v_cndmask_b32_e64 v3, -1, 0, s[0:1]7237; GFX9_DPP-NEXT: v_cndmask_b32_e64 v4, -1, v0, s[0:1]7238; GFX9_DPP-NEXT: v_mov_b32_e32 v1, -17239; GFX9_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:1 row_mask:0xf bank_mask:0xf7240; GFX9_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:1 row_mask:0xf bank_mask:0xf7241; GFX9_DPP-NEXT: v_mov_b32_e32 v2, -17242; GFX9_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:2 row_mask:0xf bank_mask:0xf7243; GFX9_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:2 row_mask:0xf bank_mask:0xf7244; GFX9_DPP-NEXT: s_nop 07245; GFX9_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:4 row_mask:0xf bank_mask:0xf7246; GFX9_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:4 row_mask:0xf bank_mask:0xf7247; GFX9_DPP-NEXT: s_nop 07248; GFX9_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_shr:8 row_mask:0xf bank_mask:0xf7249; GFX9_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_shr:8 row_mask:0xf bank_mask:0xf7250; GFX9_DPP-NEXT: s_nop 07251; GFX9_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_bcast:15 row_mask:0xa bank_mask:0xf7252; GFX9_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_bcast:15 row_mask:0xa bank_mask:0xf7253; GFX9_DPP-NEXT: s_nop 07254; GFX9_DPP-NEXT: v_and_b32_dpp v3, v3, v3 row_bcast:31 row_mask:0xc bank_mask:0xf7255; GFX9_DPP-NEXT: v_and_b32_dpp v4, v4, v4 row_bcast:31 row_mask:0xc bank_mask:0xf7256; GFX9_DPP-NEXT: v_readlane_b32 s3, v3, 637257; GFX9_DPP-NEXT: v_readlane_b32 s2, v4, 637258; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v3 wave_shr:1 row_mask:0xf bank_mask:0xf7259; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v4 wave_shr:1 row_mask:0xf bank_mask:0xf7260; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]7261; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v57262; GFX9_DPP-NEXT: ; implicit-def: $vgpr5_vgpr67263; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7264; GFX9_DPP-NEXT: s_cbranch_execz .LBB16_27265; GFX9_DPP-NEXT: ; %bb.1:7266; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s37267; GFX9_DPP-NEXT: v_mov_b32_e32 v5, s27268; GFX9_DPP-NEXT: ds_and_rtn_b64 v[5:6], v7, v[5:6]7269; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)7270; GFX9_DPP-NEXT: .LBB16_2:7271; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]7272; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247273; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v67274; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v57275; GFX9_DPP-NEXT: v_mov_b32_e32 v5, v17276; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v27277; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0007278; GFX9_DPP-NEXT: s_mov_b32 s2, -17279; GFX9_DPP-NEXT: v_and_b32_e32 v6, s4, v67280; GFX9_DPP-NEXT: v_and_b32_e32 v5, s5, v57281; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)7282; GFX9_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 07283; GFX9_DPP-NEXT: s_endpgm7284;7285; GFX1064_DPP-LABEL: and_i64_varying:7286; GFX1064_DPP: ; %bb.0: ; %entry7287; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17288; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, -1, 0, s[0:1]7289; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]7290; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, -17291; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, -17292; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf7293; GFX1064_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf7294; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf7295; GFX1064_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf7296; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf7297; GFX1064_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf7298; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf7299; GFX1064_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf7300; GFX1064_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -17301; GFX1064_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -17302; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7303; GFX1064_DPP-NEXT: v_and_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7304; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 317305; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 317306; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, s27307; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s37308; GFX1064_DPP-NEXT: v_and_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf7309; GFX1064_DPP-NEXT: v_and_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf7310; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]7311; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07312; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17313; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf7314; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 157315; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf7316; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 157317; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 317318; GFX1064_DPP-NEXT: v_readlane_b32 s7, v2, 317319; GFX1064_DPP-NEXT: v_writelane_b32 v6, s2, 167320; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 637321; GFX1064_DPP-NEXT: v_writelane_b32 v5, s3, 167322; GFX1064_DPP-NEXT: v_readlane_b32 s8, v1, 477323; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 637324; GFX1064_DPP-NEXT: v_readlane_b32 s9, v2, 477325; GFX1064_DPP-NEXT: v_writelane_b32 v6, s6, 327326; GFX1064_DPP-NEXT: v_writelane_b32 v5, s7, 327327; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]7328; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v07329; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 07330; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -17331; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]7332; GFX1064_DPP-NEXT: v_writelane_b32 v6, s8, 487333; GFX1064_DPP-NEXT: v_writelane_b32 v5, s9, 487334; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]7335; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v77336; GFX1064_DPP-NEXT: s_mov_b32 s2, -17337; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr87338; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc7339; GFX1064_DPP-NEXT: s_cbranch_execz .LBB16_27340; GFX1064_DPP-NEXT: ; %bb.1:7341; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s17342; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s07343; GFX1064_DPP-NEXT: ds_and_rtn_b64 v[7:8], v0, v[7:8]7344; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)7345; GFX1064_DPP-NEXT: buffer_gl0_inv7346; GFX1064_DPP-NEXT: .LBB16_2:7347; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)7348; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]7349; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247350; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v87351; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v57352; GFX1064_DPP-NEXT: v_mov_b32_e32 v9, v67353; GFX1064_DPP-NEXT: s_mov_b32 null, 07354; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v77355; GFX1064_DPP-NEXT: v_and_b32_e32 v9, s3, v97356; GFX1064_DPP-NEXT: v_and_b32_e32 v8, s4, v87357; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160007358; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)7359; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[8:9], off, s[0:3], 07360; GFX1064_DPP-NEXT: s_endpgm7361;7362; GFX1032_DPP-LABEL: and_i64_varying:7363; GFX1032_DPP: ; %bb.0: ; %entry7364; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -17365; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, -1, 0, s27366; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s27367; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, -17368; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, -17369; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf7370; GFX1032_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf7371; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf7372; GFX1032_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf7373; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf7374; GFX1032_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf7375; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf7376; GFX1032_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf7377; GFX1032_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -17378; GFX1032_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -17379; GFX1032_DPP-NEXT: v_and_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7380; GFX1032_DPP-NEXT: v_and_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7381; GFX1032_DPP-NEXT: v_readlane_b32 s3, v1, 157382; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 317383; GFX1032_DPP-NEXT: v_readlane_b32 s0, v2, 317384; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf7385; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf7386; GFX1032_DPP-NEXT: v_readlane_b32 s6, v2, 157387; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s27388; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 07389; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 07390; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -17391; GFX1032_DPP-NEXT: v_writelane_b32 v6, s3, 167392; GFX1032_DPP-NEXT: v_writelane_b32 v5, s6, 167393; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s27394; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v77395; GFX1032_DPP-NEXT: s_mov_b32 s2, -17396; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr87397; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo7398; GFX1032_DPP-NEXT: s_cbranch_execz .LBB16_27399; GFX1032_DPP-NEXT: ; %bb.1:7400; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s17401; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s07402; GFX1032_DPP-NEXT: ds_and_rtn_b64 v[7:8], v0, v[7:8]7403; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)7404; GFX1032_DPP-NEXT: buffer_gl0_inv7405; GFX1032_DPP-NEXT: .LBB16_2:7406; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)7407; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s37408; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247409; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v87410; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v57411; GFX1032_DPP-NEXT: v_mov_b32_e32 v9, v67412; GFX1032_DPP-NEXT: s_mov_b32 null, 07413; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v77414; GFX1032_DPP-NEXT: v_and_b32_e32 v9, s3, v97415; GFX1032_DPP-NEXT: v_and_b32_e32 v8, s4, v87416; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160007417; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)7418; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[8:9], off, s[0:3], 07419; GFX1032_DPP-NEXT: s_endpgm7420;7421; GFX1164_DPP-LABEL: and_i64_varying:7422; GFX1164_DPP: ; %bb.0: ; %entry7423; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v07424; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17425; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)7426; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, -1, 0, s[0:1]7427; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]7428; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, -17429; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, -17430; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)7431; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf7432; GFX1164_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf7433; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7434; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf7435; GFX1164_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf7436; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7437; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf7438; GFX1164_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf7439; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7440; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf7441; GFX1164_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf7442; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7443; GFX1164_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -17444; GFX1164_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -17445; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7446; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7447; GFX1164_DPP-NEXT: v_and_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7448; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7449; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 317450; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 317451; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7452; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, s27453; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s37454; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7455; GFX1164_DPP-NEXT: v_and_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf7456; GFX1164_DPP-NEXT: v_and_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf7457; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)7458; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 157459; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf7460; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]7461; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07462; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17463; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)7464; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf7465; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 157466; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 317467; GFX1164_DPP-NEXT: v_writelane_b32 v6, s2, 167468; GFX1164_DPP-NEXT: v_readlane_b32 s7, v2, 317469; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 637470; GFX1164_DPP-NEXT: v_writelane_b32 v5, s3, 167471; GFX1164_DPP-NEXT: v_readlane_b32 s8, v1, 477472; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 637473; GFX1164_DPP-NEXT: v_writelane_b32 v6, s6, 327474; GFX1164_DPP-NEXT: v_readlane_b32 s9, v2, 477475; GFX1164_DPP-NEXT: v_writelane_b32 v5, s7, 327476; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]7477; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7478; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v07479; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 07480; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -17481; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]7482; GFX1164_DPP-NEXT: v_writelane_b32 v6, s8, 487483; GFX1164_DPP-NEXT: v_writelane_b32 v5, s9, 487484; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]7485; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v77486; GFX1164_DPP-NEXT: s_mov_b32 s2, -17487; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr87488; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc7489; GFX1164_DPP-NEXT: s_cbranch_execz .LBB16_27490; GFX1164_DPP-NEXT: ; %bb.1:7491; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s17492; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s07493; GFX1164_DPP-NEXT: ds_and_rtn_b64 v[7:8], v0, v[7:8]7494; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)7495; GFX1164_DPP-NEXT: buffer_gl0_inv7496; GFX1164_DPP-NEXT: .LBB16_2:7497; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]7498; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x247499; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v87500; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v57501; GFX1164_DPP-NEXT: v_mov_b32_e32 v9, v67502; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v77503; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7504; GFX1164_DPP-NEXT: v_and_b32_e32 v9, s3, v97505; GFX1164_DPP-NEXT: v_and_b32_e32 v8, s4, v87506; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160007507; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)7508; GFX1164_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 07509; GFX1164_DPP-NEXT: s_endpgm7510;7511; GFX1132_DPP-LABEL: and_i64_varying:7512; GFX1132_DPP: ; %bb.0: ; %entry7513; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v07514; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -17515; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)7516; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, -1, 0, s27517; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s27518; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, -1 :: v_dual_mov_b32 v5, -17519; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)7520; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf7521; GFX1132_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf7522; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7523; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf7524; GFX1132_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf7525; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7526; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf7527; GFX1132_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf7528; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7529; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf7530; GFX1132_DPP-NEXT: v_and_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf7531; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7532; GFX1132_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -17533; GFX1132_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -17534; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7535; GFX1132_DPP-NEXT: v_and_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7536; GFX1132_DPP-NEXT: v_and_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7537; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)7538; GFX1132_DPP-NEXT: v_readlane_b32 s3, v1, 157539; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 317540; GFX1132_DPP-NEXT: v_readlane_b32 s0, v2, 317541; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf7542; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf7543; GFX1132_DPP-NEXT: v_readlane_b32 s6, v2, 157544; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s27545; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7546; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 07547; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 07548; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -17549; GFX1132_DPP-NEXT: v_writelane_b32 v6, s3, 167550; GFX1132_DPP-NEXT: v_writelane_b32 v5, s6, 167551; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s27552; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v77553; GFX1132_DPP-NEXT: s_mov_b32 s2, -17554; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr87555; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo7556; GFX1132_DPP-NEXT: s_cbranch_execz .LBB16_27557; GFX1132_DPP-NEXT: ; %bb.1:7558; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s07559; GFX1132_DPP-NEXT: ds_and_rtn_b64 v[7:8], v0, v[7:8]7560; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)7561; GFX1132_DPP-NEXT: buffer_gl0_inv7562; GFX1132_DPP-NEXT: .LBB16_2:7563; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s37564; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x247565; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v87566; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v57567; GFX1132_DPP-NEXT: v_mov_b32_e32 v9, v67568; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v77569; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7570; GFX1132_DPP-NEXT: v_and_b32_e32 v9, s3, v97571; GFX1132_DPP-NEXT: v_and_b32_e32 v8, s4, v87572; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160007573; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)7574; GFX1132_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 07575; GFX1132_DPP-NEXT: s_endpgm7576entry:7577 %lane = call i32 @llvm.amdgcn.workitem.id.x()7578 %lane_ext = zext i32 %lane to i647579 %old = atomicrmw and ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel7580 store i64 %old, ptr addrspace(1) %out7581 ret void7582}7583 7584define amdgpu_kernel void @or_i32_varying(ptr addrspace(1) %out) {7585; GFX7LESS_ITERATIVE-LABEL: or_i32_varying:7586; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry7587; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec7588; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 07589; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr17590; GFX7LESS_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7591; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17592; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]7593; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s37594; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s37595; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m07596; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s37597; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]7598; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 07599; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]7600; GFX7LESS_ITERATIVE-NEXT: s_or_b32 s2, s2, s87601; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB17_17602; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7603; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 07604; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v07605; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07606; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr07607; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc7608; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7609; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47610; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:7611; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07612; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s27613; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -17614; GFX7LESS_ITERATIVE-NEXT: ds_or_rtn_b32 v0, v0, v27615; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7616; GFX7LESS_ITERATIVE-NEXT: .LBB17_4:7617; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]7618; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97619; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0007620; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -17621; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v07622; GFX7LESS_ITERATIVE-NEXT: v_or_b32_e32 v0, s4, v17623; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7624; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 07625; GFX7LESS_ITERATIVE-NEXT: s_endpgm7626;7627; GFX8_ITERATIVE-LABEL: or_i32_varying:7628; GFX8_ITERATIVE: ; %bb.0: ; %entry7629; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec7630; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 07631; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr17632; GFX8_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7633; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17634; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]7635; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s37636; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s37637; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m07638; GFX8_ITERATIVE-NEXT: s_or_b32 s2, s2, s67639; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s37640; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]7641; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB17_17642; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7643; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07644; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07645; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07646; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr07647; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc7648; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7649; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47650; GFX8_ITERATIVE-NEXT: ; %bb.3:7651; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07652; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s27653; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -17654; GFX8_ITERATIVE-NEXT: ds_or_rtn_b32 v0, v0, v27655; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7656; GFX8_ITERATIVE-NEXT: .LBB17_4:7657; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]7658; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247659; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v07660; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0007661; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -17662; GFX8_ITERATIVE-NEXT: v_or_b32_e32 v0, s4, v17663; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7664; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 07665; GFX8_ITERATIVE-NEXT: s_endpgm7666;7667; GFX9_ITERATIVE-LABEL: or_i32_varying:7668; GFX9_ITERATIVE: ; %bb.0: ; %entry7669; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec7670; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 07671; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr17672; GFX9_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7673; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17674; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]7675; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s37676; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s37677; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m07678; GFX9_ITERATIVE-NEXT: s_or_b32 s2, s2, s67679; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s37680; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]7681; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB17_17682; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7683; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07684; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07685; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07686; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr07687; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc7688; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7689; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47690; GFX9_ITERATIVE-NEXT: ; %bb.3:7691; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07692; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s27693; GFX9_ITERATIVE-NEXT: ds_or_rtn_b32 v0, v0, v27694; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7695; GFX9_ITERATIVE-NEXT: .LBB17_4:7696; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]7697; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247698; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v07699; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0007700; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -17701; GFX9_ITERATIVE-NEXT: v_or_b32_e32 v0, s4, v17702; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7703; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 07704; GFX9_ITERATIVE-NEXT: s_endpgm7705;7706; GFX1064_ITERATIVE-LABEL: or_i32_varying:7707; GFX1064_ITERATIVE: ; %bb.0: ; %entry7708; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec7709; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 07710; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr17711; GFX1064_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7712; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17713; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]7714; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s37715; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s37716; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s37717; GFX1064_ITERATIVE-NEXT: s_or_b32 s2, s2, s87718; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]7719; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB17_17720; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7721; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07722; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07723; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07724; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr07725; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc7726; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7727; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47728; GFX1064_ITERATIVE-NEXT: ; %bb.3:7729; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07730; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s27731; GFX1064_ITERATIVE-NEXT: ds_or_rtn_b32 v0, v0, v27732; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7733; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv7734; GFX1064_ITERATIVE-NEXT: .LBB17_4:7735; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)7736; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]7737; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247738; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v07739; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007740; GFX1064_ITERATIVE-NEXT: v_or_b32_e32 v0, s2, v17741; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -17742; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7743; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 07744; GFX1064_ITERATIVE-NEXT: s_endpgm7745;7746; GFX1032_ITERATIVE-LABEL: or_i32_varying:7747; GFX1032_ITERATIVE: ; %bb.0: ; %entry7748; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo7749; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 07750; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr17751; GFX1032_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7752; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17753; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s17754; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s27755; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s27756; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s27757; GFX1032_ITERATIVE-NEXT: s_or_b32 s0, s0, s37758; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s27759; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB17_17760; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7761; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07762; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07763; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr07764; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo7765; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s17766; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47767; GFX1032_ITERATIVE-NEXT: ; %bb.3:7768; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 07769; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s07770; GFX1032_ITERATIVE-NEXT: ds_or_rtn_b32 v0, v0, v27771; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7772; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv7773; GFX1032_ITERATIVE-NEXT: .LBB17_4:7774; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)7775; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s17776; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247777; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v07778; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007779; GFX1032_ITERATIVE-NEXT: v_or_b32_e32 v0, s2, v17780; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -17781; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7782; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 07783; GFX1032_ITERATIVE-NEXT: s_endpgm7784;7785; GFX1164_ITERATIVE-LABEL: or_i32_varying:7786; GFX1164_ITERATIVE: ; %bb.0: ; %entry7787; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v07788; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec7789; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 07790; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr07791; GFX1164_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7792; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17793; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]7794; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)7795; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s37796; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s37797; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s37798; GFX1164_ITERATIVE-NEXT: s_or_b32 s2, s2, s87799; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]7800; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB17_17801; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7802; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 07803; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7804; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v17805; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v17806; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr17807; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc7808; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7809; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7810; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47811; GFX1164_ITERATIVE-NEXT: ; %bb.3:7812; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 07813; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s27814; GFX1164_ITERATIVE-NEXT: ds_or_rtn_b32 v1, v1, v27815; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7816; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv7817; GFX1164_ITERATIVE-NEXT: .LBB17_4:7818; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]7819; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x247820; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v17821; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007822; GFX1164_ITERATIVE-NEXT: v_or_b32_e32 v0, s2, v07823; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -17824; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7825; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 07826; GFX1164_ITERATIVE-NEXT: s_endpgm7827;7828; GFX1132_ITERATIVE-LABEL: or_i32_varying:7829; GFX1132_ITERATIVE: ; %bb.0: ; %entry7830; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v07831; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo7832; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 07833; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr07834; GFX1132_ITERATIVE-NEXT: .LBB17_1: ; %ComputeLoop7835; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=17836; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s17837; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)7838; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s27839; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s27840; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s27841; GFX1132_ITERATIVE-NEXT: s_or_b32 s0, s0, s37842; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s27843; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB17_17844; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd7845; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 07846; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)7847; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v17848; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr17849; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo7850; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s17851; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB17_47852; GFX1132_ITERATIVE-NEXT: ; %bb.3:7853; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s07854; GFX1132_ITERATIVE-NEXT: ds_or_rtn_b32 v1, v1, v27855; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7856; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv7857; GFX1132_ITERATIVE-NEXT: .LBB17_4:7858; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s17859; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x247860; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v17861; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160007862; GFX1132_ITERATIVE-NEXT: v_or_b32_e32 v0, s2, v07863; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -17864; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)7865; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 07866; GFX1132_ITERATIVE-NEXT: s_endpgm7867;7868; GFX7LESS_DPP-LABEL: or_i32_varying:7869; GFX7LESS_DPP: ; %bb.0: ; %entry7870; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97871; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 07872; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -17873; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)7874; GFX7LESS_DPP-NEXT: ds_or_rtn_b32 v0, v1, v07875; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)7876; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0007877; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -17878; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 07879; GFX7LESS_DPP-NEXT: s_endpgm7880;7881; GFX8_DPP-LABEL: or_i32_varying:7882; GFX8_DPP: ; %bb.0: ; %entry7883; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 07884; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 07885; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v47886; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17887; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]7888; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 07889; GFX8_DPP-NEXT: s_nop 07890; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:17891; GFX8_DPP-NEXT: s_nop 17892; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:17893; GFX8_DPP-NEXT: s_nop 17894; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:17895; GFX8_DPP-NEXT: s_nop 17896; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:17897; GFX8_DPP-NEXT: s_nop 17898; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf7899; GFX8_DPP-NEXT: s_nop 17900; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf7901; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 637902; GFX8_DPP-NEXT: s_nop 07903; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf7904; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]7905; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v47906; GFX8_DPP-NEXT: ; implicit-def: $vgpr07907; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7908; GFX8_DPP-NEXT: s_cbranch_execz .LBB17_27909; GFX8_DPP-NEXT: ; %bb.1:7910; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s27911; GFX8_DPP-NEXT: s_mov_b32 m0, -17912; GFX8_DPP-NEXT: ds_or_rtn_b32 v0, v3, v07913; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)7914; GFX8_DPP-NEXT: .LBB17_2:7915; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]7916; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247917; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v07918; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v27919; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0007920; GFX8_DPP-NEXT: s_mov_b32 s2, -17921; GFX8_DPP-NEXT: v_or_b32_e32 v0, s4, v07922; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)7923; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 07924; GFX8_DPP-NEXT: s_endpgm7925;7926; GFX9_DPP-LABEL: or_i32_varying:7927; GFX9_DPP: ; %bb.0: ; %entry7928; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 07929; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 07930; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v47931; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17932; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]7933; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 07934; GFX9_DPP-NEXT: s_nop 07935; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:17936; GFX9_DPP-NEXT: s_nop 17937; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:17938; GFX9_DPP-NEXT: s_nop 17939; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:17940; GFX9_DPP-NEXT: s_nop 17941; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:17942; GFX9_DPP-NEXT: s_nop 17943; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf7944; GFX9_DPP-NEXT: s_nop 17945; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf7946; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 637947; GFX9_DPP-NEXT: s_nop 07948; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf7949; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]7950; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v47951; GFX9_DPP-NEXT: ; implicit-def: $vgpr07952; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7953; GFX9_DPP-NEXT: s_cbranch_execz .LBB17_27954; GFX9_DPP-NEXT: ; %bb.1:7955; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s27956; GFX9_DPP-NEXT: ds_or_rtn_b32 v0, v3, v07957; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)7958; GFX9_DPP-NEXT: .LBB17_2:7959; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]7960; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247961; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v07962; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v27963; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0007964; GFX9_DPP-NEXT: s_mov_b32 s2, -17965; GFX9_DPP-NEXT: v_or_b32_e32 v0, s4, v07966; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)7967; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 07968; GFX9_DPP-NEXT: s_endpgm7969;7970; GFX1064_DPP-LABEL: or_i32_varying:7971; GFX1064_DPP: ; %bb.0: ; %entry7972; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17973; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]7974; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 07975; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:17976; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:17977; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:17978; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:17979; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -17980; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf7981; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 317982; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s27983; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf7984; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf7985; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 157986; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 317987; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 167988; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]7989; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07990; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17991; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 477992; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 637993; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 327994; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]7995; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07996; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 07997; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -17998; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 487999; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]8000; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08001; GFX1064_DPP-NEXT: s_mov_b32 s2, -18002; GFX1064_DPP-NEXT: ; implicit-def: $vgpr08003; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8004; GFX1064_DPP-NEXT: s_cbranch_execz .LBB17_28005; GFX1064_DPP-NEXT: ; %bb.1:8006; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, s68007; GFX1064_DPP-NEXT: ds_or_rtn_b32 v0, v4, v08008; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)8009; GFX1064_DPP-NEXT: buffer_gl0_inv8010; GFX1064_DPP-NEXT: .LBB17_2:8011; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)8012; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]8013; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248014; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v08015; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v38016; GFX1064_DPP-NEXT: v_or_b32_e32 v0, s3, v08017; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160008018; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)8019; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 08020; GFX1064_DPP-NEXT: s_endpgm8021;8022; GFX1032_DPP-LABEL: or_i32_varying:8023; GFX1032_DPP: ; %bb.0: ; %entry8024; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -18025; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s08026; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 08027; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18028; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18029; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18030; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18031; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -18032; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8033; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 158034; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 318035; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf8036; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s08037; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08038; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 08039; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -18040; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 168041; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s08042; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08043; GFX1032_DPP-NEXT: s_mov_b32 s0, s28044; GFX1032_DPP-NEXT: s_mov_b32 s2, -18045; GFX1032_DPP-NEXT: ; implicit-def: $vgpr08046; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo8047; GFX1032_DPP-NEXT: s_cbranch_execz .LBB17_28048; GFX1032_DPP-NEXT: ; %bb.1:8049; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, s08050; GFX1032_DPP-NEXT: ds_or_rtn_b32 v0, v4, v08051; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)8052; GFX1032_DPP-NEXT: buffer_gl0_inv8053; GFX1032_DPP-NEXT: .LBB17_2:8054; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)8055; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s18056; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248057; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v08058; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v38059; GFX1032_DPP-NEXT: v_or_b32_e32 v0, s3, v08060; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160008061; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)8062; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 08063; GFX1032_DPP-NEXT: s_endpgm8064;8065; GFX1164_DPP-LABEL: or_i32_varying:8066; GFX1164_DPP: ; %bb.0: ; %entry8067; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v08068; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18069; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)8070; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]8071; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 08072; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8073; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18074; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18075; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8076; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18077; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18078; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8079; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -18080; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8081; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8082; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 318083; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s28084; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8085; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf8086; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf8087; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 158088; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 318089; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)8090; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 168091; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]8092; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08093; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18094; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)8095; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 478096; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 638097; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 328098; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]8099; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8100; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08101; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 08102; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18103; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 488104; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]8105; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08106; GFX1164_DPP-NEXT: s_mov_b32 s2, -18107; GFX1164_DPP-NEXT: ; implicit-def: $vgpr08108; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8109; GFX1164_DPP-NEXT: s_cbranch_execz .LBB17_28110; GFX1164_DPP-NEXT: ; %bb.1:8111; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, s68112; GFX1164_DPP-NEXT: ds_or_rtn_b32 v0, v4, v08113; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)8114; GFX1164_DPP-NEXT: buffer_gl0_inv8115; GFX1164_DPP-NEXT: .LBB17_2:8116; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]8117; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x248118; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v08119; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v38120; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)8121; GFX1164_DPP-NEXT: v_or_b32_e32 v0, s3, v08122; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160008123; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)8124; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 08125; GFX1164_DPP-NEXT: s_endpgm8126;8127; GFX1132_DPP-LABEL: or_i32_varying:8128; GFX1132_DPP: ; %bb.0: ; %entry8129; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v08130; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -18131; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)8132; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s08133; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 08134; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8135; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18136; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18137; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8138; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18139; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18140; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8141; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -18142; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8143; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)8144; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 158145; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 318146; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf8147; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s08148; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08149; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 08150; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -18151; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 168152; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s08153; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08154; GFX1132_DPP-NEXT: s_mov_b32 s0, s28155; GFX1132_DPP-NEXT: s_mov_b32 s2, -18156; GFX1132_DPP-NEXT: ; implicit-def: $vgpr08157; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo8158; GFX1132_DPP-NEXT: s_cbranch_execz .LBB17_28159; GFX1132_DPP-NEXT: ; %bb.1:8160; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, s08161; GFX1132_DPP-NEXT: ds_or_rtn_b32 v0, v4, v08162; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)8163; GFX1132_DPP-NEXT: buffer_gl0_inv8164; GFX1132_DPP-NEXT: .LBB17_2:8165; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s18166; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x248167; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v08168; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v38169; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)8170; GFX1132_DPP-NEXT: v_or_b32_e32 v0, s3, v08171; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160008172; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)8173; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 08174; GFX1132_DPP-NEXT: s_endpgm8175entry:8176 %lane = call i32 @llvm.amdgcn.workitem.id.x()8177 %old = atomicrmw or ptr addrspace(3) @local_var32, i32 %lane acq_rel8178 store i32 %old, ptr addrspace(1) %out8179 ret void8180}8181 8182define amdgpu_kernel void @or_i64_varying(ptr addrspace(1) %out) {8183; GFX7LESS_ITERATIVE-LABEL: or_i64_varying:8184; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry8185; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec8186; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 08187; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08188; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr28189; GFX7LESS_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8190; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18191; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]8192; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s88193; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s88194; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s88195; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m08196; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m08197; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s88198; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[8:9]8199; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[8:9], s[2:3], 08200; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[8:9]8201; GFX7LESS_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8202; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB18_18203; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8204; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 08205; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v08206; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08207; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr48208; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc8209; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]8210; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48211; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:8212; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 08213; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s18214; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s08215; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -18216; GFX7LESS_ITERATIVE-NEXT: ds_or_rtn_b64 v[3:4], v0, v[3:4]8217; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8218; GFX7LESS_ITERATIVE-NEXT: .LBB18_4:8219; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]8220; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x98221; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0008222; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -18223; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v48224; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v38225; GFX7LESS_ITERATIVE-NEXT: v_or_b32_e32 v2, s4, v28226; GFX7LESS_ITERATIVE-NEXT: v_or_b32_e32 v1, s5, v18227; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8228; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 08229; GFX7LESS_ITERATIVE-NEXT: s_endpgm8230;8231; GFX8_ITERATIVE-LABEL: or_i64_varying:8232; GFX8_ITERATIVE: ; %bb.0: ; %entry8233; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec8234; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 08235; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08236; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr28237; GFX8_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8238; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18239; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]8240; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s88241; GFX8_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s88242; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s88243; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m08244; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m08245; GFX8_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8246; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s88247; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]8248; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB18_18249; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8250; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08251; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08252; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08253; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr48254; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc8255; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]8256; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48257; GFX8_ITERATIVE-NEXT: ; %bb.3:8258; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s18259; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 08260; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s08261; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -18262; GFX8_ITERATIVE-NEXT: ds_or_rtn_b64 v[3:4], v0, v[3:4]8263; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8264; GFX8_ITERATIVE-NEXT: .LBB18_4:8265; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]8266; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248267; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v48268; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v38269; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0008270; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -18271; GFX8_ITERATIVE-NEXT: v_or_b32_e32 v2, s4, v28272; GFX8_ITERATIVE-NEXT: v_or_b32_e32 v1, s5, v18273; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8274; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 08275; GFX8_ITERATIVE-NEXT: s_endpgm8276;8277; GFX9_ITERATIVE-LABEL: or_i64_varying:8278; GFX9_ITERATIVE: ; %bb.0: ; %entry8279; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec8280; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 08281; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08282; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr28283; GFX9_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8284; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18285; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]8286; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s88287; GFX9_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s88288; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s88289; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m08290; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m08291; GFX9_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8292; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s88293; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]8294; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB18_18295; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8296; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08297; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08298; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08299; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr48300; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc8301; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]8302; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48303; GFX9_ITERATIVE-NEXT: ; %bb.3:8304; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s18305; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 08306; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s08307; GFX9_ITERATIVE-NEXT: ds_or_rtn_b64 v[3:4], v0, v[3:4]8308; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8309; GFX9_ITERATIVE-NEXT: .LBB18_4:8310; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]8311; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248312; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v48313; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v38314; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0008315; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -18316; GFX9_ITERATIVE-NEXT: v_or_b32_e32 v2, s4, v28317; GFX9_ITERATIVE-NEXT: v_or_b32_e32 v1, s5, v18318; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8319; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 08320; GFX9_ITERATIVE-NEXT: s_endpgm8321;8322; GFX1064_ITERATIVE-LABEL: or_i64_varying:8323; GFX1064_ITERATIVE: ; %bb.0: ; %entry8324; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 08325; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec8326; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08327; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr28328; GFX1064_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8329; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18330; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]8331; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s88332; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s88333; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s88334; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s88335; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s88336; GFX1064_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8337; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[8:9]8338; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB18_18339; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8340; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08341; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr48342; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08343; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08344; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc8345; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]8346; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48347; GFX1064_ITERATIVE-NEXT: ; %bb.3:8348; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s18349; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 08350; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s08351; GFX1064_ITERATIVE-NEXT: ds_or_rtn_b64 v[3:4], v0, v[3:4]8352; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8353; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv8354; GFX1064_ITERATIVE-NEXT: .LBB18_4:8355; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)8356; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]8357; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248358; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v48359; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v38360; GFX1064_ITERATIVE-NEXT: v_or_b32_e32 v2, s2, v28361; GFX1064_ITERATIVE-NEXT: v_or_b32_e32 v1, s3, v18362; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160008363; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -18364; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8365; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 08366; GFX1064_ITERATIVE-NEXT: s_endpgm8367;8368; GFX1032_ITERATIVE-LABEL: or_i64_varying:8369; GFX1032_ITERATIVE: ; %bb.0: ; %entry8370; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 08371; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo8372; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08373; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr28374; GFX1032_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8375; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18376; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s28377; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s38378; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s38379; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s38380; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s38381; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s38382; GFX1032_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8383; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s38384; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB18_18385; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8386; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08387; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr48388; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08389; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo8390; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s28391; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48392; GFX1032_ITERATIVE-NEXT: ; %bb.3:8393; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s18394; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 08395; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s08396; GFX1032_ITERATIVE-NEXT: ds_or_rtn_b64 v[3:4], v0, v[3:4]8397; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8398; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv8399; GFX1032_ITERATIVE-NEXT: .LBB18_4:8400; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)8401; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s28402; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248403; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v48404; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v38405; GFX1032_ITERATIVE-NEXT: v_or_b32_e32 v2, s2, v28406; GFX1032_ITERATIVE-NEXT: v_or_b32_e32 v1, s3, v18407; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160008408; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -18409; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8410; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 08411; GFX1032_ITERATIVE-NEXT: s_endpgm8412;8413; GFX1164_ITERATIVE-LABEL: or_i64_varying:8414; GFX1164_ITERATIVE: ; %bb.0: ; %entry8415; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 08416; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v08417; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec8418; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08419; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr18420; GFX1164_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8421; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18422; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s8, s[2:3]8423; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8424; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s88425; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s88426; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s88427; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s88428; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s88429; GFX1164_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8430; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[8:9]8431; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB18_18432; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8433; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08434; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8435; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v28436; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v28437; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr38438; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc8439; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8440; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]8441; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48442; GFX1164_ITERATIVE-NEXT: ; %bb.3:8443; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s18444; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 08445; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s08446; GFX1164_ITERATIVE-NEXT: ds_or_rtn_b64 v[2:3], v4, v[2:3]8447; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8448; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv8449; GFX1164_ITERATIVE-NEXT: .LBB18_4:8450; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]8451; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x248452; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v38453; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v28454; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8455; GFX1164_ITERATIVE-NEXT: v_or_b32_e32 v1, s2, v18456; GFX1164_ITERATIVE-NEXT: v_or_b32_e32 v0, s3, v08457; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160008458; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -18459; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8460; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 08461; GFX1164_ITERATIVE-NEXT: s_endpgm8462;8463; GFX1132_ITERATIVE-LABEL: or_i64_varying:8464; GFX1132_ITERATIVE: ; %bb.0: ; %entry8465; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v08466; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo8467; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], 08468; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr18469; GFX1132_ITERATIVE-NEXT: .LBB18_1: ; %ComputeLoop8470; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18471; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s28472; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)8473; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s38474; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s38475; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s38476; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s38477; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s38478; GFX1132_ITERATIVE-NEXT: s_or_b64 s[0:1], s[0:1], s[6:7]8479; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s38480; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB18_18481; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8482; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08483; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)8484; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v28485; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr38486; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo8487; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s28488; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB18_48489; GFX1132_ITERATIVE-NEXT: ; %bb.3:8490; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s18491; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s08492; GFX1132_ITERATIVE-NEXT: ds_or_rtn_b64 v[2:3], v4, v[2:3]8493; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8494; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv8495; GFX1132_ITERATIVE-NEXT: .LBB18_4:8496; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s28497; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x248498; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v38499; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v28500; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8501; GFX1132_ITERATIVE-NEXT: v_or_b32_e32 v1, s2, v18502; GFX1132_ITERATIVE-NEXT: v_or_b32_e32 v0, s3, v08503; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160008504; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -18505; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8506; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 08507; GFX1132_ITERATIVE-NEXT: s_endpgm8508;8509; GFX7LESS_DPP-LABEL: or_i64_varying:8510; GFX7LESS_DPP: ; %bb.0: ; %entry8511; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x98512; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 08513; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -18514; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)8515; GFX7LESS_DPP-NEXT: ds_or_rtn_b64 v[0:1], v1, v[0:1]8516; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)8517; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0008518; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -18519; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 08520; GFX7LESS_DPP-NEXT: s_endpgm8521;8522; GFX8_DPP-LABEL: or_i64_varying:8523; GFX8_DPP: ; %bb.0: ; %entry8524; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 08525; GFX8_DPP-NEXT: v_mov_b32_e32 v7, 08526; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v58527; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18528; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]8529; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]8530; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 08531; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18532; GFX8_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18533; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 08534; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18535; GFX8_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18536; GFX8_DPP-NEXT: s_nop 08537; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18538; GFX8_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18539; GFX8_DPP-NEXT: s_nop 08540; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18541; GFX8_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18542; GFX8_DPP-NEXT: s_nop 08543; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf8544; GFX8_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf8545; GFX8_DPP-NEXT: s_nop 08546; GFX8_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf8547; GFX8_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf8548; GFX8_DPP-NEXT: v_readlane_b32 s3, v1, 638549; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 638550; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf8551; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf8552; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]8553; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v58554; GFX8_DPP-NEXT: ; implicit-def: $vgpr5_vgpr68555; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8556; GFX8_DPP-NEXT: s_cbranch_execz .LBB18_28557; GFX8_DPP-NEXT: ; %bb.1:8558; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s38559; GFX8_DPP-NEXT: v_mov_b32_e32 v5, s28560; GFX8_DPP-NEXT: s_mov_b32 m0, -18561; GFX8_DPP-NEXT: ds_or_rtn_b64 v[5:6], v7, v[5:6]8562; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)8563; GFX8_DPP-NEXT: .LBB18_2:8564; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]8565; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248566; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v68567; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v58568; GFX8_DPP-NEXT: v_mov_b32_e32 v5, v38569; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v48570; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0008571; GFX8_DPP-NEXT: s_mov_b32 s2, -18572; GFX8_DPP-NEXT: v_or_b32_e32 v6, s4, v68573; GFX8_DPP-NEXT: v_or_b32_e32 v5, s5, v58574; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)8575; GFX8_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 08576; GFX8_DPP-NEXT: s_endpgm8577;8578; GFX9_DPP-LABEL: or_i64_varying:8579; GFX9_DPP: ; %bb.0: ; %entry8580; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 08581; GFX9_DPP-NEXT: v_mov_b32_e32 v7, 08582; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v58583; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18584; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]8585; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]8586; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 08587; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18588; GFX9_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18589; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 08590; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18591; GFX9_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18592; GFX9_DPP-NEXT: s_nop 08593; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18594; GFX9_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18595; GFX9_DPP-NEXT: s_nop 08596; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18597; GFX9_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18598; GFX9_DPP-NEXT: s_nop 08599; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf8600; GFX9_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf8601; GFX9_DPP-NEXT: s_nop 08602; GFX9_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf8603; GFX9_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf8604; GFX9_DPP-NEXT: v_readlane_b32 s3, v1, 638605; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 638606; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf8607; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf8608; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]8609; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v58610; GFX9_DPP-NEXT: ; implicit-def: $vgpr5_vgpr68611; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8612; GFX9_DPP-NEXT: s_cbranch_execz .LBB18_28613; GFX9_DPP-NEXT: ; %bb.1:8614; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s38615; GFX9_DPP-NEXT: v_mov_b32_e32 v5, s28616; GFX9_DPP-NEXT: ds_or_rtn_b64 v[5:6], v7, v[5:6]8617; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)8618; GFX9_DPP-NEXT: .LBB18_2:8619; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]8620; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248621; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v68622; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v58623; GFX9_DPP-NEXT: v_mov_b32_e32 v5, v38624; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v48625; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0008626; GFX9_DPP-NEXT: s_mov_b32 s2, -18627; GFX9_DPP-NEXT: v_or_b32_e32 v6, s4, v68628; GFX9_DPP-NEXT: v_or_b32_e32 v5, s5, v58629; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)8630; GFX9_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 08631; GFX9_DPP-NEXT: s_endpgm8632;8633; GFX1064_DPP-LABEL: or_i64_varying:8634; GFX1064_DPP: ; %bb.0: ; %entry8635; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18636; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]8637; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]8638; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 08639; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 08640; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18641; GFX1064_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18642; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18643; GFX1064_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18644; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18645; GFX1064_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18646; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18647; GFX1064_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18648; GFX1064_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -18649; GFX1064_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -18650; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8651; GFX1064_DPP-NEXT: v_or_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8652; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 318653; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 318654; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, s28655; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s38656; GFX1064_DPP-NEXT: v_or_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf8657; GFX1064_DPP-NEXT: v_or_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf8658; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]8659; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08660; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18661; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf8662; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 158663; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf8664; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 158665; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 318666; GFX1064_DPP-NEXT: v_readlane_b32 s7, v2, 318667; GFX1064_DPP-NEXT: v_writelane_b32 v6, s2, 168668; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 638669; GFX1064_DPP-NEXT: v_writelane_b32 v5, s3, 168670; GFX1064_DPP-NEXT: v_readlane_b32 s8, v1, 478671; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 638672; GFX1064_DPP-NEXT: v_readlane_b32 s9, v2, 478673; GFX1064_DPP-NEXT: v_writelane_b32 v6, s6, 328674; GFX1064_DPP-NEXT: v_writelane_b32 v5, s7, 328675; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]8676; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v08677; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 08678; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -18679; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]8680; GFX1064_DPP-NEXT: v_writelane_b32 v6, s8, 488681; GFX1064_DPP-NEXT: v_writelane_b32 v5, s9, 488682; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]8683; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v78684; GFX1064_DPP-NEXT: s_mov_b32 s2, -18685; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr88686; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc8687; GFX1064_DPP-NEXT: s_cbranch_execz .LBB18_28688; GFX1064_DPP-NEXT: ; %bb.1:8689; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s18690; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s08691; GFX1064_DPP-NEXT: ds_or_rtn_b64 v[7:8], v0, v[7:8]8692; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)8693; GFX1064_DPP-NEXT: buffer_gl0_inv8694; GFX1064_DPP-NEXT: .LBB18_2:8695; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)8696; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]8697; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248698; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v88699; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v58700; GFX1064_DPP-NEXT: v_mov_b32_e32 v9, v68701; GFX1064_DPP-NEXT: s_mov_b32 null, 08702; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v78703; GFX1064_DPP-NEXT: v_or_b32_e32 v9, s3, v98704; GFX1064_DPP-NEXT: v_or_b32_e32 v8, s4, v88705; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160008706; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)8707; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[8:9], off, s[0:3], 08708; GFX1064_DPP-NEXT: s_endpgm8709;8710; GFX1032_DPP-LABEL: or_i64_varying:8711; GFX1032_DPP: ; %bb.0: ; %entry8712; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -18713; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s28714; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s28715; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 08716; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 08717; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18718; GFX1032_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18719; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18720; GFX1032_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18721; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18722; GFX1032_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18723; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18724; GFX1032_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18725; GFX1032_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -18726; GFX1032_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -18727; GFX1032_DPP-NEXT: v_or_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8728; GFX1032_DPP-NEXT: v_or_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8729; GFX1032_DPP-NEXT: v_readlane_b32 s3, v1, 158730; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 318731; GFX1032_DPP-NEXT: v_readlane_b32 s0, v2, 318732; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf8733; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf8734; GFX1032_DPP-NEXT: v_readlane_b32 s6, v2, 158735; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s28736; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 08737; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 08738; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -18739; GFX1032_DPP-NEXT: v_writelane_b32 v6, s3, 168740; GFX1032_DPP-NEXT: v_writelane_b32 v5, s6, 168741; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s28742; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v78743; GFX1032_DPP-NEXT: s_mov_b32 s2, -18744; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr88745; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo8746; GFX1032_DPP-NEXT: s_cbranch_execz .LBB18_28747; GFX1032_DPP-NEXT: ; %bb.1:8748; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s18749; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s08750; GFX1032_DPP-NEXT: ds_or_rtn_b64 v[7:8], v0, v[7:8]8751; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)8752; GFX1032_DPP-NEXT: buffer_gl0_inv8753; GFX1032_DPP-NEXT: .LBB18_2:8754; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)8755; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s38756; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248757; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v88758; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v58759; GFX1032_DPP-NEXT: v_mov_b32_e32 v9, v68760; GFX1032_DPP-NEXT: s_mov_b32 null, 08761; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v78762; GFX1032_DPP-NEXT: v_or_b32_e32 v9, s3, v98763; GFX1032_DPP-NEXT: v_or_b32_e32 v8, s4, v88764; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160008765; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)8766; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[8:9], off, s[0:3], 08767; GFX1032_DPP-NEXT: s_endpgm8768;8769; GFX1164_DPP-LABEL: or_i64_varying:8770; GFX1164_DPP: ; %bb.0: ; %entry8771; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v08772; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18773; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)8774; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]8775; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]8776; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, 08777; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 08778; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)8779; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18780; GFX1164_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18781; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8782; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18783; GFX1164_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18784; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8785; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18786; GFX1164_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18787; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8788; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18789; GFX1164_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18790; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8791; GFX1164_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -18792; GFX1164_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -18793; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8794; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8795; GFX1164_DPP-NEXT: v_or_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8796; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8797; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 318798; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 318799; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8800; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, s28801; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s38802; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8803; GFX1164_DPP-NEXT: v_or_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf8804; GFX1164_DPP-NEXT: v_or_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf8805; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)8806; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 158807; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf8808; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]8809; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08810; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -18811; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)8812; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf8813; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 158814; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 318815; GFX1164_DPP-NEXT: v_writelane_b32 v6, s2, 168816; GFX1164_DPP-NEXT: v_readlane_b32 s7, v2, 318817; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 638818; GFX1164_DPP-NEXT: v_writelane_b32 v5, s3, 168819; GFX1164_DPP-NEXT: v_readlane_b32 s8, v1, 478820; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 638821; GFX1164_DPP-NEXT: v_writelane_b32 v6, s6, 328822; GFX1164_DPP-NEXT: v_readlane_b32 s9, v2, 478823; GFX1164_DPP-NEXT: v_writelane_b32 v5, s7, 328824; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]8825; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8826; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v08827; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 08828; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -18829; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]8830; GFX1164_DPP-NEXT: v_writelane_b32 v6, s8, 488831; GFX1164_DPP-NEXT: v_writelane_b32 v5, s9, 488832; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]8833; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v78834; GFX1164_DPP-NEXT: s_mov_b32 s2, -18835; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr88836; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc8837; GFX1164_DPP-NEXT: s_cbranch_execz .LBB18_28838; GFX1164_DPP-NEXT: ; %bb.1:8839; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s18840; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s08841; GFX1164_DPP-NEXT: ds_or_rtn_b64 v[7:8], v0, v[7:8]8842; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)8843; GFX1164_DPP-NEXT: buffer_gl0_inv8844; GFX1164_DPP-NEXT: .LBB18_2:8845; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]8846; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x248847; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v88848; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v58849; GFX1164_DPP-NEXT: v_mov_b32_e32 v9, v68850; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v78851; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8852; GFX1164_DPP-NEXT: v_or_b32_e32 v9, s3, v98853; GFX1164_DPP-NEXT: v_or_b32_e32 v8, s4, v88854; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160008855; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)8856; GFX1164_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 08857; GFX1164_DPP-NEXT: s_endpgm8858;8859; GFX1132_DPP-LABEL: or_i64_varying:8860; GFX1132_DPP: ; %bb.0: ; %entry8861; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v08862; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -18863; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)8864; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s28865; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s28866; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v5, 08867; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)8868; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18869; GFX1132_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:18870; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8871; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18872; GFX1132_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:18873; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8874; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18875; GFX1132_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:18876; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8877; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18878; GFX1132_DPP-NEXT: v_or_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:18879; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8880; GFX1132_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -18881; GFX1132_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -18882; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8883; GFX1132_DPP-NEXT: v_or_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8884; GFX1132_DPP-NEXT: v_or_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf8885; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)8886; GFX1132_DPP-NEXT: v_readlane_b32 s3, v1, 158887; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 318888; GFX1132_DPP-NEXT: v_readlane_b32 s0, v2, 318889; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf8890; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf8891; GFX1132_DPP-NEXT: v_readlane_b32 s6, v2, 158892; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s28893; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8894; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 08895; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 08896; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -18897; GFX1132_DPP-NEXT: v_writelane_b32 v6, s3, 168898; GFX1132_DPP-NEXT: v_writelane_b32 v5, s6, 168899; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s28900; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v78901; GFX1132_DPP-NEXT: s_mov_b32 s2, -18902; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr88903; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo8904; GFX1132_DPP-NEXT: s_cbranch_execz .LBB18_28905; GFX1132_DPP-NEXT: ; %bb.1:8906; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s08907; GFX1132_DPP-NEXT: ds_or_rtn_b64 v[7:8], v0, v[7:8]8908; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)8909; GFX1132_DPP-NEXT: buffer_gl0_inv8910; GFX1132_DPP-NEXT: .LBB18_2:8911; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s38912; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x248913; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v88914; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v58915; GFX1132_DPP-NEXT: v_mov_b32_e32 v9, v68916; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v78917; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8918; GFX1132_DPP-NEXT: v_or_b32_e32 v9, s3, v98919; GFX1132_DPP-NEXT: v_or_b32_e32 v8, s4, v88920; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160008921; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)8922; GFX1132_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 08923; GFX1132_DPP-NEXT: s_endpgm8924entry:8925 %lane = call i32 @llvm.amdgcn.workitem.id.x()8926 %lane_ext = zext i32 %lane to i648927 %old = atomicrmw or ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel8928 store i64 %old, ptr addrspace(1) %out8929 ret void8930}8931 8932define amdgpu_kernel void @xor_i32_varying(ptr addrspace(1) %out) {8933; GFX7LESS_ITERATIVE-LABEL: xor_i32_varying:8934; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry8935; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec8936; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 08937; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr18938; GFX7LESS_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop8939; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18940; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]8941; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s38942; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s38943; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m08944; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s38945; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]8946; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 08947; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]8948; GFX7LESS_ITERATIVE-NEXT: s_xor_b32 s2, s2, s88949; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB19_18950; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8951; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 08952; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v08953; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08954; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr08955; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc8956; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]8957; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB19_48958; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:8959; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 08960; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s28961; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -18962; GFX7LESS_ITERATIVE-NEXT: ds_xor_rtn_b32 v0, v0, v28963; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8964; GFX7LESS_ITERATIVE-NEXT: .LBB19_4:8965; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]8966; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x98967; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0008968; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -18969; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v08970; GFX7LESS_ITERATIVE-NEXT: v_xor_b32_e32 v0, s4, v18971; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)8972; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 08973; GFX7LESS_ITERATIVE-NEXT: s_endpgm8974;8975; GFX8_ITERATIVE-LABEL: xor_i32_varying:8976; GFX8_ITERATIVE: ; %bb.0: ; %entry8977; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec8978; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 08979; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr18980; GFX8_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop8981; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=18982; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]8983; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s38984; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s38985; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m08986; GFX8_ITERATIVE-NEXT: s_xor_b32 s2, s2, s68987; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s38988; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]8989; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB19_18990; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd8991; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08992; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08993; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08994; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr08995; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc8996; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]8997; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB19_48998; GFX8_ITERATIVE-NEXT: ; %bb.3:8999; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09000; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s29001; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -19002; GFX8_ITERATIVE-NEXT: ds_xor_rtn_b32 v0, v0, v29003; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9004; GFX8_ITERATIVE-NEXT: .LBB19_4:9005; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]9006; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249007; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v09008; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0009009; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -19010; GFX8_ITERATIVE-NEXT: v_xor_b32_e32 v0, s4, v19011; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9012; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 09013; GFX8_ITERATIVE-NEXT: s_endpgm9014;9015; GFX9_ITERATIVE-LABEL: xor_i32_varying:9016; GFX9_ITERATIVE: ; %bb.0: ; %entry9017; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec9018; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 09019; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr19020; GFX9_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop9021; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19022; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]9023; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s39024; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s39025; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m09026; GFX9_ITERATIVE-NEXT: s_xor_b32 s2, s2, s69027; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s39028; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]9029; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB19_19030; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9031; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09032; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09033; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09034; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr09035; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc9036; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9037; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB19_49038; GFX9_ITERATIVE-NEXT: ; %bb.3:9039; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09040; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s29041; GFX9_ITERATIVE-NEXT: ds_xor_rtn_b32 v0, v0, v29042; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9043; GFX9_ITERATIVE-NEXT: .LBB19_4:9044; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]9045; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249046; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v09047; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0009048; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -19049; GFX9_ITERATIVE-NEXT: v_xor_b32_e32 v0, s4, v19050; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9051; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 09052; GFX9_ITERATIVE-NEXT: s_endpgm9053;9054; GFX1064_ITERATIVE-LABEL: xor_i32_varying:9055; GFX1064_ITERATIVE: ; %bb.0: ; %entry9056; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec9057; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 09058; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr19059; GFX1064_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop9060; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19061; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]9062; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s39063; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s39064; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s39065; GFX1064_ITERATIVE-NEXT: s_xor_b32 s2, s2, s89066; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]9067; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB19_19068; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9069; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09070; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09071; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09072; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr09073; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc9074; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9075; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB19_49076; GFX1064_ITERATIVE-NEXT: ; %bb.3:9077; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09078; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s29079; GFX1064_ITERATIVE-NEXT: ds_xor_rtn_b32 v0, v0, v29080; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9081; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv9082; GFX1064_ITERATIVE-NEXT: .LBB19_4:9083; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)9084; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]9085; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249086; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v09087; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009088; GFX1064_ITERATIVE-NEXT: v_xor_b32_e32 v0, s2, v19089; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -19090; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9091; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 09092; GFX1064_ITERATIVE-NEXT: s_endpgm9093;9094; GFX1032_ITERATIVE-LABEL: xor_i32_varying:9095; GFX1032_ITERATIVE: ; %bb.0: ; %entry9096; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo9097; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 09098; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr19099; GFX1032_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop9100; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19101; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s19102; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s29103; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s29104; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s29105; GFX1032_ITERATIVE-NEXT: s_xor_b32 s0, s0, s39106; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s29107; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB19_19108; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9109; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09110; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09111; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr09112; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo9113; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s19114; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB19_49115; GFX1032_ITERATIVE-NEXT: ; %bb.3:9116; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09117; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s09118; GFX1032_ITERATIVE-NEXT: ds_xor_rtn_b32 v0, v0, v29119; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9120; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv9121; GFX1032_ITERATIVE-NEXT: .LBB19_4:9122; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)9123; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s19124; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249125; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v09126; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009127; GFX1032_ITERATIVE-NEXT: v_xor_b32_e32 v0, s2, v19128; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -19129; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9130; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 09131; GFX1032_ITERATIVE-NEXT: s_endpgm9132;9133; GFX1164_ITERATIVE-LABEL: xor_i32_varying:9134; GFX1164_ITERATIVE: ; %bb.0: ; %entry9135; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v09136; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec9137; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 09138; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr09139; GFX1164_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop9140; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19141; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]9142; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)9143; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s39144; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s39145; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s39146; GFX1164_ITERATIVE-NEXT: s_xor_b32 s2, s2, s89147; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]9148; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB19_19149; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9150; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 09151; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9152; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v19153; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v19154; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr19155; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc9156; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9157; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9158; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB19_49159; GFX1164_ITERATIVE-NEXT: ; %bb.3:9160; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 09161; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s29162; GFX1164_ITERATIVE-NEXT: ds_xor_rtn_b32 v1, v1, v29163; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9164; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv9165; GFX1164_ITERATIVE-NEXT: .LBB19_4:9166; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]9167; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x249168; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v19169; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009170; GFX1164_ITERATIVE-NEXT: v_xor_b32_e32 v0, s2, v09171; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -19172; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9173; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 09174; GFX1164_ITERATIVE-NEXT: s_endpgm9175;9176; GFX1132_ITERATIVE-LABEL: xor_i32_varying:9177; GFX1132_ITERATIVE: ; %bb.0: ; %entry9178; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v09179; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo9180; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 09181; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr09182; GFX1132_ITERATIVE-NEXT: .LBB19_1: ; %ComputeLoop9183; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19184; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s19185; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)9186; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s29187; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s29188; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s29189; GFX1132_ITERATIVE-NEXT: s_xor_b32 s0, s0, s39190; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s29191; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB19_19192; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9193; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 09194; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9195; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v19196; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr19197; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo9198; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s19199; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB19_49200; GFX1132_ITERATIVE-NEXT: ; %bb.3:9201; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s09202; GFX1132_ITERATIVE-NEXT: ds_xor_rtn_b32 v1, v1, v29203; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9204; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv9205; GFX1132_ITERATIVE-NEXT: .LBB19_4:9206; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s19207; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x249208; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v19209; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009210; GFX1132_ITERATIVE-NEXT: v_xor_b32_e32 v0, s2, v09211; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -19212; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9213; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 09214; GFX1132_ITERATIVE-NEXT: s_endpgm9215;9216; GFX7LESS_DPP-LABEL: xor_i32_varying:9217; GFX7LESS_DPP: ; %bb.0: ; %entry9218; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x99219; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 09220; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -19221; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)9222; GFX7LESS_DPP-NEXT: ds_xor_rtn_b32 v0, v1, v09223; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)9224; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0009225; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -19226; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 09227; GFX7LESS_DPP-NEXT: s_endpgm9228;9229; GFX8_DPP-LABEL: xor_i32_varying:9230; GFX8_DPP: ; %bb.0: ; %entry9231; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 09232; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 09233; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v49234; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19235; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]9236; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 09237; GFX8_DPP-NEXT: s_nop 09238; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19239; GFX8_DPP-NEXT: s_nop 19240; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19241; GFX8_DPP-NEXT: s_nop 19242; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19243; GFX8_DPP-NEXT: s_nop 19244; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19245; GFX8_DPP-NEXT: s_nop 19246; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf9247; GFX8_DPP-NEXT: s_nop 19248; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf9249; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 639250; GFX8_DPP-NEXT: s_nop 09251; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf9252; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]9253; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v49254; GFX8_DPP-NEXT: ; implicit-def: $vgpr09255; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9256; GFX8_DPP-NEXT: s_cbranch_execz .LBB19_29257; GFX8_DPP-NEXT: ; %bb.1:9258; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s29259; GFX8_DPP-NEXT: s_mov_b32 m0, -19260; GFX8_DPP-NEXT: ds_xor_rtn_b32 v0, v3, v09261; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)9262; GFX8_DPP-NEXT: .LBB19_2:9263; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]9264; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249265; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v09266; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v29267; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0009268; GFX8_DPP-NEXT: s_mov_b32 s2, -19269; GFX8_DPP-NEXT: v_xor_b32_e32 v0, s4, v09270; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)9271; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 09272; GFX8_DPP-NEXT: s_endpgm9273;9274; GFX9_DPP-LABEL: xor_i32_varying:9275; GFX9_DPP: ; %bb.0: ; %entry9276; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 09277; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 09278; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v49279; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19280; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]9281; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 09282; GFX9_DPP-NEXT: s_nop 09283; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19284; GFX9_DPP-NEXT: s_nop 19285; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19286; GFX9_DPP-NEXT: s_nop 19287; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19288; GFX9_DPP-NEXT: s_nop 19289; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19290; GFX9_DPP-NEXT: s_nop 19291; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf9292; GFX9_DPP-NEXT: s_nop 19293; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf9294; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 639295; GFX9_DPP-NEXT: s_nop 09296; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf9297; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]9298; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v49299; GFX9_DPP-NEXT: ; implicit-def: $vgpr09300; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9301; GFX9_DPP-NEXT: s_cbranch_execz .LBB19_29302; GFX9_DPP-NEXT: ; %bb.1:9303; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s29304; GFX9_DPP-NEXT: ds_xor_rtn_b32 v0, v3, v09305; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)9306; GFX9_DPP-NEXT: .LBB19_2:9307; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]9308; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249309; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v09310; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v29311; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0009312; GFX9_DPP-NEXT: s_mov_b32 s2, -19313; GFX9_DPP-NEXT: v_xor_b32_e32 v0, s4, v09314; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)9315; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 09316; GFX9_DPP-NEXT: s_endpgm9317;9318; GFX1064_DPP-LABEL: xor_i32_varying:9319; GFX1064_DPP: ; %bb.0: ; %entry9320; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19321; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]9322; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 09323; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19324; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19325; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19326; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19327; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -19328; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf9329; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 319330; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s29331; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf9332; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf9333; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 159334; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 319335; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 169336; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]9337; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09338; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19339; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 479340; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 639341; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 329342; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]9343; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09344; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 09345; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19346; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 489347; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]9348; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09349; GFX1064_DPP-NEXT: s_mov_b32 s2, -19350; GFX1064_DPP-NEXT: ; implicit-def: $vgpr09351; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9352; GFX1064_DPP-NEXT: s_cbranch_execz .LBB19_29353; GFX1064_DPP-NEXT: ; %bb.1:9354; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, s69355; GFX1064_DPP-NEXT: ds_xor_rtn_b32 v0, v4, v09356; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)9357; GFX1064_DPP-NEXT: buffer_gl0_inv9358; GFX1064_DPP-NEXT: .LBB19_2:9359; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)9360; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]9361; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249362; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v09363; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v39364; GFX1064_DPP-NEXT: v_xor_b32_e32 v0, s3, v09365; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x310160009366; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)9367; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 09368; GFX1064_DPP-NEXT: s_endpgm9369;9370; GFX1032_DPP-LABEL: xor_i32_varying:9371; GFX1032_DPP: ; %bb.0: ; %entry9372; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -19373; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s09374; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 09375; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19376; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19377; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19378; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19379; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -19380; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf9381; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 159382; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 319383; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf9384; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s09385; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09386; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 09387; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -19388; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 169389; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s09390; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09391; GFX1032_DPP-NEXT: s_mov_b32 s0, s29392; GFX1032_DPP-NEXT: s_mov_b32 s2, -19393; GFX1032_DPP-NEXT: ; implicit-def: $vgpr09394; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo9395; GFX1032_DPP-NEXT: s_cbranch_execz .LBB19_29396; GFX1032_DPP-NEXT: ; %bb.1:9397; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, s09398; GFX1032_DPP-NEXT: ds_xor_rtn_b32 v0, v4, v09399; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)9400; GFX1032_DPP-NEXT: buffer_gl0_inv9401; GFX1032_DPP-NEXT: .LBB19_2:9402; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)9403; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s19404; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249405; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v09406; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v39407; GFX1032_DPP-NEXT: v_xor_b32_e32 v0, s3, v09408; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x310160009409; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)9410; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 09411; GFX1032_DPP-NEXT: s_endpgm9412;9413; GFX1164_DPP-LABEL: xor_i32_varying:9414; GFX1164_DPP: ; %bb.0: ; %entry9415; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v09416; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19417; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)9418; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]9419; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 09420; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9421; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19422; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19423; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9424; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19425; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19426; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9427; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -19428; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf9429; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9430; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 319431; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s29432; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9433; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf9434; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf9435; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 159436; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 319437; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9438; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 169439; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]9440; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09441; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19442; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)9443; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 479444; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 639445; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 329446; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]9447; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9448; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09449; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 09450; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19451; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 489452; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]9453; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09454; GFX1164_DPP-NEXT: s_mov_b32 s2, -19455; GFX1164_DPP-NEXT: ; implicit-def: $vgpr09456; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9457; GFX1164_DPP-NEXT: s_cbranch_execz .LBB19_29458; GFX1164_DPP-NEXT: ; %bb.1:9459; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, s69460; GFX1164_DPP-NEXT: ds_xor_rtn_b32 v0, v4, v09461; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)9462; GFX1164_DPP-NEXT: buffer_gl0_inv9463; GFX1164_DPP-NEXT: .LBB19_2:9464; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]9465; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x249466; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v09467; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v39468; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)9469; GFX1164_DPP-NEXT: v_xor_b32_e32 v0, s3, v09470; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x310160009471; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)9472; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 09473; GFX1164_DPP-NEXT: s_endpgm9474;9475; GFX1132_DPP-LABEL: xor_i32_varying:9476; GFX1132_DPP: ; %bb.0: ; %entry9477; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v09478; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -19479; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)9480; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s09481; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 09482; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9483; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19484; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19485; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9486; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19487; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19488; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9489; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -19490; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf9491; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)9492; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 159493; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 319494; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf9495; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s09496; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09497; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 09498; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -19499; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 169500; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s09501; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09502; GFX1132_DPP-NEXT: s_mov_b32 s0, s29503; GFX1132_DPP-NEXT: s_mov_b32 s2, -19504; GFX1132_DPP-NEXT: ; implicit-def: $vgpr09505; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo9506; GFX1132_DPP-NEXT: s_cbranch_execz .LBB19_29507; GFX1132_DPP-NEXT: ; %bb.1:9508; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, s09509; GFX1132_DPP-NEXT: ds_xor_rtn_b32 v0, v4, v09510; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)9511; GFX1132_DPP-NEXT: buffer_gl0_inv9512; GFX1132_DPP-NEXT: .LBB19_2:9513; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s19514; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x249515; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v09516; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v39517; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)9518; GFX1132_DPP-NEXT: v_xor_b32_e32 v0, s3, v09519; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x310160009520; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)9521; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 09522; GFX1132_DPP-NEXT: s_endpgm9523entry:9524 %lane = call i32 @llvm.amdgcn.workitem.id.x()9525 %old = atomicrmw xor ptr addrspace(3) @local_var32, i32 %lane acq_rel9526 store i32 %old, ptr addrspace(1) %out9527 ret void9528}9529 9530define amdgpu_kernel void @xor_i64_varying(ptr addrspace(1) %out) {9531; GFX7LESS_ITERATIVE-LABEL: xor_i64_varying:9532; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry9533; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec9534; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 09535; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09536; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr29537; GFX7LESS_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9538; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19539; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]9540; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s89541; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s89542; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s89543; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m09544; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m09545; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s89546; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[8:9]9547; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[8:9], s[2:3], 09548; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[8:9]9549; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9550; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB20_19551; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9552; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 09553; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v09554; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09555; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr49556; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc9557; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]9558; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49559; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:9560; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09561; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s19562; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s09563; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -19564; GFX7LESS_ITERATIVE-NEXT: ds_xor_rtn_b64 v[3:4], v0, v[3:4]9565; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9566; GFX7LESS_ITERATIVE-NEXT: .LBB20_4:9567; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]9568; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x99569; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0009570; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -19571; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v49572; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v39573; GFX7LESS_ITERATIVE-NEXT: v_xor_b32_e32 v2, s4, v29574; GFX7LESS_ITERATIVE-NEXT: v_xor_b32_e32 v1, s5, v19575; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9576; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 09577; GFX7LESS_ITERATIVE-NEXT: s_endpgm9578;9579; GFX8_ITERATIVE-LABEL: xor_i64_varying:9580; GFX8_ITERATIVE: ; %bb.0: ; %entry9581; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec9582; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 09583; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09584; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr29585; GFX8_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9586; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19587; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]9588; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s89589; GFX8_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s89590; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s89591; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m09592; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m09593; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9594; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s89595; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]9596; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB20_19597; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9598; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09599; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09600; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09601; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr49602; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc9603; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]9604; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49605; GFX8_ITERATIVE-NEXT: ; %bb.3:9606; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s19607; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09608; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s09609; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -19610; GFX8_ITERATIVE-NEXT: ds_xor_rtn_b64 v[3:4], v0, v[3:4]9611; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9612; GFX8_ITERATIVE-NEXT: .LBB20_4:9613; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]9614; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249615; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v49616; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v39617; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0009618; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -19619; GFX8_ITERATIVE-NEXT: v_xor_b32_e32 v2, s4, v29620; GFX8_ITERATIVE-NEXT: v_xor_b32_e32 v1, s5, v19621; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9622; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 09623; GFX8_ITERATIVE-NEXT: s_endpgm9624;9625; GFX9_ITERATIVE-LABEL: xor_i64_varying:9626; GFX9_ITERATIVE: ; %bb.0: ; %entry9627; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec9628; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 09629; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09630; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr29631; GFX9_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9632; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19633; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]9634; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s89635; GFX9_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s89636; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s89637; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m09638; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m09639; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9640; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s89641; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]9642; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB20_19643; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9644; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09645; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09646; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09647; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr49648; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc9649; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]9650; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49651; GFX9_ITERATIVE-NEXT: ; %bb.3:9652; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s19653; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09654; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s09655; GFX9_ITERATIVE-NEXT: ds_xor_rtn_b64 v[3:4], v0, v[3:4]9656; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9657; GFX9_ITERATIVE-NEXT: .LBB20_4:9658; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]9659; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249660; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v49661; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v39662; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf0009663; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -19664; GFX9_ITERATIVE-NEXT: v_xor_b32_e32 v2, s4, v29665; GFX9_ITERATIVE-NEXT: v_xor_b32_e32 v1, s5, v19666; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9667; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 09668; GFX9_ITERATIVE-NEXT: s_endpgm9669;9670; GFX1064_ITERATIVE-LABEL: xor_i64_varying:9671; GFX1064_ITERATIVE: ; %bb.0: ; %entry9672; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 09673; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec9674; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09675; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr29676; GFX1064_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9677; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19678; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]9679; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s89680; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s89681; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s89682; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s89683; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s89684; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9685; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[8:9]9686; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB20_19687; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9688; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09689; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr49690; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09691; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09692; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc9693; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]9694; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49695; GFX1064_ITERATIVE-NEXT: ; %bb.3:9696; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s19697; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09698; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s09699; GFX1064_ITERATIVE-NEXT: ds_xor_rtn_b64 v[3:4], v0, v[3:4]9700; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9701; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv9702; GFX1064_ITERATIVE-NEXT: .LBB20_4:9703; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)9704; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]9705; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249706; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v49707; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v39708; GFX1064_ITERATIVE-NEXT: v_xor_b32_e32 v2, s2, v29709; GFX1064_ITERATIVE-NEXT: v_xor_b32_e32 v1, s3, v19710; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009711; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -19712; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9713; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 09714; GFX1064_ITERATIVE-NEXT: s_endpgm9715;9716; GFX1032_ITERATIVE-LABEL: xor_i64_varying:9717; GFX1032_ITERATIVE: ; %bb.0: ; %entry9718; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 09719; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo9720; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09721; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr29722; GFX1032_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9723; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19724; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s29725; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s39726; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s39727; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s39728; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s39729; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s39730; GFX1032_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9731; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s39732; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB20_19733; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9734; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09735; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr49736; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09737; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo9738; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s29739; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49740; GFX1032_ITERATIVE-NEXT: ; %bb.3:9741; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s19742; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 09743; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s09744; GFX1032_ITERATIVE-NEXT: ds_xor_rtn_b64 v[3:4], v0, v[3:4]9745; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9746; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv9747; GFX1032_ITERATIVE-NEXT: .LBB20_4:9748; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)9749; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s29750; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249751; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v49752; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v39753; GFX1032_ITERATIVE-NEXT: v_xor_b32_e32 v2, s2, v29754; GFX1032_ITERATIVE-NEXT: v_xor_b32_e32 v1, s3, v19755; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009756; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -19757; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9758; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 09759; GFX1032_ITERATIVE-NEXT: s_endpgm9760;9761; GFX1164_ITERATIVE-LABEL: xor_i64_varying:9762; GFX1164_ITERATIVE: ; %bb.0: ; %entry9763; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 09764; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v09765; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec9766; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09767; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr19768; GFX1164_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9769; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19770; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s8, s[2:3]9771; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9772; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s89773; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s89774; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s89775; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s89776; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[8:9], 1, s89777; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9778; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[8:9]9779; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB20_19780; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9781; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 09782; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9783; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v29784; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v29785; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr39786; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc9787; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9788; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]9789; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49790; GFX1164_ITERATIVE-NEXT: ; %bb.3:9791; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s19792; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 09793; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s09794; GFX1164_ITERATIVE-NEXT: ds_xor_rtn_b64 v[2:3], v4, v[2:3]9795; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9796; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv9797; GFX1164_ITERATIVE-NEXT: .LBB20_4:9798; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]9799; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x249800; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v39801; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v29802; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9803; GFX1164_ITERATIVE-NEXT: v_xor_b32_e32 v1, s2, v19804; GFX1164_ITERATIVE-NEXT: v_xor_b32_e32 v0, s3, v09805; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009806; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -19807; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9808; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 09809; GFX1164_ITERATIVE-NEXT: s_endpgm9810;9811; GFX1132_ITERATIVE-LABEL: xor_i64_varying:9812; GFX1132_ITERATIVE: ; %bb.0: ; %entry9813; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v09814; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo9815; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], 09816; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr19817; GFX1132_ITERATIVE-NEXT: .LBB20_1: ; %ComputeLoop9818; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=19819; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s29820; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)9821; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s39822; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s39823; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s39824; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s39825; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s39826; GFX1132_ITERATIVE-NEXT: s_xor_b64 s[0:1], s[0:1], s[6:7]9827; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s39828; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB20_19829; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd9830; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 09831; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9832; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v29833; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr39834; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo9835; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s29836; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB20_49837; GFX1132_ITERATIVE-NEXT: ; %bb.3:9838; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s19839; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s09840; GFX1132_ITERATIVE-NEXT: ds_xor_rtn_b64 v[2:3], v4, v[2:3]9841; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9842; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv9843; GFX1132_ITERATIVE-NEXT: .LBB20_4:9844; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s29845; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x249846; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v39847; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v29848; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9849; GFX1132_ITERATIVE-NEXT: v_xor_b32_e32 v1, s2, v19850; GFX1132_ITERATIVE-NEXT: v_xor_b32_e32 v0, s3, v09851; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x310160009852; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -19853; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)9854; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 09855; GFX1132_ITERATIVE-NEXT: s_endpgm9856;9857; GFX7LESS_DPP-LABEL: xor_i64_varying:9858; GFX7LESS_DPP: ; %bb.0: ; %entry9859; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x99860; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 09861; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -19862; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)9863; GFX7LESS_DPP-NEXT: ds_xor_rtn_b64 v[0:1], v1, v[0:1]9864; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)9865; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf0009866; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -19867; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 09868; GFX7LESS_DPP-NEXT: s_endpgm9869;9870; GFX8_DPP-LABEL: xor_i64_varying:9871; GFX8_DPP: ; %bb.0: ; %entry9872; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 09873; GFX8_DPP-NEXT: v_mov_b32_e32 v7, 09874; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v59875; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19876; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]9877; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]9878; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 09879; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19880; GFX8_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19881; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 09882; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19883; GFX8_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19884; GFX8_DPP-NEXT: s_nop 09885; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19886; GFX8_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19887; GFX8_DPP-NEXT: s_nop 09888; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19889; GFX8_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19890; GFX8_DPP-NEXT: s_nop 09891; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf9892; GFX8_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf9893; GFX8_DPP-NEXT: s_nop 09894; GFX8_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf9895; GFX8_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf9896; GFX8_DPP-NEXT: v_readlane_b32 s3, v1, 639897; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 639898; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf9899; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf9900; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]9901; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v59902; GFX8_DPP-NEXT: ; implicit-def: $vgpr5_vgpr69903; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9904; GFX8_DPP-NEXT: s_cbranch_execz .LBB20_29905; GFX8_DPP-NEXT: ; %bb.1:9906; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s39907; GFX8_DPP-NEXT: v_mov_b32_e32 v5, s29908; GFX8_DPP-NEXT: s_mov_b32 m0, -19909; GFX8_DPP-NEXT: ds_xor_rtn_b64 v[5:6], v7, v[5:6]9910; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)9911; GFX8_DPP-NEXT: .LBB20_2:9912; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]9913; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249914; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v69915; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v59916; GFX8_DPP-NEXT: v_mov_b32_e32 v5, v39917; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v49918; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf0009919; GFX8_DPP-NEXT: s_mov_b32 s2, -19920; GFX8_DPP-NEXT: v_xor_b32_e32 v6, s4, v69921; GFX8_DPP-NEXT: v_xor_b32_e32 v5, s5, v59922; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)9923; GFX8_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 09924; GFX8_DPP-NEXT: s_endpgm9925;9926; GFX9_DPP-LABEL: xor_i64_varying:9927; GFX9_DPP: ; %bb.0: ; %entry9928; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 09929; GFX9_DPP-NEXT: v_mov_b32_e32 v7, 09930; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v59931; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19932; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]9933; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]9934; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 09935; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19936; GFX9_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19937; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 09938; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19939; GFX9_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19940; GFX9_DPP-NEXT: s_nop 09941; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19942; GFX9_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19943; GFX9_DPP-NEXT: s_nop 09944; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19945; GFX9_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19946; GFX9_DPP-NEXT: s_nop 09947; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf9948; GFX9_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf9949; GFX9_DPP-NEXT: s_nop 09950; GFX9_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf9951; GFX9_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf9952; GFX9_DPP-NEXT: v_readlane_b32 s3, v1, 639953; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 639954; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v1 wave_shr:1 row_mask:0xf bank_mask:0xf9955; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v2 wave_shr:1 row_mask:0xf bank_mask:0xf9956; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]9957; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v59958; GFX9_DPP-NEXT: ; implicit-def: $vgpr5_vgpr69959; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9960; GFX9_DPP-NEXT: s_cbranch_execz .LBB20_29961; GFX9_DPP-NEXT: ; %bb.1:9962; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s39963; GFX9_DPP-NEXT: v_mov_b32_e32 v5, s29964; GFX9_DPP-NEXT: ds_xor_rtn_b64 v[5:6], v7, v[5:6]9965; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)9966; GFX9_DPP-NEXT: .LBB20_2:9967; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]9968; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249969; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v69970; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v59971; GFX9_DPP-NEXT: v_mov_b32_e32 v5, v39972; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v49973; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf0009974; GFX9_DPP-NEXT: s_mov_b32 s2, -19975; GFX9_DPP-NEXT: v_xor_b32_e32 v6, s4, v69976; GFX9_DPP-NEXT: v_xor_b32_e32 v5, s5, v59977; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)9978; GFX9_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 09979; GFX9_DPP-NEXT: s_endpgm9980;9981; GFX1064_DPP-LABEL: xor_i64_varying:9982; GFX1064_DPP: ; %bb.0: ; %entry9983; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -19984; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]9985; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]9986; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 09987; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 09988; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19989; GFX1064_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:19990; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19991; GFX1064_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:19992; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19993; GFX1064_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:19994; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19995; GFX1064_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:19996; GFX1064_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -19997; GFX1064_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -19998; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf9999; GFX1064_DPP-NEXT: v_xor_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10000; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 3110001; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 3110002; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, s210003; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s310004; GFX1064_DPP-NEXT: v_xor_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf10005; GFX1064_DPP-NEXT: v_xor_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf10006; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]10007; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010008; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110009; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf10010; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 1510011; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf10012; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 1510013; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 3110014; GFX1064_DPP-NEXT: v_readlane_b32 s7, v2, 3110015; GFX1064_DPP-NEXT: v_writelane_b32 v6, s2, 1610016; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 6310017; GFX1064_DPP-NEXT: v_writelane_b32 v5, s3, 1610018; GFX1064_DPP-NEXT: v_readlane_b32 s8, v1, 4710019; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 6310020; GFX1064_DPP-NEXT: v_readlane_b32 s9, v2, 4710021; GFX1064_DPP-NEXT: v_writelane_b32 v6, s6, 3210022; GFX1064_DPP-NEXT: v_writelane_b32 v5, s7, 3210023; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]10024; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v010025; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 010026; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -110027; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]10028; GFX1064_DPP-NEXT: v_writelane_b32 v6, s8, 4810029; GFX1064_DPP-NEXT: v_writelane_b32 v5, s9, 4810030; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]10031; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v710032; GFX1064_DPP-NEXT: s_mov_b32 s2, -110033; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr810034; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc10035; GFX1064_DPP-NEXT: s_cbranch_execz .LBB20_210036; GFX1064_DPP-NEXT: ; %bb.1:10037; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s110038; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s010039; GFX1064_DPP-NEXT: ds_xor_rtn_b64 v[7:8], v0, v[7:8]10040; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)10041; GFX1064_DPP-NEXT: buffer_gl0_inv10042; GFX1064_DPP-NEXT: .LBB20_2:10043; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10044; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]10045; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410046; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v810047; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v510048; GFX1064_DPP-NEXT: v_mov_b32_e32 v9, v610049; GFX1064_DPP-NEXT: s_mov_b32 null, 010050; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v710051; GFX1064_DPP-NEXT: v_xor_b32_e32 v9, s3, v910052; GFX1064_DPP-NEXT: v_xor_b32_e32 v8, s4, v810053; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600010054; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)10055; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[8:9], off, s[0:3], 010056; GFX1064_DPP-NEXT: s_endpgm10057;10058; GFX1032_DPP-LABEL: xor_i64_varying:10059; GFX1032_DPP: ; %bb.0: ; %entry10060; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -110061; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s210062; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s210063; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 010064; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 010065; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:110066; GFX1032_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:110067; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:110068; GFX1032_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:110069; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:110070; GFX1032_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:110071; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:110072; GFX1032_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:110073; GFX1032_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -110074; GFX1032_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -110075; GFX1032_DPP-NEXT: v_xor_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10076; GFX1032_DPP-NEXT: v_xor_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10077; GFX1032_DPP-NEXT: v_readlane_b32 s3, v1, 1510078; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 3110079; GFX1032_DPP-NEXT: v_readlane_b32 s0, v2, 3110080; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf10081; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf10082; GFX1032_DPP-NEXT: v_readlane_b32 s6, v2, 1510083; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s210084; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 010085; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 010086; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -110087; GFX1032_DPP-NEXT: v_writelane_b32 v6, s3, 1610088; GFX1032_DPP-NEXT: v_writelane_b32 v5, s6, 1610089; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s210090; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v710091; GFX1032_DPP-NEXT: s_mov_b32 s2, -110092; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr810093; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo10094; GFX1032_DPP-NEXT: s_cbranch_execz .LBB20_210095; GFX1032_DPP-NEXT: ; %bb.1:10096; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s110097; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s010098; GFX1032_DPP-NEXT: ds_xor_rtn_b64 v[7:8], v0, v[7:8]10099; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)10100; GFX1032_DPP-NEXT: buffer_gl0_inv10101; GFX1032_DPP-NEXT: .LBB20_2:10102; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10103; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s310104; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410105; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v810106; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v510107; GFX1032_DPP-NEXT: v_mov_b32_e32 v9, v610108; GFX1032_DPP-NEXT: s_mov_b32 null, 010109; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v710110; GFX1032_DPP-NEXT: v_xor_b32_e32 v9, s3, v910111; GFX1032_DPP-NEXT: v_xor_b32_e32 v8, s4, v810112; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600010113; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)10114; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[8:9], off, s[0:3], 010115; GFX1032_DPP-NEXT: s_endpgm10116;10117; GFX1164_DPP-LABEL: xor_i64_varying:10118; GFX1164_DPP: ; %bb.0: ; %entry10119; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v010120; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110121; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)10122; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s[0:1]10123; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s[0:1]10124; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, 010125; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 010126; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10127; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:110128; GFX1164_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:110129; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10130; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:110131; GFX1164_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:110132; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10133; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:110134; GFX1164_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:110135; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10136; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:110137; GFX1164_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:110138; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10139; GFX1164_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -110140; GFX1164_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -110141; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10142; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10143; GFX1164_DPP-NEXT: v_xor_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10144; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10145; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 3110146; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 3110147; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10148; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, s210149; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s310150; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10151; GFX1164_DPP-NEXT: v_xor_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf10152; GFX1164_DPP-NEXT: v_xor_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf10153; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)10154; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 1510155; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf10156; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]10157; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010158; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110159; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)10160; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf10161; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 1510162; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 3110163; GFX1164_DPP-NEXT: v_writelane_b32 v6, s2, 1610164; GFX1164_DPP-NEXT: v_readlane_b32 s7, v2, 3110165; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 6310166; GFX1164_DPP-NEXT: v_writelane_b32 v5, s3, 1610167; GFX1164_DPP-NEXT: v_readlane_b32 s8, v1, 4710168; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 6310169; GFX1164_DPP-NEXT: v_writelane_b32 v6, s6, 3210170; GFX1164_DPP-NEXT: v_readlane_b32 s9, v2, 4710171; GFX1164_DPP-NEXT: v_writelane_b32 v5, s7, 3210172; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]10173; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10174; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v010175; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 010176; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -110177; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]10178; GFX1164_DPP-NEXT: v_writelane_b32 v6, s8, 4810179; GFX1164_DPP-NEXT: v_writelane_b32 v5, s9, 4810180; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]10181; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v710182; GFX1164_DPP-NEXT: s_mov_b32 s2, -110183; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr810184; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc10185; GFX1164_DPP-NEXT: s_cbranch_execz .LBB20_210186; GFX1164_DPP-NEXT: ; %bb.1:10187; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s110188; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s010189; GFX1164_DPP-NEXT: ds_xor_rtn_b64 v[7:8], v0, v[7:8]10190; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)10191; GFX1164_DPP-NEXT: buffer_gl0_inv10192; GFX1164_DPP-NEXT: .LBB20_2:10193; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]10194; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2410195; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v810196; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v510197; GFX1164_DPP-NEXT: v_mov_b32_e32 v9, v610198; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v710199; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10200; GFX1164_DPP-NEXT: v_xor_b32_e32 v9, s3, v910201; GFX1164_DPP-NEXT: v_xor_b32_e32 v8, s4, v810202; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600010203; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)10204; GFX1164_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 010205; GFX1164_DPP-NEXT: s_endpgm10206;10207; GFX1132_DPP-LABEL: xor_i64_varying:10208; GFX1132_DPP: ; %bb.0: ; %entry10209; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v010210; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -110211; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)10212; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, 0, s210213; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, 0, v0, s210214; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v5, 010215; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10216; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:110217; GFX1132_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:110218; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10219; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:110220; GFX1132_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:110221; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10222; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:110223; GFX1132_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:110224; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10225; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:110226; GFX1132_DPP-NEXT: v_xor_b32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:110227; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10228; GFX1132_DPP-NEXT: v_permlanex16_b32 v3, v1, -1, -110229; GFX1132_DPP-NEXT: v_permlanex16_b32 v4, v2, -1, -110230; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10231; GFX1132_DPP-NEXT: v_xor_b32_dpp v1, v3, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10232; GFX1132_DPP-NEXT: v_xor_b32_dpp v2, v4, v2 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10233; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)10234; GFX1132_DPP-NEXT: v_readlane_b32 s3, v1, 1510235; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 3110236; GFX1132_DPP-NEXT: v_readlane_b32 s0, v2, 3110237; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v1 row_shr:1 row_mask:0xf bank_mask:0xf10238; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf10239; GFX1132_DPP-NEXT: v_readlane_b32 s6, v2, 1510240; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s210241; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10242; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 010243; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 010244; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -110245; GFX1132_DPP-NEXT: v_writelane_b32 v6, s3, 1610246; GFX1132_DPP-NEXT: v_writelane_b32 v5, s6, 1610247; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s210248; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v710249; GFX1132_DPP-NEXT: s_mov_b32 s2, -110250; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr810251; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo10252; GFX1132_DPP-NEXT: s_cbranch_execz .LBB20_210253; GFX1132_DPP-NEXT: ; %bb.1:10254; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s010255; GFX1132_DPP-NEXT: ds_xor_rtn_b64 v[7:8], v0, v[7:8]10256; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)10257; GFX1132_DPP-NEXT: buffer_gl0_inv10258; GFX1132_DPP-NEXT: .LBB20_2:10259; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s310260; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2410261; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v810262; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v510263; GFX1132_DPP-NEXT: v_mov_b32_e32 v9, v610264; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v710265; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10266; GFX1132_DPP-NEXT: v_xor_b32_e32 v9, s3, v910267; GFX1132_DPP-NEXT: v_xor_b32_e32 v8, s4, v810268; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600010269; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)10270; GFX1132_DPP-NEXT: buffer_store_b64 v[8:9], off, s[0:3], 010271; GFX1132_DPP-NEXT: s_endpgm10272entry:10273 %lane = call i32 @llvm.amdgcn.workitem.id.x()10274 %lane_ext = zext i32 %lane to i6410275 %old = atomicrmw xor ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel10276 store i64 %old, ptr addrspace(1) %out10277 ret void10278}10279 10280define amdgpu_kernel void @max_i32_varying(ptr addrspace(1) %out) {10281; GFX7LESS_ITERATIVE-LABEL: max_i32_varying:10282; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry10283; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec10284; GFX7LESS_ITERATIVE-NEXT: s_brev_b32 s2, 110285; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr110286; GFX7LESS_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10287; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110288; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]10289; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s310290; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s310291; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m010292; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s310293; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]10294; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 010295; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]10296; GFX7LESS_ITERATIVE-NEXT: s_max_i32 s2, s2, s810297; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB21_110298; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10299; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 010300; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v010301; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010302; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr010303; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc10304; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10305; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410306; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:10307; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 010308; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s210309; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -110310; GFX7LESS_ITERATIVE-NEXT: ds_max_rtn_i32 v0, v0, v210311; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10312; GFX7LESS_ITERATIVE-NEXT: .LBB21_4:10313; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]10314; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x910315; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00010316; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -110317; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v010318; GFX7LESS_ITERATIVE-NEXT: v_max_i32_e32 v0, s4, v110319; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10320; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 010321; GFX7LESS_ITERATIVE-NEXT: s_endpgm10322;10323; GFX8_ITERATIVE-LABEL: max_i32_varying:10324; GFX8_ITERATIVE: ; %bb.0: ; %entry10325; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec10326; GFX8_ITERATIVE-NEXT: s_brev_b32 s2, 110327; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr110328; GFX8_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10329; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110330; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]10331; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s310332; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s310333; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m010334; GFX8_ITERATIVE-NEXT: s_max_i32 s2, s2, s610335; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s310336; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]10337; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB21_110338; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10339; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010340; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010341; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010342; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr010343; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc10344; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10345; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410346; GFX8_ITERATIVE-NEXT: ; %bb.3:10347; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 010348; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s210349; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -110350; GFX8_ITERATIVE-NEXT: ds_max_rtn_i32 v0, v0, v210351; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10352; GFX8_ITERATIVE-NEXT: .LBB21_4:10353; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]10354; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410355; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v010356; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00010357; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -110358; GFX8_ITERATIVE-NEXT: v_max_i32_e32 v0, s4, v110359; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10360; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 010361; GFX8_ITERATIVE-NEXT: s_endpgm10362;10363; GFX9_ITERATIVE-LABEL: max_i32_varying:10364; GFX9_ITERATIVE: ; %bb.0: ; %entry10365; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec10366; GFX9_ITERATIVE-NEXT: s_brev_b32 s2, 110367; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr110368; GFX9_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10369; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110370; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]10371; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s310372; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s310373; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m010374; GFX9_ITERATIVE-NEXT: s_max_i32 s2, s2, s610375; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s310376; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]10377; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB21_110378; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10379; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010380; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010381; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010382; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr010383; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc10384; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10385; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410386; GFX9_ITERATIVE-NEXT: ; %bb.3:10387; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 010388; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s210389; GFX9_ITERATIVE-NEXT: ds_max_rtn_i32 v0, v0, v210390; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10391; GFX9_ITERATIVE-NEXT: .LBB21_4:10392; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]10393; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410394; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v010395; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00010396; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -110397; GFX9_ITERATIVE-NEXT: v_max_i32_e32 v0, s4, v110398; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10399; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 010400; GFX9_ITERATIVE-NEXT: s_endpgm10401;10402; GFX1064_ITERATIVE-LABEL: max_i32_varying:10403; GFX1064_ITERATIVE: ; %bb.0: ; %entry10404; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec10405; GFX1064_ITERATIVE-NEXT: s_brev_b32 s2, 110406; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr110407; GFX1064_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10408; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110409; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]10410; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s310411; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s310412; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s310413; GFX1064_ITERATIVE-NEXT: s_max_i32 s2, s2, s810414; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]10415; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB21_110416; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10417; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010418; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010419; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010420; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr010421; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc10422; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10423; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410424; GFX1064_ITERATIVE-NEXT: ; %bb.3:10425; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 010426; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s210427; GFX1064_ITERATIVE-NEXT: ds_max_rtn_i32 v0, v0, v210428; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10429; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv10430; GFX1064_ITERATIVE-NEXT: .LBB21_4:10431; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10432; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]10433; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410434; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v010435; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600010436; GFX1064_ITERATIVE-NEXT: v_max_i32_e32 v0, s2, v110437; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -110438; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10439; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 010440; GFX1064_ITERATIVE-NEXT: s_endpgm10441;10442; GFX1032_ITERATIVE-LABEL: max_i32_varying:10443; GFX1032_ITERATIVE: ; %bb.0: ; %entry10444; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo10445; GFX1032_ITERATIVE-NEXT: s_brev_b32 s0, 110446; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr110447; GFX1032_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10448; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110449; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s110450; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s210451; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s210452; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s210453; GFX1032_ITERATIVE-NEXT: s_max_i32 s0, s0, s310454; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s210455; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB21_110456; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10457; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010458; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v010459; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr010460; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo10461; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s110462; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410463; GFX1032_ITERATIVE-NEXT: ; %bb.3:10464; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 010465; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s010466; GFX1032_ITERATIVE-NEXT: ds_max_rtn_i32 v0, v0, v210467; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10468; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv10469; GFX1032_ITERATIVE-NEXT: .LBB21_4:10470; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10471; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s110472; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410473; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v010474; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600010475; GFX1032_ITERATIVE-NEXT: v_max_i32_e32 v0, s2, v110476; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -110477; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10478; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 010479; GFX1032_ITERATIVE-NEXT: s_endpgm10480;10481; GFX1164_ITERATIVE-LABEL: max_i32_varying:10482; GFX1164_ITERATIVE: ; %bb.0: ; %entry10483; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v010484; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec10485; GFX1164_ITERATIVE-NEXT: s_brev_b32 s2, 110486; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr010487; GFX1164_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10488; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110489; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]10490; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)10491; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s310492; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s310493; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s310494; GFX1164_ITERATIVE-NEXT: s_max_i32 s2, s2, s810495; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]10496; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB21_110497; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10498; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 010499; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10500; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v110501; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v110502; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr110503; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc10504; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10505; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10506; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410507; GFX1164_ITERATIVE-NEXT: ; %bb.3:10508; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 010509; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s210510; GFX1164_ITERATIVE-NEXT: ds_max_rtn_i32 v1, v1, v210511; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10512; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv10513; GFX1164_ITERATIVE-NEXT: .LBB21_4:10514; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]10515; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2410516; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v110517; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600010518; GFX1164_ITERATIVE-NEXT: v_max_i32_e32 v0, s2, v010519; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -110520; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10521; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 010522; GFX1164_ITERATIVE-NEXT: s_endpgm10523;10524; GFX1132_ITERATIVE-LABEL: max_i32_varying:10525; GFX1132_ITERATIVE: ; %bb.0: ; %entry10526; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v010527; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo10528; GFX1132_ITERATIVE-NEXT: s_brev_b32 s0, 110529; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr010530; GFX1132_ITERATIVE-NEXT: .LBB21_1: ; %ComputeLoop10531; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=110532; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s110533; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)10534; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s210535; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s210536; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s210537; GFX1132_ITERATIVE-NEXT: s_max_i32 s0, s0, s310538; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s210539; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB21_110540; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd10541; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 010542; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10543; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v110544; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr110545; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo10546; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s110547; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB21_410548; GFX1132_ITERATIVE-NEXT: ; %bb.3:10549; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s010550; GFX1132_ITERATIVE-NEXT: ds_max_rtn_i32 v1, v1, v210551; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10552; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv10553; GFX1132_ITERATIVE-NEXT: .LBB21_4:10554; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s110555; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2410556; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v110557; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600010558; GFX1132_ITERATIVE-NEXT: v_max_i32_e32 v0, s2, v010559; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -110560; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)10561; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 010562; GFX1132_ITERATIVE-NEXT: s_endpgm10563;10564; GFX7LESS_DPP-LABEL: max_i32_varying:10565; GFX7LESS_DPP: ; %bb.0: ; %entry10566; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x910567; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 010568; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -110569; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)10570; GFX7LESS_DPP-NEXT: ds_max_rtn_i32 v0, v1, v010571; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)10572; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00010573; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -110574; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 010575; GFX7LESS_DPP-NEXT: s_endpgm10576;10577; GFX8_DPP-LABEL: max_i32_varying:10578; GFX8_DPP: ; %bb.0: ; %entry10579; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 010580; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v310581; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110582; GFX8_DPP-NEXT: v_bfrev_b32_e32 v1, 110583; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, v1, v0, s[0:1]10584; GFX8_DPP-NEXT: s_nop 110585; GFX8_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf10586; GFX8_DPP-NEXT: s_nop 110587; GFX8_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf10588; GFX8_DPP-NEXT: s_nop 110589; GFX8_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf10590; GFX8_DPP-NEXT: s_nop 110591; GFX8_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf10592; GFX8_DPP-NEXT: s_nop 110593; GFX8_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf10594; GFX8_DPP-NEXT: s_nop 110595; GFX8_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf10596; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 6310597; GFX8_DPP-NEXT: s_nop 010598; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf10599; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]10600; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v310601; GFX8_DPP-NEXT: ; implicit-def: $vgpr010602; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc10603; GFX8_DPP-NEXT: s_cbranch_execz .LBB21_210604; GFX8_DPP-NEXT: ; %bb.1:10605; GFX8_DPP-NEXT: v_mov_b32_e32 v0, 010606; GFX8_DPP-NEXT: v_mov_b32_e32 v3, s210607; GFX8_DPP-NEXT: s_mov_b32 m0, -110608; GFX8_DPP-NEXT: ds_max_rtn_i32 v0, v0, v310609; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)10610; GFX8_DPP-NEXT: .LBB21_2:10611; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]10612; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410613; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v010614; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v110615; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00010616; GFX8_DPP-NEXT: s_mov_b32 s2, -110617; GFX8_DPP-NEXT: v_max_i32_e32 v0, s4, v010618; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)10619; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 010620; GFX8_DPP-NEXT: s_endpgm10621;10622; GFX9_DPP-LABEL: max_i32_varying:10623; GFX9_DPP: ; %bb.0: ; %entry10624; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 010625; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v310626; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110627; GFX9_DPP-NEXT: v_bfrev_b32_e32 v1, 110628; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, v1, v0, s[0:1]10629; GFX9_DPP-NEXT: s_nop 110630; GFX9_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf10631; GFX9_DPP-NEXT: s_nop 110632; GFX9_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf10633; GFX9_DPP-NEXT: s_nop 110634; GFX9_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf10635; GFX9_DPP-NEXT: s_nop 110636; GFX9_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf10637; GFX9_DPP-NEXT: s_nop 110638; GFX9_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf10639; GFX9_DPP-NEXT: s_nop 110640; GFX9_DPP-NEXT: v_max_i32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf10641; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 6310642; GFX9_DPP-NEXT: s_nop 010643; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf10644; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]10645; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v310646; GFX9_DPP-NEXT: ; implicit-def: $vgpr010647; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc10648; GFX9_DPP-NEXT: s_cbranch_execz .LBB21_210649; GFX9_DPP-NEXT: ; %bb.1:10650; GFX9_DPP-NEXT: v_mov_b32_e32 v0, 010651; GFX9_DPP-NEXT: v_mov_b32_e32 v3, s210652; GFX9_DPP-NEXT: ds_max_rtn_i32 v0, v0, v310653; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)10654; GFX9_DPP-NEXT: .LBB21_2:10655; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]10656; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410657; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v010658; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v110659; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00010660; GFX9_DPP-NEXT: s_mov_b32 s2, -110661; GFX9_DPP-NEXT: v_max_i32_e32 v0, s4, v010662; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)10663; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 010664; GFX9_DPP-NEXT: s_endpgm10665;10666; GFX1064_DPP-LABEL: max_i32_varying:10667; GFX1064_DPP: ; %bb.0: ; %entry10668; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110669; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0x80000000, v0, s[0:1]10670; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v3, 110671; GFX1064_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf10672; GFX1064_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf10673; GFX1064_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf10674; GFX1064_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf10675; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -110676; GFX1064_DPP-NEXT: v_max_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10677; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 3110678; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s210679; GFX1064_DPP-NEXT: v_max_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf10680; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf10681; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 1510682; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3110683; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 1610684; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]10685; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010686; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110687; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 4710688; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 6310689; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 3210690; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]10691; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010692; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110693; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 4810694; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]10695; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010696; GFX1064_DPP-NEXT: s_mov_b32 s2, -110697; GFX1064_DPP-NEXT: ; implicit-def: $vgpr010698; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc10699; GFX1064_DPP-NEXT: s_cbranch_execz .LBB21_210700; GFX1064_DPP-NEXT: ; %bb.1:10701; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 010702; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s610703; GFX1064_DPP-NEXT: ds_max_rtn_i32 v0, v0, v410704; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)10705; GFX1064_DPP-NEXT: buffer_gl0_inv10706; GFX1064_DPP-NEXT: .LBB21_2:10707; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10708; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]10709; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410710; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v010711; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v310712; GFX1064_DPP-NEXT: v_max_i32_e32 v0, s3, v010713; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600010714; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)10715; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 010716; GFX1064_DPP-NEXT: s_endpgm10717;10718; GFX1032_DPP-LABEL: max_i32_varying:10719; GFX1032_DPP: ; %bb.0: ; %entry10720; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -110721; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0x80000000, v0, s010722; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v3, 110723; GFX1032_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf10724; GFX1032_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf10725; GFX1032_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf10726; GFX1032_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf10727; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -110728; GFX1032_DPP-NEXT: v_max_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10729; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 1510730; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 3110731; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf10732; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s010733; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010734; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -110735; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 1610736; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s010737; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v010738; GFX1032_DPP-NEXT: s_mov_b32 s0, s210739; GFX1032_DPP-NEXT: s_mov_b32 s2, -110740; GFX1032_DPP-NEXT: ; implicit-def: $vgpr010741; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo10742; GFX1032_DPP-NEXT: s_cbranch_execz .LBB21_210743; GFX1032_DPP-NEXT: ; %bb.1:10744; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 010745; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, s010746; GFX1032_DPP-NEXT: ds_max_rtn_i32 v0, v0, v410747; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)10748; GFX1032_DPP-NEXT: buffer_gl0_inv10749; GFX1032_DPP-NEXT: .LBB21_2:10750; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10751; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s110752; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410753; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v010754; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v310755; GFX1032_DPP-NEXT: v_max_i32_e32 v0, s3, v010756; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600010757; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)10758; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 010759; GFX1032_DPP-NEXT: s_endpgm10760;10761; GFX1164_DPP-LABEL: max_i32_varying:10762; GFX1164_DPP: ; %bb.0: ; %entry10763; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v010764; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110765; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)10766; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0x80000000, v0, s[0:1]10767; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v3, 110768; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10769; GFX1164_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf10770; GFX1164_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf10771; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10772; GFX1164_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf10773; GFX1164_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf10774; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10775; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -110776; GFX1164_DPP-NEXT: v_max_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10777; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10778; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 3110779; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s210780; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10781; GFX1164_DPP-NEXT: v_max_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf10782; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf10783; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 1510784; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3110785; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10786; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 1610787; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]10788; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010789; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110790; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)10791; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 4710792; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 6310793; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 3210794; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]10795; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)10796; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010797; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -110798; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 4810799; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]10800; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010801; GFX1164_DPP-NEXT: s_mov_b32 s2, -110802; GFX1164_DPP-NEXT: ; implicit-def: $vgpr010803; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc10804; GFX1164_DPP-NEXT: s_cbranch_execz .LBB21_210805; GFX1164_DPP-NEXT: ; %bb.1:10806; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 010807; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s610808; GFX1164_DPP-NEXT: ds_max_rtn_i32 v0, v0, v410809; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)10810; GFX1164_DPP-NEXT: buffer_gl0_inv10811; GFX1164_DPP-NEXT: .LBB21_2:10812; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]10813; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2410814; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v010815; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v310816; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)10817; GFX1164_DPP-NEXT: v_max_i32_e32 v0, s3, v010818; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600010819; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)10820; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 010821; GFX1164_DPP-NEXT: s_endpgm10822;10823; GFX1132_DPP-LABEL: max_i32_varying:10824; GFX1132_DPP: ; %bb.0: ; %entry10825; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v010826; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -110827; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)10828; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0x80000000, v0, s010829; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v3, 110830; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10831; GFX1132_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf10832; GFX1132_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf10833; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10834; GFX1132_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf10835; GFX1132_DPP-NEXT: v_max_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf10836; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10837; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -110838; GFX1132_DPP-NEXT: v_max_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf10839; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)10840; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 1510841; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 3110842; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf10843; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s010844; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010845; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -110846; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 1610847; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s010848; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)10849; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v010850; GFX1132_DPP-NEXT: s_mov_b32 s0, s210851; GFX1132_DPP-NEXT: s_mov_b32 s2, -110852; GFX1132_DPP-NEXT: ; implicit-def: $vgpr010853; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo10854; GFX1132_DPP-NEXT: s_cbranch_execz .LBB21_210855; GFX1132_DPP-NEXT: ; %bb.1:10856; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 010857; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, s010858; GFX1132_DPP-NEXT: ds_max_rtn_i32 v0, v0, v410859; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)10860; GFX1132_DPP-NEXT: buffer_gl0_inv10861; GFX1132_DPP-NEXT: .LBB21_2:10862; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s110863; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2410864; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v010865; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v310866; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)10867; GFX1132_DPP-NEXT: v_max_i32_e32 v0, s3, v010868; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600010869; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)10870; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 010871; GFX1132_DPP-NEXT: s_endpgm10872entry:10873 %lane = call i32 @llvm.amdgcn.workitem.id.x()10874 %old = atomicrmw max ptr addrspace(3) @local_var32, i32 %lane acq_rel10875 store i32 %old, ptr addrspace(1) %out10876 ret void10877}10878 10879define amdgpu_kernel void @max_i64_constant(ptr addrspace(1) %out) {10880; GFX7LESS-LABEL: max_i64_constant:10881; GFX7LESS: ; %bb.0: ; %entry10882; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 010883; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v010884; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010885; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr110886; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc10887; GFX7LESS-NEXT: s_cbranch_execz .LBB22_210888; GFX7LESS-NEXT: ; %bb.1:10889; GFX7LESS-NEXT: v_mov_b32_e32 v0, 510890; GFX7LESS-NEXT: v_mov_b32_e32 v1, 010891; GFX7LESS-NEXT: v_mov_b32_e32 v2, 010892; GFX7LESS-NEXT: s_mov_b32 m0, -110893; GFX7LESS-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]10894; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)10895; GFX7LESS-NEXT: .LBB22_2:10896; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]10897; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x910898; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00010899; GFX7LESS-NEXT: s_mov_b32 s2, -110900; GFX7LESS-NEXT: v_readfirstlane_b32 s5, v110901; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v010902; GFX7LESS-NEXT: v_bfrev_b32_e32 v1, 110903; GFX7LESS-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc10904; GFX7LESS-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc10905; GFX7LESS-NEXT: v_mov_b32_e32 v2, s510906; GFX7LESS-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[0:1]10907; GFX7LESS-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc10908; GFX7LESS-NEXT: v_mov_b32_e32 v2, s410909; GFX7LESS-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc10910; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)10911; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 010912; GFX7LESS-NEXT: s_endpgm10913;10914; GFX8-LABEL: max_i64_constant:10915; GFX8: ; %bb.0: ; %entry10916; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010917; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010918; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010919; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr110920; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc10921; GFX8-NEXT: s_cbranch_execz .LBB22_210922; GFX8-NEXT: ; %bb.1:10923; GFX8-NEXT: v_mov_b32_e32 v0, 510924; GFX8-NEXT: v_mov_b32_e32 v1, 010925; GFX8-NEXT: v_mov_b32_e32 v2, 010926; GFX8-NEXT: s_mov_b32 m0, -110927; GFX8-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]10928; GFX8-NEXT: s_waitcnt lgkmcnt(0)10929; GFX8-NEXT: .LBB22_2:10930; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]10931; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410932; GFX8-NEXT: v_readfirstlane_b32 s4, v010933; GFX8-NEXT: v_bfrev_b32_e32 v0, 110934; GFX8-NEXT: v_readfirstlane_b32 s5, v110935; GFX8-NEXT: v_cndmask_b32_e32 v1, 0, v0, vcc10936; GFX8-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc10937; GFX8-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[0:1]10938; GFX8-NEXT: v_mov_b32_e32 v2, s510939; GFX8-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc10940; GFX8-NEXT: v_mov_b32_e32 v2, s410941; GFX8-NEXT: s_mov_b32 s3, 0xf00010942; GFX8-NEXT: s_mov_b32 s2, -110943; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc10944; GFX8-NEXT: s_waitcnt lgkmcnt(0)10945; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 010946; GFX8-NEXT: s_endpgm10947;10948; GFX9-LABEL: max_i64_constant:10949; GFX9: ; %bb.0: ; %entry10950; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010951; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010952; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010953; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr110954; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc10955; GFX9-NEXT: s_cbranch_execz .LBB22_210956; GFX9-NEXT: ; %bb.1:10957; GFX9-NEXT: v_mov_b32_e32 v0, 510958; GFX9-NEXT: v_mov_b32_e32 v1, 010959; GFX9-NEXT: v_mov_b32_e32 v2, 010960; GFX9-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]10961; GFX9-NEXT: s_waitcnt lgkmcnt(0)10962; GFX9-NEXT: .LBB22_2:10963; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]10964; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410965; GFX9-NEXT: v_readfirstlane_b32 s4, v010966; GFX9-NEXT: v_bfrev_b32_e32 v0, 110967; GFX9-NEXT: v_readfirstlane_b32 s5, v110968; GFX9-NEXT: v_cndmask_b32_e32 v1, 0, v0, vcc10969; GFX9-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc10970; GFX9-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[0:1]10971; GFX9-NEXT: v_mov_b32_e32 v2, s510972; GFX9-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc10973; GFX9-NEXT: v_mov_b32_e32 v2, s410974; GFX9-NEXT: s_mov_b32 s3, 0xf00010975; GFX9-NEXT: s_mov_b32 s2, -110976; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc10977; GFX9-NEXT: s_waitcnt lgkmcnt(0)10978; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 010979; GFX9-NEXT: s_endpgm10980;10981; GFX1064-LABEL: max_i64_constant:10982; GFX1064: ; %bb.0: ; %entry10983; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010984; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010985; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010986; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr110987; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc10988; GFX1064-NEXT: s_cbranch_execz .LBB22_210989; GFX1064-NEXT: ; %bb.1:10990; GFX1064-NEXT: v_mov_b32_e32 v0, 510991; GFX1064-NEXT: v_mov_b32_e32 v1, 010992; GFX1064-NEXT: v_mov_b32_e32 v2, 010993; GFX1064-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]10994; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10995; GFX1064-NEXT: buffer_gl0_inv10996; GFX1064-NEXT: .LBB22_2:10997; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)10998; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]10999; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411000; GFX1064-NEXT: v_readfirstlane_b32 s3, v111001; GFX1064-NEXT: v_readfirstlane_b32 s2, v011002; GFX1064-NEXT: v_cndmask_b32_e64 v1, 0, 0x80000000, vcc11003; GFX1064-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc11004; GFX1064-NEXT: v_cmp_gt_i64_e32 vcc, s[2:3], v[0:1]11005; GFX1064-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc11006; GFX1064-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc11007; GFX1064-NEXT: s_mov_b32 s3, 0x3101600011008; GFX1064-NEXT: s_mov_b32 s2, -111009; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11010; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 011011; GFX1064-NEXT: s_endpgm11012;11013; GFX1032-LABEL: max_i64_constant:11014; GFX1032: ; %bb.0: ; %entry11015; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011016; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011017; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr111018; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo11019; GFX1032-NEXT: s_cbranch_execz .LBB22_211020; GFX1032-NEXT: ; %bb.1:11021; GFX1032-NEXT: v_mov_b32_e32 v0, 511022; GFX1032-NEXT: v_mov_b32_e32 v1, 011023; GFX1032-NEXT: v_mov_b32_e32 v2, 011024; GFX1032-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]11025; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11026; GFX1032-NEXT: buffer_gl0_inv11027; GFX1032-NEXT: .LBB22_2:11028; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)11029; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s011030; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411031; GFX1032-NEXT: v_readfirstlane_b32 s3, v111032; GFX1032-NEXT: v_readfirstlane_b32 s2, v011033; GFX1032-NEXT: v_cndmask_b32_e64 v1, 0, 0x80000000, vcc_lo11034; GFX1032-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc_lo11035; GFX1032-NEXT: v_cmp_gt_i64_e32 vcc_lo, s[2:3], v[0:1]11036; GFX1032-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo11037; GFX1032-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo11038; GFX1032-NEXT: s_mov_b32 s3, 0x3101600011039; GFX1032-NEXT: s_mov_b32 s2, -111040; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11041; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 011042; GFX1032-NEXT: s_endpgm11043;11044; GFX1164-LABEL: max_i64_constant:11045; GFX1164: ; %bb.0: ; %entry11046; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011047; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11048; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011049; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011050; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr111051; GFX1164-NEXT: s_and_saveexec_b64 s[0:1], vcc11052; GFX1164-NEXT: s_cbranch_execz .LBB22_211053; GFX1164-NEXT: ; %bb.1:11054; GFX1164-NEXT: v_mov_b32_e32 v0, 511055; GFX1164-NEXT: v_mov_b32_e32 v1, 011056; GFX1164-NEXT: v_mov_b32_e32 v2, 011057; GFX1164-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]11058; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11059; GFX1164-NEXT: buffer_gl0_inv11060; GFX1164-NEXT: .LBB22_2:11061; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]11062; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411063; GFX1164-NEXT: v_readfirstlane_b32 s3, v111064; GFX1164-NEXT: v_readfirstlane_b32 s2, v011065; GFX1164-NEXT: v_cndmask_b32_e64 v1, 0, 0x80000000, vcc11066; GFX1164-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc11067; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)11068; GFX1164-NEXT: v_cmp_gt_i64_e32 vcc, s[2:3], v[0:1]11069; GFX1164-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11070; GFX1164-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc11071; GFX1164-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc11072; GFX1164-NEXT: s_mov_b32 s3, 0x3101600011073; GFX1164-NEXT: s_mov_b32 s2, -111074; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11075; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 011076; GFX1164-NEXT: s_endpgm11077;11078; GFX1132-LABEL: max_i64_constant:11079; GFX1132: ; %bb.0: ; %entry11080; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011081; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)11082; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011083; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr111084; GFX1132-NEXT: s_and_saveexec_b32 s0, vcc_lo11085; GFX1132-NEXT: s_cbranch_execz .LBB22_211086; GFX1132-NEXT: ; %bb.1:11087; GFX1132-NEXT: v_mov_b32_e32 v0, 511088; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, 011089; GFX1132-NEXT: ds_max_rtn_i64 v[0:1], v2, v[0:1]11090; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11091; GFX1132-NEXT: buffer_gl0_inv11092; GFX1132-NEXT: .LBB22_2:11093; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s011094; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411095; GFX1132-NEXT: v_readfirstlane_b32 s3, v111096; GFX1132-NEXT: v_readfirstlane_b32 s2, v011097; GFX1132-NEXT: v_cndmask_b32_e64 v1, 0, 0x80000000, vcc_lo11098; GFX1132-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc_lo11099; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)11100; GFX1132-NEXT: v_cmp_gt_i64_e32 vcc_lo, s[2:3], v[0:1]11101; GFX1132-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo11102; GFX1132-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo11103; GFX1132-NEXT: s_mov_b32 s3, 0x3101600011104; GFX1132-NEXT: s_mov_b32 s2, -111105; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11106; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 011107; GFX1132-NEXT: s_endpgm11108entry:11109 %old = atomicrmw max ptr addrspace(3) @local_var64, i64 5 acq_rel11110 store i64 %old, ptr addrspace(1) %out11111 ret void11112}11113 11114define amdgpu_kernel void @max_i64_varying(ptr addrspace(1) %out) {11115; GFX7LESS_ITERATIVE-LABEL: max_i64_varying:11116; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry11117; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec11118; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 011119; GFX7LESS_ITERATIVE-NEXT: s_brev_b32 s1, 111120; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s0, 011121; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr211122; GFX7LESS_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11123; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111124; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]11125; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s811126; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s811127; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s811128; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m011129; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m011130; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1011131; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v5, s911132; GFX7LESS_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[0:1], v[4:5]11133; GFX7LESS_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec11134; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s911135; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1011136; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s811137; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]11138; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[2:3], 011139; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]11140; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB23_111141; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11142; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 011143; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v011144; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011145; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr411146; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc11147; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]11148; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411149; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:11150; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 011151; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s111152; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s011153; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -111154; GFX7LESS_ITERATIVE-NEXT: ds_max_rtn_i64 v[3:4], v0, v[3:4]11155; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11156; GFX7LESS_ITERATIVE-NEXT: .LBB23_4:11157; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]11158; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x911159; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00011160; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -111161; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v411162; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v311163; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s511164; GFX7LESS_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[1:2]11165; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc11166; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s411167; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc11168; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11169; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 011170; GFX7LESS_ITERATIVE-NEXT: s_endpgm11171;11172; GFX8_ITERATIVE-LABEL: max_i64_varying:11173; GFX8_ITERATIVE: ; %bb.0: ; %entry11174; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec11175; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 011176; GFX8_ITERATIVE-NEXT: s_brev_b32 s1, 111177; GFX8_ITERATIVE-NEXT: s_mov_b32 s0, 011178; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr211179; GFX8_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11180; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111181; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]11182; GFX8_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s811183; GFX8_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s811184; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1011185; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v5, s911186; GFX8_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[0:1], v[4:5]11187; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s811188; GFX8_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec11189; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m011190; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m011191; GFX8_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s911192; GFX8_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1011193; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s811194; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]11195; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB23_111196; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11197; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011198; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011199; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011200; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr411201; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc11202; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]11203; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411204; GFX8_ITERATIVE-NEXT: ; %bb.3:11205; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s111206; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 011207; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s011208; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -111209; GFX8_ITERATIVE-NEXT: ds_max_rtn_i64 v[3:4], v0, v[3:4]11210; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11211; GFX8_ITERATIVE-NEXT: .LBB23_4:11212; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]11213; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411214; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v411215; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v311216; GFX8_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[1:2]11217; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s511218; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc11219; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s411220; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00011221; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -111222; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc11223; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11224; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 011225; GFX8_ITERATIVE-NEXT: s_endpgm11226;11227; GFX9_ITERATIVE-LABEL: max_i64_varying:11228; GFX9_ITERATIVE: ; %bb.0: ; %entry11229; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec11230; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 011231; GFX9_ITERATIVE-NEXT: s_brev_b32 s1, 111232; GFX9_ITERATIVE-NEXT: s_mov_b32 s0, 011233; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr211234; GFX9_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11235; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111236; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]11237; GFX9_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s811238; GFX9_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s811239; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1011240; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v5, s911241; GFX9_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[0:1], v[4:5]11242; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s811243; GFX9_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec11244; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m011245; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m011246; GFX9_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s911247; GFX9_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1011248; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s811249; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]11250; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB23_111251; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11252; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011253; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011254; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011255; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr411256; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc11257; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]11258; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411259; GFX9_ITERATIVE-NEXT: ; %bb.3:11260; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s111261; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 011262; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s011263; GFX9_ITERATIVE-NEXT: ds_max_rtn_i64 v[3:4], v0, v[3:4]11264; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11265; GFX9_ITERATIVE-NEXT: .LBB23_4:11266; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]11267; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411268; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v411269; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v311270; GFX9_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[1:2]11271; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s511272; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc11273; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s411274; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00011275; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -111276; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc11277; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11278; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 011279; GFX9_ITERATIVE-NEXT: s_endpgm11280;11281; GFX1064_ITERATIVE-LABEL: max_i64_varying:11282; GFX1064_ITERATIVE: ; %bb.0: ; %entry11283; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 011284; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec11285; GFX1064_ITERATIVE-NEXT: s_brev_b32 s1, 111286; GFX1064_ITERATIVE-NEXT: s_mov_b32 s0, 011287; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr211288; GFX1064_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11289; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111290; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s10, s[2:3]11291; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s1011292; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s1011293; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s1011294; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s1011295; GFX1064_ITERATIVE-NEXT: v_cmp_gt_i64_e64 s[8:9], s[0:1], s[6:7]11296; GFX1064_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec11297; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s711298; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s611299; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1011300; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]11301; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB23_111302; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11303; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011304; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr411305; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011306; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011307; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc11308; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]11309; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411310; GFX1064_ITERATIVE-NEXT: ; %bb.3:11311; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s111312; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 011313; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s011314; GFX1064_ITERATIVE-NEXT: ds_max_rtn_i64 v[3:4], v0, v[3:4]11315; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11316; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv11317; GFX1064_ITERATIVE-NEXT: .LBB23_4:11318; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)11319; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]11320; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411321; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v411322; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v311323; GFX1064_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[2:3], v[1:2]11324; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc11325; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc11326; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600011327; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -111328; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11329; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 011330; GFX1064_ITERATIVE-NEXT: s_endpgm11331;11332; GFX1032_ITERATIVE-LABEL: max_i64_varying:11333; GFX1032_ITERATIVE: ; %bb.0: ; %entry11334; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 011335; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo11336; GFX1032_ITERATIVE-NEXT: s_brev_b32 s1, 111337; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 011338; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr211339; GFX1032_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11340; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111341; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s211342; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s311343; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s311344; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s311345; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s311346; GFX1032_ITERATIVE-NEXT: v_cmp_gt_i64_e64 s8, s[0:1], s[6:7]11347; GFX1032_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo11348; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s711349; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s611350; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s311351; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s311352; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB23_111353; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11354; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011355; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr411356; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011357; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo11358; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s211359; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411360; GFX1032_ITERATIVE-NEXT: ; %bb.3:11361; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s111362; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 011363; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s011364; GFX1032_ITERATIVE-NEXT: ds_max_rtn_i64 v[3:4], v0, v[3:4]11365; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11366; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv11367; GFX1032_ITERATIVE-NEXT: .LBB23_4:11368; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)11369; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s211370; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411371; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v411372; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v311373; GFX1032_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc_lo, s[2:3], v[1:2]11374; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc_lo11375; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc_lo11376; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600011377; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -111378; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11379; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 011380; GFX1032_ITERATIVE-NEXT: s_endpgm11381;11382; GFX1164_ITERATIVE-LABEL: max_i64_varying:11383; GFX1164_ITERATIVE: ; %bb.0: ; %entry11384; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 011385; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v011386; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec11387; GFX1164_ITERATIVE-NEXT: s_brev_b32 s1, 111388; GFX1164_ITERATIVE-NEXT: s_mov_b32 s0, 011389; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr111390; GFX1164_ITERATIVE-NEXT: .p2align 611391; GFX1164_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11392; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111393; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s10, s[2:3]11394; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)11395; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s1011396; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s1011397; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s1011398; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s1011399; GFX1164_ITERATIVE-NEXT: v_cmp_gt_i64_e64 s[8:9], s[0:1], s[6:7]11400; GFX1164_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec11401; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s711402; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s611403; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1011404; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11405; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[6:7]11406; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB23_111407; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11408; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011409; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11410; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v211411; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v211412; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr311413; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc11414; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11415; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]11416; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411417; GFX1164_ITERATIVE-NEXT: ; %bb.3:11418; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s111419; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 011420; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s011421; GFX1164_ITERATIVE-NEXT: ds_max_rtn_i64 v[2:3], v4, v[2:3]11422; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11423; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv11424; GFX1164_ITERATIVE-NEXT: .LBB23_4:11425; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]11426; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411427; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v311428; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v211429; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)11430; GFX1164_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc, s[2:3], v[0:1]11431; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc11432; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc11433; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600011434; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -111435; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11436; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 011437; GFX1164_ITERATIVE-NEXT: s_endpgm11438;11439; GFX1132_ITERATIVE-LABEL: max_i64_varying:11440; GFX1132_ITERATIVE: ; %bb.0: ; %entry11441; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v011442; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo11443; GFX1132_ITERATIVE-NEXT: s_brev_b32 s1, 111444; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 011445; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr111446; GFX1132_ITERATIVE-NEXT: .p2align 611447; GFX1132_ITERATIVE-NEXT: .LBB23_1: ; %ComputeLoop11448; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=111449; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s211450; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)11451; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s311452; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s311453; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s311454; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s311455; GFX1132_ITERATIVE-NEXT: v_cmp_gt_i64_e64 s8, s[0:1], s[6:7]11456; GFX1132_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo11457; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s711458; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s611459; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s311460; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11461; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s311462; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB23_111463; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd11464; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011465; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)11466; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v211467; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr311468; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo11469; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s211470; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB23_411471; GFX1132_ITERATIVE-NEXT: ; %bb.3:11472; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s111473; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s011474; GFX1132_ITERATIVE-NEXT: ds_max_rtn_i64 v[2:3], v4, v[2:3]11475; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11476; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv11477; GFX1132_ITERATIVE-NEXT: .LBB23_4:11478; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s211479; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411480; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v311481; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v211482; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)11483; GFX1132_ITERATIVE-NEXT: v_cmp_gt_i64_e32 vcc_lo, s[2:3], v[0:1]11484; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo11485; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo11486; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600011487; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -111488; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)11489; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 011490; GFX1132_ITERATIVE-NEXT: s_endpgm11491;11492; GFX7LESS_DPP-LABEL: max_i64_varying:11493; GFX7LESS_DPP: ; %bb.0: ; %entry11494; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x911495; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 011496; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -111497; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)11498; GFX7LESS_DPP-NEXT: ds_max_rtn_i64 v[0:1], v1, v[0:1]11499; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)11500; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00011501; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -111502; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 011503; GFX7LESS_DPP-NEXT: s_endpgm11504;11505; GFX8_DPP-LABEL: max_i64_varying:11506; GFX8_DPP: ; %bb.0: ; %entry11507; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 011508; GFX8_DPP-NEXT: v_mov_b32_e32 v9, 011509; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v711510; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -111511; GFX8_DPP-NEXT: v_bfrev_b32_e32 v2, 111512; GFX8_DPP-NEXT: v_cndmask_b32_e64 v4, v2, 0, s[0:1]11513; GFX8_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s[0:1]11514; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, 111515; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 011516; GFX8_DPP-NEXT: v_mov_b32_e32 v1, 011517; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:1 row_mask:0xf bank_mask:0xf11518; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:1 row_mask:0xf bank_mask:0xf11519; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11520; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11521; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11522; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, 111523; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 011524; GFX8_DPP-NEXT: s_nop 011525; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:2 row_mask:0xf bank_mask:0xf11526; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:2 row_mask:0xf bank_mask:0xf11527; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11528; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11529; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11530; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, 111531; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 011532; GFX8_DPP-NEXT: s_nop 011533; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:4 row_mask:0xf bank_mask:0xf11534; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:4 row_mask:0xf bank_mask:0xf11535; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11536; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11537; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11538; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, 111539; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 011540; GFX8_DPP-NEXT: s_nop 011541; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:8 row_mask:0xf bank_mask:0xf11542; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:8 row_mask:0xf bank_mask:0xf11543; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11544; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11545; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11546; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, 111547; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 011548; GFX8_DPP-NEXT: s_nop 011549; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:15 row_mask:0xa bank_mask:0xf11550; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:15 row_mask:0xa bank_mask:0xf11551; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11552; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11553; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11554; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, 111555; GFX8_DPP-NEXT: v_mov_b32_e32 v5, 011556; GFX8_DPP-NEXT: s_nop 011557; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:31 row_mask:0xc bank_mask:0xf11558; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:31 row_mask:0xc bank_mask:0xf11559; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11560; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11561; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11562; GFX8_DPP-NEXT: v_readlane_b32 s3, v4, 6311563; GFX8_DPP-NEXT: v_readlane_b32 s2, v3, 6311564; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v4 wave_shr:1 row_mask:0xf bank_mask:0xf11565; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v3 wave_shr:1 row_mask:0xf bank_mask:0xf11566; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]11567; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v711568; GFX8_DPP-NEXT: ; implicit-def: $vgpr7_vgpr811569; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc11570; GFX8_DPP-NEXT: s_cbranch_execz .LBB23_211571; GFX8_DPP-NEXT: ; %bb.1:11572; GFX8_DPP-NEXT: v_mov_b32_e32 v8, s311573; GFX8_DPP-NEXT: v_mov_b32_e32 v7, s211574; GFX8_DPP-NEXT: s_mov_b32 m0, -111575; GFX8_DPP-NEXT: ds_max_rtn_i64 v[7:8], v9, v[7:8]11576; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)11577; GFX8_DPP-NEXT: .LBB23_2:11578; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]11579; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411580; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v811581; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v711582; GFX8_DPP-NEXT: v_mov_b32_e32 v7, v111583; GFX8_DPP-NEXT: v_mov_b32_e32 v8, v211584; GFX8_DPP-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[7:8]11585; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s511586; GFX8_DPP-NEXT: v_cndmask_b32_e32 v8, v8, v0, vcc11587; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s411588; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00011589; GFX8_DPP-NEXT: s_mov_b32 s2, -111590; GFX8_DPP-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc11591; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)11592; GFX8_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 011593; GFX8_DPP-NEXT: s_endpgm11594;11595; GFX9_DPP-LABEL: max_i64_varying:11596; GFX9_DPP: ; %bb.0: ; %entry11597; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 011598; GFX9_DPP-NEXT: v_mov_b32_e32 v9, 011599; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v711600; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -111601; GFX9_DPP-NEXT: v_bfrev_b32_e32 v2, 111602; GFX9_DPP-NEXT: v_cndmask_b32_e64 v4, v2, 0, s[0:1]11603; GFX9_DPP-NEXT: v_cndmask_b32_e64 v3, 0, v0, s[0:1]11604; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, 111605; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 011606; GFX9_DPP-NEXT: v_mov_b32_e32 v1, 011607; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:1 row_mask:0xf bank_mask:0xf11608; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:1 row_mask:0xf bank_mask:0xf11609; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11610; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11611; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11612; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, 111613; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 011614; GFX9_DPP-NEXT: s_nop 011615; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:2 row_mask:0xf bank_mask:0xf11616; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:2 row_mask:0xf bank_mask:0xf11617; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11618; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11619; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11620; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, 111621; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 011622; GFX9_DPP-NEXT: s_nop 011623; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:4 row_mask:0xf bank_mask:0xf11624; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:4 row_mask:0xf bank_mask:0xf11625; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11626; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11627; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11628; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, 111629; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 011630; GFX9_DPP-NEXT: s_nop 011631; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:8 row_mask:0xf bank_mask:0xf11632; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:8 row_mask:0xf bank_mask:0xf11633; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11634; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11635; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11636; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, 111637; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 011638; GFX9_DPP-NEXT: s_nop 011639; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:15 row_mask:0xa bank_mask:0xf11640; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:15 row_mask:0xa bank_mask:0xf11641; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11642; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11643; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11644; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, 111645; GFX9_DPP-NEXT: v_mov_b32_e32 v5, 011646; GFX9_DPP-NEXT: s_nop 011647; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:31 row_mask:0xc bank_mask:0xf11648; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:31 row_mask:0xc bank_mask:0xf11649; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[3:4], v[5:6]11650; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc11651; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc11652; GFX9_DPP-NEXT: v_readlane_b32 s3, v4, 6311653; GFX9_DPP-NEXT: v_readlane_b32 s2, v3, 6311654; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v4 wave_shr:1 row_mask:0xf bank_mask:0xf11655; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v3 wave_shr:1 row_mask:0xf bank_mask:0xf11656; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]11657; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v711658; GFX9_DPP-NEXT: ; implicit-def: $vgpr7_vgpr811659; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc11660; GFX9_DPP-NEXT: s_cbranch_execz .LBB23_211661; GFX9_DPP-NEXT: ; %bb.1:11662; GFX9_DPP-NEXT: v_mov_b32_e32 v8, s311663; GFX9_DPP-NEXT: v_mov_b32_e32 v7, s211664; GFX9_DPP-NEXT: ds_max_rtn_i64 v[7:8], v9, v[7:8]11665; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)11666; GFX9_DPP-NEXT: .LBB23_2:11667; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]11668; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411669; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v811670; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v711671; GFX9_DPP-NEXT: v_mov_b32_e32 v7, v111672; GFX9_DPP-NEXT: v_mov_b32_e32 v8, v211673; GFX9_DPP-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[7:8]11674; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s511675; GFX9_DPP-NEXT: v_cndmask_b32_e32 v8, v8, v0, vcc11676; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s411677; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00011678; GFX9_DPP-NEXT: s_mov_b32 s2, -111679; GFX9_DPP-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc11680; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)11681; GFX9_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 011682; GFX9_DPP-NEXT: s_endpgm11683;11684; GFX1064_DPP-LABEL: max_i64_varying:11685; GFX1064_DPP: ; %bb.0: ; %entry11686; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -111687; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, 0, s[0:1]11688; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, 111689; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 011690; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]11691; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v6, 111692; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 011693; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf11694; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf11695; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11696; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11697; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11698; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, 111699; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 011700; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf11701; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf11702; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[5:6]11703; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc11704; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc11705; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v6, 111706; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 011707; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf11708; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf11709; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11710; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11711; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11712; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, 111713; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 011714; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf11715; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf11716; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[5:6]11717; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc11718; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc11719; GFX1064_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -111720; GFX1064_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -111721; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf11722; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf11723; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11724; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11725; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11726; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, 111727; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 011728; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 3111729; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3111730; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, s211731; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, s311732; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf11733; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf11734; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v5, 111735; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11736; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11737; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 011738; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11739; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]11740; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011741; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -111742; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf11743; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 1511744; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf11745; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 1511746; GFX1064_DPP-NEXT: v_readlane_b32 s6, v2, 3111747; GFX1064_DPP-NEXT: v_readlane_b32 s7, v1, 3111748; GFX1064_DPP-NEXT: v_writelane_b32 v5, s2, 1611749; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 6311750; GFX1064_DPP-NEXT: v_writelane_b32 v4, s3, 1611751; GFX1064_DPP-NEXT: v_readlane_b32 s8, v2, 4711752; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 6311753; GFX1064_DPP-NEXT: v_readlane_b32 s9, v1, 4711754; GFX1064_DPP-NEXT: v_writelane_b32 v5, s6, 3211755; GFX1064_DPP-NEXT: v_writelane_b32 v4, s7, 3211756; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]11757; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v011758; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 011759; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -111760; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]11761; GFX1064_DPP-NEXT: v_writelane_b32 v5, s8, 4811762; GFX1064_DPP-NEXT: v_writelane_b32 v4, s9, 4811763; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]11764; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v711765; GFX1064_DPP-NEXT: s_mov_b32 s2, -111766; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr811767; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc11768; GFX1064_DPP-NEXT: s_cbranch_execz .LBB23_211769; GFX1064_DPP-NEXT: ; %bb.1:11770; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s111771; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s011772; GFX1064_DPP-NEXT: ds_max_rtn_i64 v[7:8], v0, v[7:8]11773; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)11774; GFX1064_DPP-NEXT: buffer_gl0_inv11775; GFX1064_DPP-NEXT: .LBB23_2:11776; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)11777; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]11778; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411779; GFX1064_DPP-NEXT: s_mov_b32 null, 011780; GFX1064_DPP-NEXT: v_readfirstlane_b32 s5, v811781; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v711782; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, v411783; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v511784; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600011785; GFX1064_DPP-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[7:8]11786; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc11787; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc11788; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)11789; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 011790; GFX1064_DPP-NEXT: s_endpgm11791;11792; GFX1032_DPP-LABEL: max_i64_varying:11793; GFX1032_DPP: ; %bb.0: ; %entry11794; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -111795; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, 0, s211796; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v4, 111797; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 011798; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s211799; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v6, 111800; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 011801; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf11802; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf11803; GFX1032_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[3:4]11804; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo11805; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo11806; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v4, 111807; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 011808; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf11809; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf11810; GFX1032_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[5:6]11811; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo11812; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo11813; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v6, 111814; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 011815; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf11816; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf11817; GFX1032_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[3:4]11818; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo11819; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo11820; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v4, 111821; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 011822; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf11823; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf11824; GFX1032_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[5:6]11825; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo11826; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo11827; GFX1032_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -111828; GFX1032_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -111829; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf11830; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf11831; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v5, 111832; GFX1032_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[3:4]11833; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo11834; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo11835; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 011836; GFX1032_DPP-NEXT: v_readlane_b32 s3, v2, 1511837; GFX1032_DPP-NEXT: v_readlane_b32 s1, v2, 3111838; GFX1032_DPP-NEXT: v_readlane_b32 s0, v1, 3111839; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf11840; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf11841; GFX1032_DPP-NEXT: v_readlane_b32 s6, v1, 1511842; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s211843; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 011844; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 011845; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -111846; GFX1032_DPP-NEXT: v_writelane_b32 v5, s3, 1611847; GFX1032_DPP-NEXT: v_writelane_b32 v4, s6, 1611848; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s211849; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v711850; GFX1032_DPP-NEXT: s_mov_b32 s2, -111851; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr811852; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo11853; GFX1032_DPP-NEXT: s_cbranch_execz .LBB23_211854; GFX1032_DPP-NEXT: ; %bb.1:11855; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s111856; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s011857; GFX1032_DPP-NEXT: ds_max_rtn_i64 v[7:8], v0, v[7:8]11858; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)11859; GFX1032_DPP-NEXT: buffer_gl0_inv11860; GFX1032_DPP-NEXT: .LBB23_2:11861; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)11862; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s311863; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411864; GFX1032_DPP-NEXT: s_mov_b32 null, 011865; GFX1032_DPP-NEXT: v_readfirstlane_b32 s5, v811866; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v711867; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, v411868; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v511869; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600011870; GFX1032_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, s[4:5], v[7:8]11871; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo11872; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo11873; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)11874; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 011875; GFX1032_DPP-NEXT: s_endpgm11876;11877; GFX1164_DPP-LABEL: max_i64_varying:11878; GFX1164_DPP: ; %bb.0: ; %entry11879; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v011880; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -111881; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11882; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, 0, s[0:1]11883; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, 111884; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 011885; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]11886; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v6, 111887; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 011888; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf11889; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)11890; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf11891; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11892; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11893; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11894; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, 111895; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 011896; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11897; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf11898; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf11899; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11900; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[5:6]11901; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11902; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc11903; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc11904; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v6, 111905; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 011906; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11907; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf11908; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf11909; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11910; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11911; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11912; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11913; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11914; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, 111915; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 011916; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11917; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf11918; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf11919; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)11920; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[5:6]11921; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11922; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc11923; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc11924; GFX1164_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -111925; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)11926; GFX1164_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -111927; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf11928; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11929; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf11930; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11931; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11932; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11933; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11934; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, 111935; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 011936; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11937; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 3111938; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3111939; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)11940; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, s211941; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, s311942; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)11943; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf11944; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf11945; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v5, 111946; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)11947; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, v[1:2], v[3:4]11948; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11949; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc11950; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 011951; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc11952; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]11953; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11954; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011955; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -111956; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)11957; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf11958; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 1511959; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf11960; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 1511961; GFX1164_DPP-NEXT: v_readlane_b32 s6, v2, 3111962; GFX1164_DPP-NEXT: v_readlane_b32 s7, v1, 3111963; GFX1164_DPP-NEXT: v_writelane_b32 v5, s2, 1611964; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 6311965; GFX1164_DPP-NEXT: v_writelane_b32 v4, s3, 1611966; GFX1164_DPP-NEXT: v_readlane_b32 s8, v2, 4711967; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 6311968; GFX1164_DPP-NEXT: v_readlane_b32 s9, v1, 4711969; GFX1164_DPP-NEXT: v_writelane_b32 v5, s6, 3211970; GFX1164_DPP-NEXT: v_writelane_b32 v4, s7, 3211971; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]11972; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11973; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v011974; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 011975; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -111976; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]11977; GFX1164_DPP-NEXT: v_writelane_b32 v5, s8, 4811978; GFX1164_DPP-NEXT: v_writelane_b32 v4, s9, 4811979; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]11980; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v711981; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)11982; GFX1164_DPP-NEXT: s_mov_b32 s2, -111983; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr811984; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc11985; GFX1164_DPP-NEXT: s_cbranch_execz .LBB23_211986; GFX1164_DPP-NEXT: ; %bb.1:11987; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s111988; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s011989; GFX1164_DPP-NEXT: ds_max_rtn_i64 v[7:8], v0, v[7:8]11990; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)11991; GFX1164_DPP-NEXT: buffer_gl0_inv11992; GFX1164_DPP-NEXT: .LBB23_2:11993; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]11994; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411995; GFX1164_DPP-NEXT: v_readfirstlane_b32 s5, v811996; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v711997; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, v411998; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v511999; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600012000; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12001; GFX1164_DPP-NEXT: v_cmp_gt_i64_e32 vcc, s[4:5], v[7:8]12002; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc12003; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc12004; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)12005; GFX1164_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 012006; GFX1164_DPP-NEXT: s_endpgm12007;12008; GFX1132_DPP-LABEL: max_i64_varying:12009; GFX1132_DPP: ; %bb.0: ; %entry12010; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v012011; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -112012; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)12013; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, 0, s212014; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v4, 112015; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s212016; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v6, 112017; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)12018; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf12019; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 012020; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf12021; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)12022; GFX1132_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[3:4]12023; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v112024; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v4, 112025; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 012026; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf12027; GFX1132_DPP-NEXT: v_mov_b32_e32 v5, 012028; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12029; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf12030; GFX1132_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[5:6]12031; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v112032; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v6, 112033; GFX1132_DPP-NEXT: v_mov_b32_e32 v5, 012034; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)12035; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf12036; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf12037; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)12038; GFX1132_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[3:4]12039; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v112040; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v4, 112041; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 012042; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf12043; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)12044; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf12045; GFX1132_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[5:6]12046; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v112047; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)12048; GFX1132_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -112049; GFX1132_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -112050; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12051; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf12052; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf12053; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v5, 112054; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_2)12055; GFX1132_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, v[1:2], v[3:4]12056; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v112057; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 012058; GFX1132_DPP-NEXT: v_readlane_b32 s3, v2, 1512059; GFX1132_DPP-NEXT: v_readlane_b32 s1, v2, 3112060; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)12061; GFX1132_DPP-NEXT: v_readlane_b32 s0, v1, 3112062; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf12063; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf12064; GFX1132_DPP-NEXT: v_readlane_b32 s6, v1, 1512065; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s212066; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 012067; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 012068; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -112069; GFX1132_DPP-NEXT: v_writelane_b32 v5, s3, 1612070; GFX1132_DPP-NEXT: v_writelane_b32 v4, s6, 1612071; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s212072; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v712073; GFX1132_DPP-NEXT: s_mov_b32 s2, -112074; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr812075; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo12076; GFX1132_DPP-NEXT: s_cbranch_execz .LBB23_212077; GFX1132_DPP-NEXT: ; %bb.1:12078; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s012079; GFX1132_DPP-NEXT: ds_max_rtn_i64 v[7:8], v0, v[7:8]12080; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)12081; GFX1132_DPP-NEXT: buffer_gl0_inv12082; GFX1132_DPP-NEXT: .LBB23_2:12083; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s312084; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412085; GFX1132_DPP-NEXT: v_readfirstlane_b32 s5, v812086; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v712087; GFX1132_DPP-NEXT: v_mov_b32_e32 v7, v412088; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v512089; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600012090; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12091; GFX1132_DPP-NEXT: v_cmp_gt_i64_e32 vcc_lo, s[4:5], v[7:8]12092; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo12093; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo12094; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)12095; GFX1132_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 012096; GFX1132_DPP-NEXT: s_endpgm12097entry:12098 %lane = call i32 @llvm.amdgcn.workitem.id.x()12099 %lane_ext = zext i32 %lane to i6412100 %old = atomicrmw max ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel12101 store i64 %old, ptr addrspace(1) %out12102 ret void12103}12104 12105define amdgpu_kernel void @min_i32_varying(ptr addrspace(1) %out) {12106; GFX7LESS_ITERATIVE-LABEL: min_i32_varying:12107; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry12108; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec12109; GFX7LESS_ITERATIVE-NEXT: s_brev_b32 s2, -212110; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr112111; GFX7LESS_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12112; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112113; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]12114; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s312115; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s312116; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m012117; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s312118; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]12119; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 012120; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]12121; GFX7LESS_ITERATIVE-NEXT: s_min_i32 s2, s2, s812122; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB24_112123; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12124; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 012125; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v012126; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012127; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr012128; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc12129; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]12130; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412131; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:12132; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 012133; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s212134; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -112135; GFX7LESS_ITERATIVE-NEXT: ds_min_rtn_i32 v0, v0, v212136; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12137; GFX7LESS_ITERATIVE-NEXT: .LBB24_4:12138; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]12139; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912140; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00012141; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -112142; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v012143; GFX7LESS_ITERATIVE-NEXT: v_min_i32_e32 v0, s4, v112144; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12145; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 012146; GFX7LESS_ITERATIVE-NEXT: s_endpgm12147;12148; GFX8_ITERATIVE-LABEL: min_i32_varying:12149; GFX8_ITERATIVE: ; %bb.0: ; %entry12150; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec12151; GFX8_ITERATIVE-NEXT: s_brev_b32 s2, -212152; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr112153; GFX8_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12154; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112155; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]12156; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s312157; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s312158; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m012159; GFX8_ITERATIVE-NEXT: s_min_i32 s2, s2, s612160; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s312161; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]12162; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB24_112163; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12164; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012165; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012166; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012167; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr012168; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc12169; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]12170; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412171; GFX8_ITERATIVE-NEXT: ; %bb.3:12172; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 012173; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s212174; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -112175; GFX8_ITERATIVE-NEXT: ds_min_rtn_i32 v0, v0, v212176; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12177; GFX8_ITERATIVE-NEXT: .LBB24_4:12178; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]12179; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412180; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v012181; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00012182; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -112183; GFX8_ITERATIVE-NEXT: v_min_i32_e32 v0, s4, v112184; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12185; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 012186; GFX8_ITERATIVE-NEXT: s_endpgm12187;12188; GFX9_ITERATIVE-LABEL: min_i32_varying:12189; GFX9_ITERATIVE: ; %bb.0: ; %entry12190; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec12191; GFX9_ITERATIVE-NEXT: s_brev_b32 s2, -212192; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr112193; GFX9_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12194; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112195; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]12196; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s312197; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s312198; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m012199; GFX9_ITERATIVE-NEXT: s_min_i32 s2, s2, s612200; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s312201; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]12202; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB24_112203; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12204; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012205; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012206; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012207; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr012208; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc12209; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]12210; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412211; GFX9_ITERATIVE-NEXT: ; %bb.3:12212; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 012213; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s212214; GFX9_ITERATIVE-NEXT: ds_min_rtn_i32 v0, v0, v212215; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12216; GFX9_ITERATIVE-NEXT: .LBB24_4:12217; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]12218; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412219; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v012220; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00012221; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -112222; GFX9_ITERATIVE-NEXT: v_min_i32_e32 v0, s4, v112223; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12224; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 012225; GFX9_ITERATIVE-NEXT: s_endpgm12226;12227; GFX1064_ITERATIVE-LABEL: min_i32_varying:12228; GFX1064_ITERATIVE: ; %bb.0: ; %entry12229; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec12230; GFX1064_ITERATIVE-NEXT: s_brev_b32 s2, -212231; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr112232; GFX1064_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12233; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112234; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]12235; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s312236; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s312237; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s312238; GFX1064_ITERATIVE-NEXT: s_min_i32 s2, s2, s812239; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]12240; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB24_112241; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12242; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012243; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012244; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012245; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr012246; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc12247; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]12248; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412249; GFX1064_ITERATIVE-NEXT: ; %bb.3:12250; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 012251; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s212252; GFX1064_ITERATIVE-NEXT: ds_min_rtn_i32 v0, v0, v212253; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12254; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv12255; GFX1064_ITERATIVE-NEXT: .LBB24_4:12256; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)12257; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]12258; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412259; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v012260; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600012261; GFX1064_ITERATIVE-NEXT: v_min_i32_e32 v0, s2, v112262; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -112263; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12264; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 012265; GFX1064_ITERATIVE-NEXT: s_endpgm12266;12267; GFX1032_ITERATIVE-LABEL: min_i32_varying:12268; GFX1032_ITERATIVE: ; %bb.0: ; %entry12269; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo12270; GFX1032_ITERATIVE-NEXT: s_brev_b32 s0, -212271; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr112272; GFX1032_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12273; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112274; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s112275; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s212276; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s212277; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s212278; GFX1032_ITERATIVE-NEXT: s_min_i32 s0, s0, s312279; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s212280; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB24_112281; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12282; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012283; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012284; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr012285; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo12286; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s112287; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412288; GFX1032_ITERATIVE-NEXT: ; %bb.3:12289; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 012290; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s012291; GFX1032_ITERATIVE-NEXT: ds_min_rtn_i32 v0, v0, v212292; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12293; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv12294; GFX1032_ITERATIVE-NEXT: .LBB24_4:12295; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)12296; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s112297; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412298; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v012299; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600012300; GFX1032_ITERATIVE-NEXT: v_min_i32_e32 v0, s2, v112301; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -112302; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12303; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 012304; GFX1032_ITERATIVE-NEXT: s_endpgm12305;12306; GFX1164_ITERATIVE-LABEL: min_i32_varying:12307; GFX1164_ITERATIVE: ; %bb.0: ; %entry12308; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v012309; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec12310; GFX1164_ITERATIVE-NEXT: s_brev_b32 s2, -212311; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr012312; GFX1164_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12313; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112314; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]12315; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)12316; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s312317; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s312318; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s312319; GFX1164_ITERATIVE-NEXT: s_min_i32 s2, s2, s812320; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]12321; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB24_112322; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12323; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 012324; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12325; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v112326; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v112327; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr112328; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc12329; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12330; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]12331; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412332; GFX1164_ITERATIVE-NEXT: ; %bb.3:12333; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 012334; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s212335; GFX1164_ITERATIVE-NEXT: ds_min_rtn_i32 v1, v1, v212336; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12337; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv12338; GFX1164_ITERATIVE-NEXT: .LBB24_4:12339; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]12340; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412341; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v112342; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600012343; GFX1164_ITERATIVE-NEXT: v_min_i32_e32 v0, s2, v012344; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -112345; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12346; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 012347; GFX1164_ITERATIVE-NEXT: s_endpgm12348;12349; GFX1132_ITERATIVE-LABEL: min_i32_varying:12350; GFX1132_ITERATIVE: ; %bb.0: ; %entry12351; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v012352; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo12353; GFX1132_ITERATIVE-NEXT: s_brev_b32 s0, -212354; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr012355; GFX1132_ITERATIVE-NEXT: .LBB24_1: ; %ComputeLoop12356; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112357; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s112358; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)12359; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s212360; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s212361; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s212362; GFX1132_ITERATIVE-NEXT: s_min_i32 s0, s0, s312363; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s212364; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB24_112365; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12366; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 012367; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)12368; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v112369; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr112370; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo12371; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s112372; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB24_412373; GFX1132_ITERATIVE-NEXT: ; %bb.3:12374; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s012375; GFX1132_ITERATIVE-NEXT: ds_min_rtn_i32 v1, v1, v212376; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12377; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv12378; GFX1132_ITERATIVE-NEXT: .LBB24_4:12379; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s112380; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412381; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v112382; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600012383; GFX1132_ITERATIVE-NEXT: v_min_i32_e32 v0, s2, v012384; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -112385; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12386; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 012387; GFX1132_ITERATIVE-NEXT: s_endpgm12388;12389; GFX7LESS_DPP-LABEL: min_i32_varying:12390; GFX7LESS_DPP: ; %bb.0: ; %entry12391; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912392; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 012393; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -112394; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)12395; GFX7LESS_DPP-NEXT: ds_min_rtn_i32 v0, v1, v012396; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)12397; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00012398; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -112399; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 012400; GFX7LESS_DPP-NEXT: s_endpgm12401;12402; GFX8_DPP-LABEL: min_i32_varying:12403; GFX8_DPP: ; %bb.0: ; %entry12404; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 012405; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v312406; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112407; GFX8_DPP-NEXT: v_bfrev_b32_e32 v1, -212408; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, v1, v0, s[0:1]12409; GFX8_DPP-NEXT: s_nop 112410; GFX8_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf12411; GFX8_DPP-NEXT: s_nop 112412; GFX8_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf12413; GFX8_DPP-NEXT: s_nop 112414; GFX8_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf12415; GFX8_DPP-NEXT: s_nop 112416; GFX8_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf12417; GFX8_DPP-NEXT: s_nop 112418; GFX8_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf12419; GFX8_DPP-NEXT: s_nop 112420; GFX8_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf12421; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 6312422; GFX8_DPP-NEXT: s_nop 012423; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf12424; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]12425; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v312426; GFX8_DPP-NEXT: ; implicit-def: $vgpr012427; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12428; GFX8_DPP-NEXT: s_cbranch_execz .LBB24_212429; GFX8_DPP-NEXT: ; %bb.1:12430; GFX8_DPP-NEXT: v_mov_b32_e32 v0, 012431; GFX8_DPP-NEXT: v_mov_b32_e32 v3, s212432; GFX8_DPP-NEXT: s_mov_b32 m0, -112433; GFX8_DPP-NEXT: ds_min_rtn_i32 v0, v0, v312434; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)12435; GFX8_DPP-NEXT: .LBB24_2:12436; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]12437; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412438; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v012439; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v112440; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00012441; GFX8_DPP-NEXT: s_mov_b32 s2, -112442; GFX8_DPP-NEXT: v_min_i32_e32 v0, s4, v012443; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)12444; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 012445; GFX8_DPP-NEXT: s_endpgm12446;12447; GFX9_DPP-LABEL: min_i32_varying:12448; GFX9_DPP: ; %bb.0: ; %entry12449; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 012450; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v312451; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112452; GFX9_DPP-NEXT: v_bfrev_b32_e32 v1, -212453; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, v1, v0, s[0:1]12454; GFX9_DPP-NEXT: s_nop 112455; GFX9_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf12456; GFX9_DPP-NEXT: s_nop 112457; GFX9_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf12458; GFX9_DPP-NEXT: s_nop 112459; GFX9_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf12460; GFX9_DPP-NEXT: s_nop 112461; GFX9_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf12462; GFX9_DPP-NEXT: s_nop 112463; GFX9_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf12464; GFX9_DPP-NEXT: s_nop 112465; GFX9_DPP-NEXT: v_min_i32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf12466; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 6312467; GFX9_DPP-NEXT: s_nop 012468; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf12469; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]12470; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v312471; GFX9_DPP-NEXT: ; implicit-def: $vgpr012472; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12473; GFX9_DPP-NEXT: s_cbranch_execz .LBB24_212474; GFX9_DPP-NEXT: ; %bb.1:12475; GFX9_DPP-NEXT: v_mov_b32_e32 v0, 012476; GFX9_DPP-NEXT: v_mov_b32_e32 v3, s212477; GFX9_DPP-NEXT: ds_min_rtn_i32 v0, v0, v312478; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)12479; GFX9_DPP-NEXT: .LBB24_2:12480; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]12481; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412482; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v012483; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v112484; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00012485; GFX9_DPP-NEXT: s_mov_b32 s2, -112486; GFX9_DPP-NEXT: v_min_i32_e32 v0, s4, v012487; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)12488; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 012489; GFX9_DPP-NEXT: s_endpgm12490;12491; GFX1064_DPP-LABEL: min_i32_varying:12492; GFX1064_DPP: ; %bb.0: ; %entry12493; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112494; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0x7fffffff, v0, s[0:1]12495; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v3, -212496; GFX1064_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf12497; GFX1064_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf12498; GFX1064_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf12499; GFX1064_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf12500; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -112501; GFX1064_DPP-NEXT: v_min_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf12502; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 3112503; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s212504; GFX1064_DPP-NEXT: v_min_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf12505; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf12506; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 1512507; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3112508; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 1612509; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]12510; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012511; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112512; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 4712513; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 6312514; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 3212515; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]12516; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012517; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112518; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 4812519; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]12520; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012521; GFX1064_DPP-NEXT: s_mov_b32 s2, -112522; GFX1064_DPP-NEXT: ; implicit-def: $vgpr012523; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12524; GFX1064_DPP-NEXT: s_cbranch_execz .LBB24_212525; GFX1064_DPP-NEXT: ; %bb.1:12526; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 012527; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s612528; GFX1064_DPP-NEXT: ds_min_rtn_i32 v0, v0, v412529; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)12530; GFX1064_DPP-NEXT: buffer_gl0_inv12531; GFX1064_DPP-NEXT: .LBB24_2:12532; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)12533; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]12534; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412535; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v012536; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v312537; GFX1064_DPP-NEXT: v_min_i32_e32 v0, s3, v012538; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600012539; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)12540; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 012541; GFX1064_DPP-NEXT: s_endpgm12542;12543; GFX1032_DPP-LABEL: min_i32_varying:12544; GFX1032_DPP: ; %bb.0: ; %entry12545; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -112546; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0x7fffffff, v0, s012547; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v3, -212548; GFX1032_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf12549; GFX1032_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf12550; GFX1032_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf12551; GFX1032_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf12552; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -112553; GFX1032_DPP-NEXT: v_min_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf12554; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 1512555; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 3112556; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf12557; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s012558; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012559; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -112560; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 1612561; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s012562; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012563; GFX1032_DPP-NEXT: s_mov_b32 s0, s212564; GFX1032_DPP-NEXT: s_mov_b32 s2, -112565; GFX1032_DPP-NEXT: ; implicit-def: $vgpr012566; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo12567; GFX1032_DPP-NEXT: s_cbranch_execz .LBB24_212568; GFX1032_DPP-NEXT: ; %bb.1:12569; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 012570; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, s012571; GFX1032_DPP-NEXT: ds_min_rtn_i32 v0, v0, v412572; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)12573; GFX1032_DPP-NEXT: buffer_gl0_inv12574; GFX1032_DPP-NEXT: .LBB24_2:12575; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)12576; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s112577; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412578; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v012579; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v312580; GFX1032_DPP-NEXT: v_min_i32_e32 v0, s3, v012581; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600012582; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)12583; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 012584; GFX1032_DPP-NEXT: s_endpgm12585;12586; GFX1164_DPP-LABEL: min_i32_varying:12587; GFX1164_DPP: ; %bb.0: ; %entry12588; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v012589; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112590; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)12591; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0x7fffffff, v0, s[0:1]12592; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v3, -212593; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12594; GFX1164_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf12595; GFX1164_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf12596; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12597; GFX1164_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf12598; GFX1164_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf12599; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12600; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -112601; GFX1164_DPP-NEXT: v_min_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf12602; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12603; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 3112604; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s212605; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12606; GFX1164_DPP-NEXT: v_min_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf12607; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf12608; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 1512609; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3112610; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)12611; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 1612612; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]12613; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012614; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112615; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)12616; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 4712617; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 6312618; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 3212619; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]12620; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)12621; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012622; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -112623; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 4812624; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]12625; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012626; GFX1164_DPP-NEXT: s_mov_b32 s2, -112627; GFX1164_DPP-NEXT: ; implicit-def: $vgpr012628; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12629; GFX1164_DPP-NEXT: s_cbranch_execz .LBB24_212630; GFX1164_DPP-NEXT: ; %bb.1:12631; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 012632; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s612633; GFX1164_DPP-NEXT: ds_min_rtn_i32 v0, v0, v412634; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)12635; GFX1164_DPP-NEXT: buffer_gl0_inv12636; GFX1164_DPP-NEXT: .LBB24_2:12637; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]12638; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412639; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v012640; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v312641; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12642; GFX1164_DPP-NEXT: v_min_i32_e32 v0, s3, v012643; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600012644; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)12645; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 012646; GFX1164_DPP-NEXT: s_endpgm12647;12648; GFX1132_DPP-LABEL: min_i32_varying:12649; GFX1132_DPP: ; %bb.0: ; %entry12650; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v012651; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -112652; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)12653; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0x7fffffff, v0, s012654; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v3, -212655; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12656; GFX1132_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf12657; GFX1132_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf12658; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12659; GFX1132_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf12660; GFX1132_DPP-NEXT: v_min_i32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf12661; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12662; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -112663; GFX1132_DPP-NEXT: v_min_i32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf12664; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)12665; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 1512666; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 3112667; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf12668; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s012669; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012670; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -112671; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 1612672; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s012673; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)12674; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012675; GFX1132_DPP-NEXT: s_mov_b32 s0, s212676; GFX1132_DPP-NEXT: s_mov_b32 s2, -112677; GFX1132_DPP-NEXT: ; implicit-def: $vgpr012678; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo12679; GFX1132_DPP-NEXT: s_cbranch_execz .LBB24_212680; GFX1132_DPP-NEXT: ; %bb.1:12681; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 012682; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, s012683; GFX1132_DPP-NEXT: ds_min_rtn_i32 v0, v0, v412684; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)12685; GFX1132_DPP-NEXT: buffer_gl0_inv12686; GFX1132_DPP-NEXT: .LBB24_2:12687; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s112688; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412689; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v012690; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v312691; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12692; GFX1132_DPP-NEXT: v_min_i32_e32 v0, s3, v012693; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600012694; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)12695; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 012696; GFX1132_DPP-NEXT: s_endpgm12697entry:12698 %lane = call i32 @llvm.amdgcn.workitem.id.x()12699 %old = atomicrmw min ptr addrspace(3) @local_var32, i32 %lane acq_rel12700 store i32 %old, ptr addrspace(1) %out12701 ret void12702}12703 12704define amdgpu_kernel void @min_i64_constant(ptr addrspace(1) %out) {12705; GFX7LESS-LABEL: min_i64_constant:12706; GFX7LESS: ; %bb.0: ; %entry12707; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 012708; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v012709; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012710; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr112711; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc12712; GFX7LESS-NEXT: s_cbranch_execz .LBB25_212713; GFX7LESS-NEXT: ; %bb.1:12714; GFX7LESS-NEXT: v_mov_b32_e32 v0, 512715; GFX7LESS-NEXT: v_mov_b32_e32 v1, 012716; GFX7LESS-NEXT: v_mov_b32_e32 v2, 012717; GFX7LESS-NEXT: s_mov_b32 m0, -112718; GFX7LESS-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12719; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)12720; GFX7LESS-NEXT: .LBB25_2:12721; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]12722; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912723; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00012724; GFX7LESS-NEXT: s_mov_b32 s2, -112725; GFX7LESS-NEXT: v_readfirstlane_b32 s5, v112726; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v012727; GFX7LESS-NEXT: v_bfrev_b32_e32 v1, -212728; GFX7LESS-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc12729; GFX7LESS-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc12730; GFX7LESS-NEXT: v_mov_b32_e32 v2, s512731; GFX7LESS-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[0:1]12732; GFX7LESS-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc12733; GFX7LESS-NEXT: v_mov_b32_e32 v2, s412734; GFX7LESS-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc12735; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)12736; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 012737; GFX7LESS-NEXT: s_endpgm12738;12739; GFX8-LABEL: min_i64_constant:12740; GFX8: ; %bb.0: ; %entry12741; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012742; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012743; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012744; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr112745; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc12746; GFX8-NEXT: s_cbranch_execz .LBB25_212747; GFX8-NEXT: ; %bb.1:12748; GFX8-NEXT: v_mov_b32_e32 v0, 512749; GFX8-NEXT: v_mov_b32_e32 v1, 012750; GFX8-NEXT: v_mov_b32_e32 v2, 012751; GFX8-NEXT: s_mov_b32 m0, -112752; GFX8-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12753; GFX8-NEXT: s_waitcnt lgkmcnt(0)12754; GFX8-NEXT: .LBB25_2:12755; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]12756; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412757; GFX8-NEXT: v_readfirstlane_b32 s4, v012758; GFX8-NEXT: v_bfrev_b32_e32 v0, -212759; GFX8-NEXT: v_readfirstlane_b32 s5, v112760; GFX8-NEXT: v_cndmask_b32_e32 v1, 0, v0, vcc12761; GFX8-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc12762; GFX8-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[0:1]12763; GFX8-NEXT: v_mov_b32_e32 v2, s512764; GFX8-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc12765; GFX8-NEXT: v_mov_b32_e32 v2, s412766; GFX8-NEXT: s_mov_b32 s3, 0xf00012767; GFX8-NEXT: s_mov_b32 s2, -112768; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc12769; GFX8-NEXT: s_waitcnt lgkmcnt(0)12770; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 012771; GFX8-NEXT: s_endpgm12772;12773; GFX9-LABEL: min_i64_constant:12774; GFX9: ; %bb.0: ; %entry12775; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012776; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012777; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012778; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr112779; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc12780; GFX9-NEXT: s_cbranch_execz .LBB25_212781; GFX9-NEXT: ; %bb.1:12782; GFX9-NEXT: v_mov_b32_e32 v0, 512783; GFX9-NEXT: v_mov_b32_e32 v1, 012784; GFX9-NEXT: v_mov_b32_e32 v2, 012785; GFX9-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12786; GFX9-NEXT: s_waitcnt lgkmcnt(0)12787; GFX9-NEXT: .LBB25_2:12788; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]12789; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412790; GFX9-NEXT: v_readfirstlane_b32 s4, v012791; GFX9-NEXT: v_bfrev_b32_e32 v0, -212792; GFX9-NEXT: v_readfirstlane_b32 s5, v112793; GFX9-NEXT: v_cndmask_b32_e32 v1, 0, v0, vcc12794; GFX9-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc12795; GFX9-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[0:1]12796; GFX9-NEXT: v_mov_b32_e32 v2, s512797; GFX9-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc12798; GFX9-NEXT: v_mov_b32_e32 v2, s412799; GFX9-NEXT: s_mov_b32 s3, 0xf00012800; GFX9-NEXT: s_mov_b32 s2, -112801; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc12802; GFX9-NEXT: s_waitcnt lgkmcnt(0)12803; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 012804; GFX9-NEXT: s_endpgm12805;12806; GFX1064-LABEL: min_i64_constant:12807; GFX1064: ; %bb.0: ; %entry12808; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012809; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012810; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012811; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr112812; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc12813; GFX1064-NEXT: s_cbranch_execz .LBB25_212814; GFX1064-NEXT: ; %bb.1:12815; GFX1064-NEXT: v_mov_b32_e32 v0, 512816; GFX1064-NEXT: v_mov_b32_e32 v1, 012817; GFX1064-NEXT: v_mov_b32_e32 v2, 012818; GFX1064-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12819; GFX1064-NEXT: s_waitcnt lgkmcnt(0)12820; GFX1064-NEXT: buffer_gl0_inv12821; GFX1064-NEXT: .LBB25_2:12822; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)12823; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]12824; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412825; GFX1064-NEXT: v_readfirstlane_b32 s3, v112826; GFX1064-NEXT: v_readfirstlane_b32 s2, v012827; GFX1064-NEXT: v_cndmask_b32_e64 v1, 0, 0x7fffffff, vcc12828; GFX1064-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc12829; GFX1064-NEXT: v_cmp_lt_i64_e32 vcc, s[2:3], v[0:1]12830; GFX1064-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc12831; GFX1064-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc12832; GFX1064-NEXT: s_mov_b32 s3, 0x3101600012833; GFX1064-NEXT: s_mov_b32 s2, -112834; GFX1064-NEXT: s_waitcnt lgkmcnt(0)12835; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 012836; GFX1064-NEXT: s_endpgm12837;12838; GFX1032-LABEL: min_i64_constant:12839; GFX1032: ; %bb.0: ; %entry12840; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012841; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012842; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr112843; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo12844; GFX1032-NEXT: s_cbranch_execz .LBB25_212845; GFX1032-NEXT: ; %bb.1:12846; GFX1032-NEXT: v_mov_b32_e32 v0, 512847; GFX1032-NEXT: v_mov_b32_e32 v1, 012848; GFX1032-NEXT: v_mov_b32_e32 v2, 012849; GFX1032-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12850; GFX1032-NEXT: s_waitcnt lgkmcnt(0)12851; GFX1032-NEXT: buffer_gl0_inv12852; GFX1032-NEXT: .LBB25_2:12853; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)12854; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s012855; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412856; GFX1032-NEXT: v_readfirstlane_b32 s3, v112857; GFX1032-NEXT: v_readfirstlane_b32 s2, v012858; GFX1032-NEXT: v_cndmask_b32_e64 v1, 0, 0x7fffffff, vcc_lo12859; GFX1032-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc_lo12860; GFX1032-NEXT: v_cmp_lt_i64_e32 vcc_lo, s[2:3], v[0:1]12861; GFX1032-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo12862; GFX1032-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo12863; GFX1032-NEXT: s_mov_b32 s3, 0x3101600012864; GFX1032-NEXT: s_mov_b32 s2, -112865; GFX1032-NEXT: s_waitcnt lgkmcnt(0)12866; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 012867; GFX1032-NEXT: s_endpgm12868;12869; GFX1164-LABEL: min_i64_constant:12870; GFX1164: ; %bb.0: ; %entry12871; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012872; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12873; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v012874; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012875; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr112876; GFX1164-NEXT: s_and_saveexec_b64 s[0:1], vcc12877; GFX1164-NEXT: s_cbranch_execz .LBB25_212878; GFX1164-NEXT: ; %bb.1:12879; GFX1164-NEXT: v_mov_b32_e32 v0, 512880; GFX1164-NEXT: v_mov_b32_e32 v1, 012881; GFX1164-NEXT: v_mov_b32_e32 v2, 012882; GFX1164-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12883; GFX1164-NEXT: s_waitcnt lgkmcnt(0)12884; GFX1164-NEXT: buffer_gl0_inv12885; GFX1164-NEXT: .LBB25_2:12886; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]12887; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412888; GFX1164-NEXT: v_readfirstlane_b32 s3, v112889; GFX1164-NEXT: v_readfirstlane_b32 s2, v012890; GFX1164-NEXT: v_cndmask_b32_e64 v1, 0, 0x7fffffff, vcc12891; GFX1164-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc12892; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)12893; GFX1164-NEXT: v_cmp_lt_i64_e32 vcc, s[2:3], v[0:1]12894; GFX1164-NEXT: s_waitcnt_depctr depctr_va_vcc(0)12895; GFX1164-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc12896; GFX1164-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc12897; GFX1164-NEXT: s_mov_b32 s3, 0x3101600012898; GFX1164-NEXT: s_mov_b32 s2, -112899; GFX1164-NEXT: s_waitcnt lgkmcnt(0)12900; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 012901; GFX1164-NEXT: s_endpgm12902;12903; GFX1132-LABEL: min_i64_constant:12904; GFX1132: ; %bb.0: ; %entry12905; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012906; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)12907; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012908; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr112909; GFX1132-NEXT: s_and_saveexec_b32 s0, vcc_lo12910; GFX1132-NEXT: s_cbranch_execz .LBB25_212911; GFX1132-NEXT: ; %bb.1:12912; GFX1132-NEXT: v_mov_b32_e32 v0, 512913; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, 012914; GFX1132-NEXT: ds_min_rtn_i64 v[0:1], v2, v[0:1]12915; GFX1132-NEXT: s_waitcnt lgkmcnt(0)12916; GFX1132-NEXT: buffer_gl0_inv12917; GFX1132-NEXT: .LBB25_2:12918; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s012919; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x2412920; GFX1132-NEXT: v_readfirstlane_b32 s3, v112921; GFX1132-NEXT: v_readfirstlane_b32 s2, v012922; GFX1132-NEXT: v_cndmask_b32_e64 v1, 0, 0x7fffffff, vcc_lo12923; GFX1132-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc_lo12924; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)12925; GFX1132-NEXT: v_cmp_lt_i64_e32 vcc_lo, s[2:3], v[0:1]12926; GFX1132-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo12927; GFX1132-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo12928; GFX1132-NEXT: s_mov_b32 s3, 0x3101600012929; GFX1132-NEXT: s_mov_b32 s2, -112930; GFX1132-NEXT: s_waitcnt lgkmcnt(0)12931; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 012932; GFX1132-NEXT: s_endpgm12933entry:12934 %old = atomicrmw min ptr addrspace(3) @local_var64, i64 5 acq_rel12935 store i64 %old, ptr addrspace(1) %out12936 ret void12937}12938 12939define amdgpu_kernel void @min_i64_varying(ptr addrspace(1) %out) {12940; GFX7LESS_ITERATIVE-LABEL: min_i64_varying:12941; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry12942; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec12943; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 012944; GFX7LESS_ITERATIVE-NEXT: s_brev_b32 s1, -212945; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s0, -112946; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr212947; GFX7LESS_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop12948; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=112949; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]12950; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s812951; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s812952; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s812953; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m012954; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m012955; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1012956; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v5, s912957; GFX7LESS_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[0:1], v[4:5]12958; GFX7LESS_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec12959; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s912960; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1012961; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s812962; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]12963; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[2:3], 012964; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]12965; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB26_112966; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd12967; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 012968; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v012969; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012970; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr412971; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc12972; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]12973; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB26_412974; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:12975; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 012976; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s112977; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s012978; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -112979; GFX7LESS_ITERATIVE-NEXT: ds_min_rtn_i64 v[3:4], v0, v[3:4]12980; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12981; GFX7LESS_ITERATIVE-NEXT: .LBB26_4:12982; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]12983; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912984; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00012985; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -112986; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v412987; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v312988; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s512989; GFX7LESS_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[1:2]12990; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc12991; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s412992; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc12993; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)12994; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 012995; GFX7LESS_ITERATIVE-NEXT: s_endpgm12996;12997; GFX8_ITERATIVE-LABEL: min_i64_varying:12998; GFX8_ITERATIVE: ; %bb.0: ; %entry12999; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec13000; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 013001; GFX8_ITERATIVE-NEXT: s_brev_b32 s1, -213002; GFX8_ITERATIVE-NEXT: s_mov_b32 s0, -113003; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr213004; GFX8_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop13005; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113006; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]13007; GFX8_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s813008; GFX8_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s813009; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1013010; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v5, s913011; GFX8_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[0:1], v[4:5]13012; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s813013; GFX8_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec13014; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m013015; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m013016; GFX8_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s913017; GFX8_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1013018; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s813019; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]13020; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB26_113021; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13022; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013023; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v013024; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013025; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr413026; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc13027; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]13028; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB26_413029; GFX8_ITERATIVE-NEXT: ; %bb.3:13030; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s113031; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 013032; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s013033; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -113034; GFX8_ITERATIVE-NEXT: ds_min_rtn_i64 v[3:4], v0, v[3:4]13035; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13036; GFX8_ITERATIVE-NEXT: .LBB26_4:13037; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]13038; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413039; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v413040; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v313041; GFX8_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[1:2]13042; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s513043; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc13044; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s413045; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00013046; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -113047; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc13048; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13049; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 013050; GFX8_ITERATIVE-NEXT: s_endpgm13051;13052; GFX9_ITERATIVE-LABEL: min_i64_varying:13053; GFX9_ITERATIVE: ; %bb.0: ; %entry13054; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec13055; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 013056; GFX9_ITERATIVE-NEXT: s_brev_b32 s1, -213057; GFX9_ITERATIVE-NEXT: s_mov_b32 s0, -113058; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr213059; GFX9_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop13060; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113061; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]13062; GFX9_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s813063; GFX9_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s813064; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1013065; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v5, s913066; GFX9_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[0:1], v[4:5]13067; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s813068; GFX9_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec13069; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m013070; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m013071; GFX9_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s913072; GFX9_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1013073; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s813074; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]13075; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB26_113076; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13077; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013078; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v013079; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013080; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr413081; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc13082; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]13083; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB26_413084; GFX9_ITERATIVE-NEXT: ; %bb.3:13085; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s113086; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 013087; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s013088; GFX9_ITERATIVE-NEXT: ds_min_rtn_i64 v[3:4], v0, v[3:4]13089; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13090; GFX9_ITERATIVE-NEXT: .LBB26_4:13091; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]13092; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413093; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v413094; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v313095; GFX9_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[1:2]13096; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s513097; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc13098; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s413099; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00013100; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -113101; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc13102; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13103; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 013104; GFX9_ITERATIVE-NEXT: s_endpgm13105;13106; GFX1064_ITERATIVE-LABEL: min_i64_varying:13107; GFX1064_ITERATIVE: ; %bb.0: ; %entry13108; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 013109; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec13110; GFX1064_ITERATIVE-NEXT: s_brev_b32 s1, -213111; GFX1064_ITERATIVE-NEXT: s_mov_b32 s0, -113112; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr213113; GFX1064_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop13114; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113115; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s10, s[2:3]13116; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s1013117; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s1013118; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s1013119; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s1013120; GFX1064_ITERATIVE-NEXT: v_cmp_lt_i64_e64 s[8:9], s[0:1], s[6:7]13121; GFX1064_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec13122; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s713123; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s613124; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1013125; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]13126; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB26_113127; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13128; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013129; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr413130; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v013131; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013132; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc13133; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]13134; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB26_413135; GFX1064_ITERATIVE-NEXT: ; %bb.3:13136; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s113137; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 013138; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s013139; GFX1064_ITERATIVE-NEXT: ds_min_rtn_i64 v[3:4], v0, v[3:4]13140; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13141; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv13142; GFX1064_ITERATIVE-NEXT: .LBB26_4:13143; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)13144; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]13145; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413146; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v413147; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v313148; GFX1064_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[2:3], v[1:2]13149; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc13150; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc13151; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600013152; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -113153; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13154; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 013155; GFX1064_ITERATIVE-NEXT: s_endpgm13156;13157; GFX1032_ITERATIVE-LABEL: min_i64_varying:13158; GFX1032_ITERATIVE: ; %bb.0: ; %entry13159; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 013160; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo13161; GFX1032_ITERATIVE-NEXT: s_brev_b32 s1, -213162; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, -113163; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr213164; GFX1032_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop13165; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113166; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s213167; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s313168; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s313169; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s313170; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s313171; GFX1032_ITERATIVE-NEXT: v_cmp_lt_i64_e64 s8, s[0:1], s[6:7]13172; GFX1032_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo13173; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s713174; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s613175; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s313176; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s313177; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB26_113178; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13179; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013180; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr413181; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v013182; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo13183; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s213184; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB26_413185; GFX1032_ITERATIVE-NEXT: ; %bb.3:13186; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s113187; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 013188; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s013189; GFX1032_ITERATIVE-NEXT: ds_min_rtn_i64 v[3:4], v0, v[3:4]13190; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13191; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv13192; GFX1032_ITERATIVE-NEXT: .LBB26_4:13193; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)13194; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s213195; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413196; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v413197; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v313198; GFX1032_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc_lo, s[2:3], v[1:2]13199; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc_lo13200; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc_lo13201; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600013202; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -113203; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13204; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 013205; GFX1032_ITERATIVE-NEXT: s_endpgm13206;13207; GFX1164_ITERATIVE-LABEL: min_i64_varying:13208; GFX1164_ITERATIVE: ; %bb.0: ; %entry13209; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 013210; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v013211; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec13212; GFX1164_ITERATIVE-NEXT: s_brev_b32 s1, -213213; GFX1164_ITERATIVE-NEXT: s_mov_b32 s0, -113214; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr113215; GFX1164_ITERATIVE-NEXT: .p2align 613216; GFX1164_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop13217; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113218; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s10, s[2:3]13219; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)13220; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s1013221; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s1013222; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s1013223; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s1013224; GFX1164_ITERATIVE-NEXT: v_cmp_lt_i64_e64 s[8:9], s[0:1], s[6:7]13225; GFX1164_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec13226; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s713227; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s613228; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1013229; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)13230; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[6:7]13231; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB26_113232; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13233; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 013234; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13235; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v213236; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v213237; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr313238; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc13239; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)13240; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]13241; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB26_413242; GFX1164_ITERATIVE-NEXT: ; %bb.3:13243; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s113244; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 013245; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s013246; GFX1164_ITERATIVE-NEXT: ds_min_rtn_i64 v[2:3], v4, v[2:3]13247; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13248; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv13249; GFX1164_ITERATIVE-NEXT: .LBB26_4:13250; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]13251; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2413252; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v313253; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v213254; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)13255; GFX1164_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc, s[2:3], v[0:1]13256; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc13257; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc13258; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600013259; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -113260; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13261; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 013262; GFX1164_ITERATIVE-NEXT: s_endpgm13263;13264; GFX1132_ITERATIVE-LABEL: min_i64_varying:13265; GFX1132_ITERATIVE: ; %bb.0: ; %entry13266; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v013267; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo13268; GFX1132_ITERATIVE-NEXT: s_brev_b32 s1, -213269; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, -113270; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr113271; GFX1132_ITERATIVE-NEXT: .p2align 613272; GFX1132_ITERATIVE-NEXT: .LBB26_1: ; %ComputeLoop13273; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113274; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s213275; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)13276; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s313277; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s313278; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s313279; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s313280; GFX1132_ITERATIVE-NEXT: v_cmp_lt_i64_e64 s8, s[0:1], s[6:7]13281; GFX1132_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo13282; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s713283; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s613284; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s313285; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)13286; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s313287; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB26_113288; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13289; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 013290; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)13291; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v213292; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr313293; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo13294; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s213295; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB26_413296; GFX1132_ITERATIVE-NEXT: ; %bb.3:13297; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s113298; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s013299; GFX1132_ITERATIVE-NEXT: ds_min_rtn_i64 v[2:3], v4, v[2:3]13300; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13301; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv13302; GFX1132_ITERATIVE-NEXT: .LBB26_4:13303; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s213304; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2413305; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v313306; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v213307; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)13308; GFX1132_ITERATIVE-NEXT: v_cmp_lt_i64_e32 vcc_lo, s[2:3], v[0:1]13309; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo13310; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo13311; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600013312; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -113313; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13314; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 013315; GFX1132_ITERATIVE-NEXT: s_endpgm13316;13317; GFX7LESS_DPP-LABEL: min_i64_varying:13318; GFX7LESS_DPP: ; %bb.0: ; %entry13319; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x913320; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 013321; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -113322; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)13323; GFX7LESS_DPP-NEXT: ds_min_rtn_i64 v[0:1], v1, v[0:1]13324; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)13325; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00013326; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -113327; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 013328; GFX7LESS_DPP-NEXT: s_endpgm13329;13330; GFX8_DPP-LABEL: min_i64_varying:13331; GFX8_DPP: ; %bb.0: ; %entry13332; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 013333; GFX8_DPP-NEXT: v_mov_b32_e32 v9, 013334; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v713335; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -113336; GFX8_DPP-NEXT: v_bfrev_b32_e32 v2, -213337; GFX8_DPP-NEXT: v_cndmask_b32_e64 v4, v2, 0, s[0:1]13338; GFX8_DPP-NEXT: v_cndmask_b32_e64 v3, -1, v0, s[0:1]13339; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, -213340; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -113341; GFX8_DPP-NEXT: v_mov_b32_e32 v1, -113342; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:1 row_mask:0xf bank_mask:0xf13343; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:1 row_mask:0xf bank_mask:0xf13344; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13345; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13346; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13347; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, -213348; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -113349; GFX8_DPP-NEXT: s_nop 013350; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:2 row_mask:0xf bank_mask:0xf13351; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:2 row_mask:0xf bank_mask:0xf13352; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13353; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13354; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13355; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, -213356; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -113357; GFX8_DPP-NEXT: s_nop 013358; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:4 row_mask:0xf bank_mask:0xf13359; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:4 row_mask:0xf bank_mask:0xf13360; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13361; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13362; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13363; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, -213364; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -113365; GFX8_DPP-NEXT: s_nop 013366; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:8 row_mask:0xf bank_mask:0xf13367; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:8 row_mask:0xf bank_mask:0xf13368; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13369; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13370; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13371; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, -213372; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -113373; GFX8_DPP-NEXT: s_nop 013374; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:15 row_mask:0xa bank_mask:0xf13375; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:15 row_mask:0xa bank_mask:0xf13376; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13377; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13378; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13379; GFX8_DPP-NEXT: v_bfrev_b32_e32 v6, -213380; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -113381; GFX8_DPP-NEXT: s_nop 013382; GFX8_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:31 row_mask:0xc bank_mask:0xf13383; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:31 row_mask:0xc bank_mask:0xf13384; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13385; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13386; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13387; GFX8_DPP-NEXT: v_readlane_b32 s3, v4, 6313388; GFX8_DPP-NEXT: v_readlane_b32 s2, v3, 6313389; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v4 wave_shr:1 row_mask:0xf bank_mask:0xf13390; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v3 wave_shr:1 row_mask:0xf bank_mask:0xf13391; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]13392; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v713393; GFX8_DPP-NEXT: ; implicit-def: $vgpr7_vgpr813394; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc13395; GFX8_DPP-NEXT: s_cbranch_execz .LBB26_213396; GFX8_DPP-NEXT: ; %bb.1:13397; GFX8_DPP-NEXT: v_mov_b32_e32 v8, s313398; GFX8_DPP-NEXT: v_mov_b32_e32 v7, s213399; GFX8_DPP-NEXT: s_mov_b32 m0, -113400; GFX8_DPP-NEXT: ds_min_rtn_i64 v[7:8], v9, v[7:8]13401; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)13402; GFX8_DPP-NEXT: .LBB26_2:13403; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]13404; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413405; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v813406; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v713407; GFX8_DPP-NEXT: v_mov_b32_e32 v7, v113408; GFX8_DPP-NEXT: v_mov_b32_e32 v8, v213409; GFX8_DPP-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[7:8]13410; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s513411; GFX8_DPP-NEXT: v_cndmask_b32_e32 v8, v8, v0, vcc13412; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s413413; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00013414; GFX8_DPP-NEXT: s_mov_b32 s2, -113415; GFX8_DPP-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc13416; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)13417; GFX8_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 013418; GFX8_DPP-NEXT: s_endpgm13419;13420; GFX9_DPP-LABEL: min_i64_varying:13421; GFX9_DPP: ; %bb.0: ; %entry13422; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 013423; GFX9_DPP-NEXT: v_mov_b32_e32 v9, 013424; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v713425; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -113426; GFX9_DPP-NEXT: v_bfrev_b32_e32 v2, -213427; GFX9_DPP-NEXT: v_cndmask_b32_e64 v4, v2, 0, s[0:1]13428; GFX9_DPP-NEXT: v_cndmask_b32_e64 v3, -1, v0, s[0:1]13429; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, -213430; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -113431; GFX9_DPP-NEXT: v_mov_b32_e32 v1, -113432; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:1 row_mask:0xf bank_mask:0xf13433; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:1 row_mask:0xf bank_mask:0xf13434; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13435; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13436; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13437; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, -213438; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -113439; GFX9_DPP-NEXT: s_nop 013440; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:2 row_mask:0xf bank_mask:0xf13441; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:2 row_mask:0xf bank_mask:0xf13442; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13443; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13444; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13445; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, -213446; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -113447; GFX9_DPP-NEXT: s_nop 013448; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:4 row_mask:0xf bank_mask:0xf13449; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:4 row_mask:0xf bank_mask:0xf13450; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13451; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13452; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13453; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, -213454; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -113455; GFX9_DPP-NEXT: s_nop 013456; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_shr:8 row_mask:0xf bank_mask:0xf13457; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:8 row_mask:0xf bank_mask:0xf13458; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13459; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13460; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13461; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, -213462; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -113463; GFX9_DPP-NEXT: s_nop 013464; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:15 row_mask:0xa bank_mask:0xf13465; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:15 row_mask:0xa bank_mask:0xf13466; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13467; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13468; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13469; GFX9_DPP-NEXT: v_bfrev_b32_e32 v6, -213470; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -113471; GFX9_DPP-NEXT: s_nop 013472; GFX9_DPP-NEXT: v_mov_b32_dpp v6, v4 row_bcast:31 row_mask:0xc bank_mask:0xf13473; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:31 row_mask:0xc bank_mask:0xf13474; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[3:4], v[5:6]13475; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc13476; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v6, v4, vcc13477; GFX9_DPP-NEXT: v_readlane_b32 s3, v4, 6313478; GFX9_DPP-NEXT: v_readlane_b32 s2, v3, 6313479; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v4 wave_shr:1 row_mask:0xf bank_mask:0xf13480; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v3 wave_shr:1 row_mask:0xf bank_mask:0xf13481; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]13482; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v713483; GFX9_DPP-NEXT: ; implicit-def: $vgpr7_vgpr813484; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc13485; GFX9_DPP-NEXT: s_cbranch_execz .LBB26_213486; GFX9_DPP-NEXT: ; %bb.1:13487; GFX9_DPP-NEXT: v_mov_b32_e32 v8, s313488; GFX9_DPP-NEXT: v_mov_b32_e32 v7, s213489; GFX9_DPP-NEXT: ds_min_rtn_i64 v[7:8], v9, v[7:8]13490; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)13491; GFX9_DPP-NEXT: .LBB26_2:13492; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]13493; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413494; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v813495; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v713496; GFX9_DPP-NEXT: v_mov_b32_e32 v7, v113497; GFX9_DPP-NEXT: v_mov_b32_e32 v8, v213498; GFX9_DPP-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[7:8]13499; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s513500; GFX9_DPP-NEXT: v_cndmask_b32_e32 v8, v8, v0, vcc13501; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s413502; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00013503; GFX9_DPP-NEXT: s_mov_b32 s2, -113504; GFX9_DPP-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc13505; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)13506; GFX9_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 013507; GFX9_DPP-NEXT: s_endpgm13508;13509; GFX1064_DPP-LABEL: min_i64_varying:13510; GFX1064_DPP: ; %bb.0: ; %entry13511; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -113512; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0x7fffffff, 0, s[0:1]13513; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, -213514; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -113515; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]13516; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v6, -213517; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, -113518; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf13519; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf13520; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13521; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13522; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13523; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, -213524; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -113525; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf13526; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf13527; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[5:6]13528; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc13529; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc13530; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v6, -213531; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, -113532; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf13533; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf13534; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13535; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13536; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13537; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, -213538; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -113539; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf13540; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf13541; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[5:6]13542; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc13543; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc13544; GFX1064_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -113545; GFX1064_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -113546; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13547; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13548; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13549; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13550; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13551; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v4, -213552; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -113553; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 3113554; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3113555; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, s213556; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, s313557; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf13558; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf13559; GFX1064_DPP-NEXT: v_bfrev_b32_e32 v5, -213560; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13561; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13562; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, -113563; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13564; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]13565; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013566; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -113567; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf13568; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 1513569; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf13570; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 1513571; GFX1064_DPP-NEXT: v_readlane_b32 s6, v2, 3113572; GFX1064_DPP-NEXT: v_readlane_b32 s7, v1, 3113573; GFX1064_DPP-NEXT: v_writelane_b32 v5, s2, 1613574; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 6313575; GFX1064_DPP-NEXT: v_writelane_b32 v4, s3, 1613576; GFX1064_DPP-NEXT: v_readlane_b32 s8, v2, 4713577; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 6313578; GFX1064_DPP-NEXT: v_readlane_b32 s9, v1, 4713579; GFX1064_DPP-NEXT: v_writelane_b32 v5, s6, 3213580; GFX1064_DPP-NEXT: v_writelane_b32 v4, s7, 3213581; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]13582; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v013583; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 013584; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -113585; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]13586; GFX1064_DPP-NEXT: v_writelane_b32 v5, s8, 4813587; GFX1064_DPP-NEXT: v_writelane_b32 v4, s9, 4813588; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]13589; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v713590; GFX1064_DPP-NEXT: s_mov_b32 s2, -113591; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr813592; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc13593; GFX1064_DPP-NEXT: s_cbranch_execz .LBB26_213594; GFX1064_DPP-NEXT: ; %bb.1:13595; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s113596; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s013597; GFX1064_DPP-NEXT: ds_min_rtn_i64 v[7:8], v0, v[7:8]13598; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)13599; GFX1064_DPP-NEXT: buffer_gl0_inv13600; GFX1064_DPP-NEXT: .LBB26_2:13601; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)13602; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]13603; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413604; GFX1064_DPP-NEXT: s_mov_b32 null, 013605; GFX1064_DPP-NEXT: v_readfirstlane_b32 s5, v813606; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v713607; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, v413608; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v513609; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600013610; GFX1064_DPP-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[7:8]13611; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc13612; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc13613; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)13614; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 013615; GFX1064_DPP-NEXT: s_endpgm13616;13617; GFX1032_DPP-LABEL: min_i64_varying:13618; GFX1032_DPP: ; %bb.0: ; %entry13619; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -113620; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0x7fffffff, 0, s213621; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v4, -213622; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -113623; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s213624; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v6, -213625; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, -113626; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf13627; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf13628; GFX1032_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[3:4]13629; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo13630; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo13631; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v4, -213632; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -113633; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf13634; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf13635; GFX1032_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[5:6]13636; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo13637; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo13638; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v6, -213639; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, -113640; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf13641; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf13642; GFX1032_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[3:4]13643; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo13644; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo13645; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v4, -213646; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -113647; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf13648; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf13649; GFX1032_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[5:6]13650; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo13651; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo13652; GFX1032_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -113653; GFX1032_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -113654; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13655; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13656; GFX1032_DPP-NEXT: v_bfrev_b32_e32 v5, -213657; GFX1032_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[3:4]13658; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo13659; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo13660; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, -113661; GFX1032_DPP-NEXT: v_readlane_b32 s3, v2, 1513662; GFX1032_DPP-NEXT: v_readlane_b32 s1, v2, 3113663; GFX1032_DPP-NEXT: v_readlane_b32 s0, v1, 3113664; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf13665; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf13666; GFX1032_DPP-NEXT: v_readlane_b32 s6, v1, 1513667; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s213668; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 013669; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 013670; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -113671; GFX1032_DPP-NEXT: v_writelane_b32 v5, s3, 1613672; GFX1032_DPP-NEXT: v_writelane_b32 v4, s6, 1613673; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s213674; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v713675; GFX1032_DPP-NEXT: s_mov_b32 s2, -113676; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr813677; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo13678; GFX1032_DPP-NEXT: s_cbranch_execz .LBB26_213679; GFX1032_DPP-NEXT: ; %bb.1:13680; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s113681; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s013682; GFX1032_DPP-NEXT: ds_min_rtn_i64 v[7:8], v0, v[7:8]13683; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)13684; GFX1032_DPP-NEXT: buffer_gl0_inv13685; GFX1032_DPP-NEXT: .LBB26_2:13686; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)13687; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s313688; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2413689; GFX1032_DPP-NEXT: s_mov_b32 null, 013690; GFX1032_DPP-NEXT: v_readfirstlane_b32 s5, v813691; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v713692; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, v413693; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v513694; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600013695; GFX1032_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, s[4:5], v[7:8]13696; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo13697; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo13698; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)13699; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 013700; GFX1032_DPP-NEXT: s_endpgm13701;13702; GFX1164_DPP-LABEL: min_i64_varying:13703; GFX1164_DPP: ; %bb.0: ; %entry13704; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v013705; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -113706; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)13707; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, 0x7fffffff, 0, s[0:1]13708; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, -213709; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -113710; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]13711; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v6, -213712; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, -113713; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf13714; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)13715; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf13716; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13717; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13718; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13719; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, -213720; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -113721; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)13722; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf13723; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf13724; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)13725; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[5:6]13726; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)13727; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc13728; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc13729; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v6, -213730; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, -113731; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)13732; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf13733; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf13734; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)13735; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13736; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)13737; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13738; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13739; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, -213740; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -113741; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)13742; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf13743; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf13744; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)13745; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[5:6]13746; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)13747; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc13748; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc13749; GFX1164_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -113750; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)13751; GFX1164_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -113752; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13753; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)13754; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13755; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13756; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)13757; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13758; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13759; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v4, -213760; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -113761; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)13762; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 3113763; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3113764; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)13765; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, s213766; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, s313767; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)13768; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf13769; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf13770; GFX1164_DPP-NEXT: v_bfrev_b32_e32 v5, -213771; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)13772; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, v[1:2], v[3:4]13773; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)13774; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc13775; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, -113776; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc13777; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]13778; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)13779; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013780; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -113781; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)13782; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf13783; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 1513784; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf13785; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 1513786; GFX1164_DPP-NEXT: v_readlane_b32 s6, v2, 3113787; GFX1164_DPP-NEXT: v_readlane_b32 s7, v1, 3113788; GFX1164_DPP-NEXT: v_writelane_b32 v5, s2, 1613789; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 6313790; GFX1164_DPP-NEXT: v_writelane_b32 v4, s3, 1613791; GFX1164_DPP-NEXT: v_readlane_b32 s8, v2, 4713792; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 6313793; GFX1164_DPP-NEXT: v_readlane_b32 s9, v1, 4713794; GFX1164_DPP-NEXT: v_writelane_b32 v5, s6, 3213795; GFX1164_DPP-NEXT: v_writelane_b32 v4, s7, 3213796; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]13797; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)13798; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v013799; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 013800; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -113801; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]13802; GFX1164_DPP-NEXT: v_writelane_b32 v5, s8, 4813803; GFX1164_DPP-NEXT: v_writelane_b32 v4, s9, 4813804; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]13805; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v713806; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)13807; GFX1164_DPP-NEXT: s_mov_b32 s2, -113808; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr813809; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc13810; GFX1164_DPP-NEXT: s_cbranch_execz .LBB26_213811; GFX1164_DPP-NEXT: ; %bb.1:13812; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s113813; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s013814; GFX1164_DPP-NEXT: ds_min_rtn_i64 v[7:8], v0, v[7:8]13815; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)13816; GFX1164_DPP-NEXT: buffer_gl0_inv13817; GFX1164_DPP-NEXT: .LBB26_2:13818; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]13819; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2413820; GFX1164_DPP-NEXT: v_readfirstlane_b32 s5, v813821; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v713822; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, v413823; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v513824; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600013825; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)13826; GFX1164_DPP-NEXT: v_cmp_lt_i64_e32 vcc, s[4:5], v[7:8]13827; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc13828; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc13829; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)13830; GFX1164_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 013831; GFX1164_DPP-NEXT: s_endpgm13832;13833; GFX1132_DPP-LABEL: min_i64_varying:13834; GFX1132_DPP: ; %bb.0: ; %entry13835; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v013836; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -113837; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)13838; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, 0x7fffffff, 0, s213839; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v4, -213840; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s213841; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v6, -213842; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_1)13843; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf13844; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, -113845; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf13846; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)13847; GFX1132_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[3:4]13848; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v113849; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v4, -213850; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, -113851; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf13852; GFX1132_DPP-NEXT: v_mov_b32_e32 v5, -113853; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13854; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf13855; GFX1132_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[5:6]13856; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v113857; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v6, -213858; GFX1132_DPP-NEXT: v_mov_b32_e32 v5, -113859; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_4)13860; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf13861; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf13862; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)13863; GFX1132_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[3:4]13864; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v113865; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v4, -213866; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, -113867; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf13868; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)13869; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf13870; GFX1132_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[5:6]13871; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v113872; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)13873; GFX1132_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -113874; GFX1132_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -113875; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)13876; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13877; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf13878; GFX1132_DPP-NEXT: v_bfrev_b32_e32 v5, -213879; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_2)13880; GFX1132_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, v[1:2], v[3:4]13881; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v113882; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, -113883; GFX1132_DPP-NEXT: v_readlane_b32 s3, v2, 1513884; GFX1132_DPP-NEXT: v_readlane_b32 s1, v2, 3113885; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)13886; GFX1132_DPP-NEXT: v_readlane_b32 s0, v1, 3113887; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf13888; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf13889; GFX1132_DPP-NEXT: v_readlane_b32 s6, v1, 1513890; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s213891; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 013892; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 013893; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -113894; GFX1132_DPP-NEXT: v_writelane_b32 v5, s3, 1613895; GFX1132_DPP-NEXT: v_writelane_b32 v4, s6, 1613896; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s213897; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v713898; GFX1132_DPP-NEXT: s_mov_b32 s2, -113899; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr813900; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo13901; GFX1132_DPP-NEXT: s_cbranch_execz .LBB26_213902; GFX1132_DPP-NEXT: ; %bb.1:13903; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s013904; GFX1132_DPP-NEXT: ds_min_rtn_i64 v[7:8], v0, v[7:8]13905; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)13906; GFX1132_DPP-NEXT: buffer_gl0_inv13907; GFX1132_DPP-NEXT: .LBB26_2:13908; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s313909; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2413910; GFX1132_DPP-NEXT: v_readfirstlane_b32 s5, v813911; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v713912; GFX1132_DPP-NEXT: v_mov_b32_e32 v7, v413913; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v513914; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600013915; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)13916; GFX1132_DPP-NEXT: v_cmp_lt_i64_e32 vcc_lo, s[4:5], v[7:8]13917; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo13918; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo13919; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)13920; GFX1132_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 013921; GFX1132_DPP-NEXT: s_endpgm13922entry:13923 %lane = call i32 @llvm.amdgcn.workitem.id.x()13924 %lane_ext = zext i32 %lane to i6413925 %old = atomicrmw min ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel13926 store i64 %old, ptr addrspace(1) %out13927 ret void13928}13929 13930define amdgpu_kernel void @umax_i32_varying(ptr addrspace(1) %out) {13931; GFX7LESS_ITERATIVE-LABEL: umax_i32_varying:13932; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry13933; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec13934; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, 013935; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr113936; GFX7LESS_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop13937; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113938; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]13939; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s313940; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s313941; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m013942; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s313943; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]13944; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 013945; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]13946; GFX7LESS_ITERATIVE-NEXT: s_max_u32 s2, s2, s813947; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB27_113948; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13949; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 013950; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v013951; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013952; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr013953; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc13954; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]13955; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB27_413956; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:13957; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 013958; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s213959; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -113960; GFX7LESS_ITERATIVE-NEXT: ds_max_rtn_u32 v0, v0, v213961; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13962; GFX7LESS_ITERATIVE-NEXT: .LBB27_4:13963; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]13964; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x913965; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00013966; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -113967; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v013968; GFX7LESS_ITERATIVE-NEXT: v_max_u32_e32 v0, s4, v113969; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)13970; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 013971; GFX7LESS_ITERATIVE-NEXT: s_endpgm13972;13973; GFX8_ITERATIVE-LABEL: umax_i32_varying:13974; GFX8_ITERATIVE: ; %bb.0: ; %entry13975; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec13976; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, 013977; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr113978; GFX8_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop13979; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=113980; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]13981; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s313982; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s313983; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m013984; GFX8_ITERATIVE-NEXT: s_max_u32 s2, s2, s613985; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s313986; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]13987; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB27_113988; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd13989; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 013990; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v013991; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v013992; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr013993; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc13994; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]13995; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB27_413996; GFX8_ITERATIVE-NEXT: ; %bb.3:13997; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 013998; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s213999; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -114000; GFX8_ITERATIVE-NEXT: ds_max_rtn_u32 v0, v0, v214001; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14002; GFX8_ITERATIVE-NEXT: .LBB27_4:14003; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]14004; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414005; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v014006; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00014007; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -114008; GFX8_ITERATIVE-NEXT: v_max_u32_e32 v0, s4, v114009; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14010; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 014011; GFX8_ITERATIVE-NEXT: s_endpgm14012;14013; GFX9_ITERATIVE-LABEL: umax_i32_varying:14014; GFX9_ITERATIVE: ; %bb.0: ; %entry14015; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec14016; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, 014017; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr114018; GFX9_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop14019; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114020; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]14021; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s314022; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s314023; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m014024; GFX9_ITERATIVE-NEXT: s_max_u32 s2, s2, s614025; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s314026; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]14027; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB27_114028; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14029; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014030; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014031; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014032; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr014033; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc14034; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]14035; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB27_414036; GFX9_ITERATIVE-NEXT: ; %bb.3:14037; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014038; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s214039; GFX9_ITERATIVE-NEXT: ds_max_rtn_u32 v0, v0, v214040; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14041; GFX9_ITERATIVE-NEXT: .LBB27_4:14042; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]14043; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414044; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v014045; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00014046; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -114047; GFX9_ITERATIVE-NEXT: v_max_u32_e32 v0, s4, v114048; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14049; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 014050; GFX9_ITERATIVE-NEXT: s_endpgm14051;14052; GFX1064_ITERATIVE-LABEL: umax_i32_varying:14053; GFX1064_ITERATIVE: ; %bb.0: ; %entry14054; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec14055; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, 014056; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr114057; GFX1064_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop14058; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114059; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]14060; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s314061; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s314062; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s314063; GFX1064_ITERATIVE-NEXT: s_max_u32 s2, s2, s814064; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]14065; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB27_114066; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14067; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014068; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014069; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014070; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr014071; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc14072; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]14073; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB27_414074; GFX1064_ITERATIVE-NEXT: ; %bb.3:14075; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014076; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s214077; GFX1064_ITERATIVE-NEXT: ds_max_rtn_u32 v0, v0, v214078; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14079; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv14080; GFX1064_ITERATIVE-NEXT: .LBB27_4:14081; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14082; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]14083; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414084; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v014085; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600014086; GFX1064_ITERATIVE-NEXT: v_max_u32_e32 v0, s2, v114087; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -114088; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14089; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 014090; GFX1064_ITERATIVE-NEXT: s_endpgm14091;14092; GFX1032_ITERATIVE-LABEL: umax_i32_varying:14093; GFX1032_ITERATIVE: ; %bb.0: ; %entry14094; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo14095; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, 014096; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr114097; GFX1032_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop14098; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114099; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s114100; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s214101; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s214102; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s214103; GFX1032_ITERATIVE-NEXT: s_max_u32 s0, s0, s314104; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s214105; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB27_114106; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14107; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014108; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v014109; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr014110; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo14111; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s114112; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB27_414113; GFX1032_ITERATIVE-NEXT: ; %bb.3:14114; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014115; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s014116; GFX1032_ITERATIVE-NEXT: ds_max_rtn_u32 v0, v0, v214117; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14118; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv14119; GFX1032_ITERATIVE-NEXT: .LBB27_4:14120; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14121; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s114122; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414123; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v014124; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600014125; GFX1032_ITERATIVE-NEXT: v_max_u32_e32 v0, s2, v114126; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -114127; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14128; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 014129; GFX1032_ITERATIVE-NEXT: s_endpgm14130;14131; GFX1164_ITERATIVE-LABEL: umax_i32_varying:14132; GFX1164_ITERATIVE: ; %bb.0: ; %entry14133; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v014134; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec14135; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, 014136; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr014137; GFX1164_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop14138; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114139; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]14140; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)14141; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s314142; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s314143; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s314144; GFX1164_ITERATIVE-NEXT: s_max_u32 s2, s2, s814145; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]14146; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB27_114147; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14148; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 014149; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14150; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v114151; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v114152; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr114153; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc14154; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)14155; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]14156; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB27_414157; GFX1164_ITERATIVE-NEXT: ; %bb.3:14158; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 014159; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s214160; GFX1164_ITERATIVE-NEXT: ds_max_rtn_u32 v1, v1, v214161; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14162; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv14163; GFX1164_ITERATIVE-NEXT: .LBB27_4:14164; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]14165; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2414166; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v114167; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600014168; GFX1164_ITERATIVE-NEXT: v_max_u32_e32 v0, s2, v014169; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -114170; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14171; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 014172; GFX1164_ITERATIVE-NEXT: s_endpgm14173;14174; GFX1132_ITERATIVE-LABEL: umax_i32_varying:14175; GFX1132_ITERATIVE: ; %bb.0: ; %entry14176; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v014177; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo14178; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, 014179; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr014180; GFX1132_ITERATIVE-NEXT: .LBB27_1: ; %ComputeLoop14181; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114182; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s114183; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)14184; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s214185; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s214186; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s214187; GFX1132_ITERATIVE-NEXT: s_max_u32 s0, s0, s314188; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s214189; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB27_114190; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14191; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 014192; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)14193; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v114194; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr114195; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo14196; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s114197; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB27_414198; GFX1132_ITERATIVE-NEXT: ; %bb.3:14199; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s014200; GFX1132_ITERATIVE-NEXT: ds_max_rtn_u32 v1, v1, v214201; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14202; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv14203; GFX1132_ITERATIVE-NEXT: .LBB27_4:14204; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s114205; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2414206; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v114207; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600014208; GFX1132_ITERATIVE-NEXT: v_max_u32_e32 v0, s2, v014209; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -114210; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14211; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 014212; GFX1132_ITERATIVE-NEXT: s_endpgm14213;14214; GFX7LESS_DPP-LABEL: umax_i32_varying:14215; GFX7LESS_DPP: ; %bb.0: ; %entry14216; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x914217; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 014218; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -114219; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)14220; GFX7LESS_DPP-NEXT: ds_max_rtn_u32 v0, v1, v014221; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)14222; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00014223; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -114224; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 014225; GFX7LESS_DPP-NEXT: s_endpgm14226;14227; GFX8_DPP-LABEL: umax_i32_varying:14228; GFX8_DPP: ; %bb.0: ; %entry14229; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 014230; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 014231; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v414232; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114233; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]14234; GFX8_DPP-NEXT: v_mov_b32_e32 v2, 014235; GFX8_DPP-NEXT: s_nop 014236; GFX8_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:114237; GFX8_DPP-NEXT: s_nop 114238; GFX8_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:114239; GFX8_DPP-NEXT: s_nop 114240; GFX8_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:114241; GFX8_DPP-NEXT: s_nop 114242; GFX8_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:114243; GFX8_DPP-NEXT: s_nop 114244; GFX8_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf14245; GFX8_DPP-NEXT: s_nop 114246; GFX8_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf14247; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 6314248; GFX8_DPP-NEXT: s_nop 014249; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf14250; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]14251; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414252; GFX8_DPP-NEXT: ; implicit-def: $vgpr014253; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc14254; GFX8_DPP-NEXT: s_cbranch_execz .LBB27_214255; GFX8_DPP-NEXT: ; %bb.1:14256; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s214257; GFX8_DPP-NEXT: s_mov_b32 m0, -114258; GFX8_DPP-NEXT: ds_max_rtn_u32 v0, v3, v014259; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)14260; GFX8_DPP-NEXT: .LBB27_2:14261; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]14262; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414263; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v014264; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v214265; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00014266; GFX8_DPP-NEXT: s_mov_b32 s2, -114267; GFX8_DPP-NEXT: v_max_u32_e32 v0, s4, v014268; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)14269; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 014270; GFX8_DPP-NEXT: s_endpgm14271;14272; GFX9_DPP-LABEL: umax_i32_varying:14273; GFX9_DPP: ; %bb.0: ; %entry14274; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 014275; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 014276; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v414277; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114278; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]14279; GFX9_DPP-NEXT: v_mov_b32_e32 v2, 014280; GFX9_DPP-NEXT: s_nop 014281; GFX9_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:114282; GFX9_DPP-NEXT: s_nop 114283; GFX9_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:114284; GFX9_DPP-NEXT: s_nop 114285; GFX9_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:114286; GFX9_DPP-NEXT: s_nop 114287; GFX9_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:114288; GFX9_DPP-NEXT: s_nop 114289; GFX9_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_bcast:15 row_mask:0xa bank_mask:0xf14290; GFX9_DPP-NEXT: s_nop 114291; GFX9_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_bcast:31 row_mask:0xc bank_mask:0xf14292; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 6314293; GFX9_DPP-NEXT: s_nop 014294; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v1 wave_shr:1 row_mask:0xf bank_mask:0xf14295; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]14296; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v414297; GFX9_DPP-NEXT: ; implicit-def: $vgpr014298; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc14299; GFX9_DPP-NEXT: s_cbranch_execz .LBB27_214300; GFX9_DPP-NEXT: ; %bb.1:14301; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s214302; GFX9_DPP-NEXT: ds_max_rtn_u32 v0, v3, v014303; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)14304; GFX9_DPP-NEXT: .LBB27_2:14305; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]14306; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414307; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v014308; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v214309; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00014310; GFX9_DPP-NEXT: s_mov_b32 s2, -114311; GFX9_DPP-NEXT: v_max_u32_e32 v0, s4, v014312; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)14313; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 014314; GFX9_DPP-NEXT: s_endpgm14315;14316; GFX1064_DPP-LABEL: umax_i32_varying:14317; GFX1064_DPP: ; %bb.0: ; %entry14318; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114319; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]14320; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 014321; GFX1064_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:114322; GFX1064_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:114323; GFX1064_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:114324; GFX1064_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:114325; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -114326; GFX1064_DPP-NEXT: v_max_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf14327; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 3114328; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s214329; GFX1064_DPP-NEXT: v_max_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf14330; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf14331; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 1514332; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3114333; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 1614334; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]14335; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014336; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114337; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 4714338; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 6314339; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 3214340; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]14341; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014342; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 014343; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114344; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 4814345; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]14346; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014347; GFX1064_DPP-NEXT: s_mov_b32 s2, -114348; GFX1064_DPP-NEXT: ; implicit-def: $vgpr014349; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc14350; GFX1064_DPP-NEXT: s_cbranch_execz .LBB27_214351; GFX1064_DPP-NEXT: ; %bb.1:14352; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, s614353; GFX1064_DPP-NEXT: ds_max_rtn_u32 v0, v4, v014354; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)14355; GFX1064_DPP-NEXT: buffer_gl0_inv14356; GFX1064_DPP-NEXT: .LBB27_2:14357; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14358; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]14359; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414360; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v014361; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v314362; GFX1064_DPP-NEXT: v_max_u32_e32 v0, s3, v014363; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600014364; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)14365; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 014366; GFX1064_DPP-NEXT: s_endpgm14367;14368; GFX1032_DPP-LABEL: umax_i32_varying:14369; GFX1032_DPP: ; %bb.0: ; %entry14370; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -114371; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s014372; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 014373; GFX1032_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:114374; GFX1032_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:114375; GFX1032_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:114376; GFX1032_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:114377; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -114378; GFX1032_DPP-NEXT: v_max_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf14379; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 1514380; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 3114381; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf14382; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s014383; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014384; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 014385; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -114386; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 1614387; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s014388; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v014389; GFX1032_DPP-NEXT: s_mov_b32 s0, s214390; GFX1032_DPP-NEXT: s_mov_b32 s2, -114391; GFX1032_DPP-NEXT: ; implicit-def: $vgpr014392; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo14393; GFX1032_DPP-NEXT: s_cbranch_execz .LBB27_214394; GFX1032_DPP-NEXT: ; %bb.1:14395; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, s014396; GFX1032_DPP-NEXT: ds_max_rtn_u32 v0, v4, v014397; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)14398; GFX1032_DPP-NEXT: buffer_gl0_inv14399; GFX1032_DPP-NEXT: .LBB27_2:14400; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14401; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s114402; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414403; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v014404; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v314405; GFX1032_DPP-NEXT: v_max_u32_e32 v0, s3, v014406; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600014407; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)14408; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 014409; GFX1032_DPP-NEXT: s_endpgm14410;14411; GFX1164_DPP-LABEL: umax_i32_varying:14412; GFX1164_DPP: ; %bb.0: ; %entry14413; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v014414; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114415; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)14416; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]14417; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 014418; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)14419; GFX1164_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:114420; GFX1164_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:114421; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14422; GFX1164_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:114423; GFX1164_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:114424; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14425; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -114426; GFX1164_DPP-NEXT: v_max_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf14427; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14428; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 3114429; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s214430; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14431; GFX1164_DPP-NEXT: v_max_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf14432; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf14433; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 1514434; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3114435; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)14436; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 1614437; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]14438; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014439; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114440; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)14441; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 4714442; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 6314443; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 3214444; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]14445; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)14446; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014447; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 014448; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -114449; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 4814450; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]14451; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014452; GFX1164_DPP-NEXT: s_mov_b32 s2, -114453; GFX1164_DPP-NEXT: ; implicit-def: $vgpr014454; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc14455; GFX1164_DPP-NEXT: s_cbranch_execz .LBB27_214456; GFX1164_DPP-NEXT: ; %bb.1:14457; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, s614458; GFX1164_DPP-NEXT: ds_max_rtn_u32 v0, v4, v014459; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)14460; GFX1164_DPP-NEXT: buffer_gl0_inv14461; GFX1164_DPP-NEXT: .LBB27_2:14462; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]14463; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2414464; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v014465; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v314466; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)14467; GFX1164_DPP-NEXT: v_max_u32_e32 v0, s3, v014468; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600014469; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)14470; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 014471; GFX1164_DPP-NEXT: s_endpgm14472;14473; GFX1132_DPP-LABEL: umax_i32_varying:14474; GFX1132_DPP: ; %bb.0: ; %entry14475; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v014476; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -114477; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)14478; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s014479; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, 014480; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)14481; GFX1132_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf bound_ctrl:114482; GFX1132_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf bound_ctrl:114483; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14484; GFX1132_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf bound_ctrl:114485; GFX1132_DPP-NEXT: v_max_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf bound_ctrl:114486; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14487; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -114488; GFX1132_DPP-NEXT: v_max_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf14489; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)14490; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 1514491; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 3114492; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf14493; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s014494; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014495; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, 014496; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -114497; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 1614498; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s014499; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v014500; GFX1132_DPP-NEXT: s_mov_b32 s0, s214501; GFX1132_DPP-NEXT: s_mov_b32 s2, -114502; GFX1132_DPP-NEXT: ; implicit-def: $vgpr014503; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo14504; GFX1132_DPP-NEXT: s_cbranch_execz .LBB27_214505; GFX1132_DPP-NEXT: ; %bb.1:14506; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, s014507; GFX1132_DPP-NEXT: ds_max_rtn_u32 v0, v4, v014508; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)14509; GFX1132_DPP-NEXT: buffer_gl0_inv14510; GFX1132_DPP-NEXT: .LBB27_2:14511; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s114512; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2414513; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v014514; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v314515; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)14516; GFX1132_DPP-NEXT: v_max_u32_e32 v0, s3, v014517; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600014518; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)14519; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 014520; GFX1132_DPP-NEXT: s_endpgm14521entry:14522 %lane = call i32 @llvm.amdgcn.workitem.id.x()14523 %old = atomicrmw umax ptr addrspace(3) @local_var32, i32 %lane acq_rel14524 store i32 %old, ptr addrspace(1) %out14525 ret void14526}14527 14528define amdgpu_kernel void @umax_i64_constant(ptr addrspace(1) %out) {14529; GFX7LESS-LABEL: umax_i64_constant:14530; GFX7LESS: ; %bb.0: ; %entry14531; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 014532; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v014533; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014534; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr114535; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc14536; GFX7LESS-NEXT: s_cbranch_execz .LBB28_214537; GFX7LESS-NEXT: ; %bb.1:14538; GFX7LESS-NEXT: v_mov_b32_e32 v0, 514539; GFX7LESS-NEXT: v_mov_b32_e32 v1, 014540; GFX7LESS-NEXT: v_mov_b32_e32 v2, 014541; GFX7LESS-NEXT: s_mov_b32 m0, -114542; GFX7LESS-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14543; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)14544; GFX7LESS-NEXT: .LBB28_2:14545; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]14546; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x914547; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00014548; GFX7LESS-NEXT: s_mov_b32 s2, -114549; GFX7LESS-NEXT: v_readfirstlane_b32 s5, v114550; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v014551; GFX7LESS-NEXT: v_mov_b32_e32 v1, 014552; GFX7LESS-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc14553; GFX7LESS-NEXT: v_mov_b32_e32 v2, s414554; GFX7LESS-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[0:1]14555; GFX7LESS-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc14556; GFX7LESS-NEXT: v_mov_b32_e32 v1, s514557; GFX7LESS-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc14558; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)14559; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 014560; GFX7LESS-NEXT: s_endpgm14561;14562; GFX8-LABEL: umax_i64_constant:14563; GFX8: ; %bb.0: ; %entry14564; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014565; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014566; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014567; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr114568; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc14569; GFX8-NEXT: s_cbranch_execz .LBB28_214570; GFX8-NEXT: ; %bb.1:14571; GFX8-NEXT: v_mov_b32_e32 v0, 514572; GFX8-NEXT: v_mov_b32_e32 v1, 014573; GFX8-NEXT: v_mov_b32_e32 v2, 014574; GFX8-NEXT: s_mov_b32 m0, -114575; GFX8-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14576; GFX8-NEXT: s_waitcnt lgkmcnt(0)14577; GFX8-NEXT: .LBB28_2:14578; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]14579; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414580; GFX8-NEXT: v_readfirstlane_b32 s5, v114581; GFX8-NEXT: v_readfirstlane_b32 s4, v014582; GFX8-NEXT: v_mov_b32_e32 v1, 014583; GFX8-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc14584; GFX8-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[0:1]14585; GFX8-NEXT: v_mov_b32_e32 v2, s414586; GFX8-NEXT: v_mov_b32_e32 v1, s514587; GFX8-NEXT: s_mov_b32 s3, 0xf00014588; GFX8-NEXT: s_mov_b32 s2, -114589; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc14590; GFX8-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc14591; GFX8-NEXT: s_waitcnt lgkmcnt(0)14592; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 014593; GFX8-NEXT: s_endpgm14594;14595; GFX9-LABEL: umax_i64_constant:14596; GFX9: ; %bb.0: ; %entry14597; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014598; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014599; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014600; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr114601; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc14602; GFX9-NEXT: s_cbranch_execz .LBB28_214603; GFX9-NEXT: ; %bb.1:14604; GFX9-NEXT: v_mov_b32_e32 v0, 514605; GFX9-NEXT: v_mov_b32_e32 v1, 014606; GFX9-NEXT: v_mov_b32_e32 v2, 014607; GFX9-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14608; GFX9-NEXT: s_waitcnt lgkmcnt(0)14609; GFX9-NEXT: .LBB28_2:14610; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]14611; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414612; GFX9-NEXT: v_readfirstlane_b32 s5, v114613; GFX9-NEXT: v_readfirstlane_b32 s4, v014614; GFX9-NEXT: v_mov_b32_e32 v1, 014615; GFX9-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc14616; GFX9-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[0:1]14617; GFX9-NEXT: v_mov_b32_e32 v2, s414618; GFX9-NEXT: v_mov_b32_e32 v1, s514619; GFX9-NEXT: s_mov_b32 s3, 0xf00014620; GFX9-NEXT: s_mov_b32 s2, -114621; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc14622; GFX9-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc14623; GFX9-NEXT: s_waitcnt lgkmcnt(0)14624; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 014625; GFX9-NEXT: s_endpgm14626;14627; GFX1064-LABEL: umax_i64_constant:14628; GFX1064: ; %bb.0: ; %entry14629; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014630; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014631; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014632; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr114633; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc14634; GFX1064-NEXT: s_cbranch_execz .LBB28_214635; GFX1064-NEXT: ; %bb.1:14636; GFX1064-NEXT: v_mov_b32_e32 v0, 514637; GFX1064-NEXT: v_mov_b32_e32 v1, 014638; GFX1064-NEXT: v_mov_b32_e32 v2, 014639; GFX1064-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14640; GFX1064-NEXT: s_waitcnt lgkmcnt(0)14641; GFX1064-NEXT: buffer_gl0_inv14642; GFX1064-NEXT: .LBB28_2:14643; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14644; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]14645; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414646; GFX1064-NEXT: v_readfirstlane_b32 s3, v114647; GFX1064-NEXT: v_readfirstlane_b32 s2, v014648; GFX1064-NEXT: v_mov_b32_e32 v1, 014649; GFX1064-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc14650; GFX1064-NEXT: v_cmp_gt_u64_e32 vcc, s[2:3], v[0:1]14651; GFX1064-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc14652; GFX1064-NEXT: v_cndmask_b32_e64 v1, 0, s3, vcc14653; GFX1064-NEXT: s_mov_b32 s3, 0x3101600014654; GFX1064-NEXT: s_mov_b32 s2, -114655; GFX1064-NEXT: s_waitcnt lgkmcnt(0)14656; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 014657; GFX1064-NEXT: s_endpgm14658;14659; GFX1032-LABEL: umax_i64_constant:14660; GFX1032: ; %bb.0: ; %entry14661; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014662; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v014663; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr114664; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo14665; GFX1032-NEXT: s_cbranch_execz .LBB28_214666; GFX1032-NEXT: ; %bb.1:14667; GFX1032-NEXT: v_mov_b32_e32 v0, 514668; GFX1032-NEXT: v_mov_b32_e32 v1, 014669; GFX1032-NEXT: v_mov_b32_e32 v2, 014670; GFX1032-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14671; GFX1032-NEXT: s_waitcnt lgkmcnt(0)14672; GFX1032-NEXT: buffer_gl0_inv14673; GFX1032-NEXT: .LBB28_2:14674; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14675; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s014676; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414677; GFX1032-NEXT: v_readfirstlane_b32 s3, v114678; GFX1032-NEXT: v_readfirstlane_b32 s2, v014679; GFX1032-NEXT: v_mov_b32_e32 v1, 014680; GFX1032-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc_lo14681; GFX1032-NEXT: v_cmp_gt_u64_e32 vcc_lo, s[2:3], v[0:1]14682; GFX1032-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo14683; GFX1032-NEXT: v_cndmask_b32_e64 v1, 0, s3, vcc_lo14684; GFX1032-NEXT: s_mov_b32 s3, 0x3101600014685; GFX1032-NEXT: s_mov_b32 s2, -114686; GFX1032-NEXT: s_waitcnt lgkmcnt(0)14687; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 014688; GFX1032-NEXT: s_endpgm14689;14690; GFX1164-LABEL: umax_i64_constant:14691; GFX1164: ; %bb.0: ; %entry14692; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014693; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14694; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014695; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014696; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr114697; GFX1164-NEXT: s_and_saveexec_b64 s[0:1], vcc14698; GFX1164-NEXT: s_cbranch_execz .LBB28_214699; GFX1164-NEXT: ; %bb.1:14700; GFX1164-NEXT: v_mov_b32_e32 v0, 514701; GFX1164-NEXT: v_mov_b32_e32 v1, 014702; GFX1164-NEXT: v_mov_b32_e32 v2, 014703; GFX1164-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14704; GFX1164-NEXT: s_waitcnt lgkmcnt(0)14705; GFX1164-NEXT: buffer_gl0_inv14706; GFX1164-NEXT: .LBB28_2:14707; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]14708; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x2414709; GFX1164-NEXT: v_readfirstlane_b32 s3, v114710; GFX1164-NEXT: v_readfirstlane_b32 s2, v014711; GFX1164-NEXT: v_mov_b32_e32 v1, 014712; GFX1164-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc14713; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)14714; GFX1164-NEXT: v_cmp_gt_u64_e32 vcc, s[2:3], v[0:1]14715; GFX1164-NEXT: s_waitcnt_depctr depctr_va_vcc(0)14716; GFX1164-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc14717; GFX1164-NEXT: v_cndmask_b32_e64 v1, 0, s3, vcc14718; GFX1164-NEXT: s_mov_b32 s3, 0x3101600014719; GFX1164-NEXT: s_mov_b32 s2, -114720; GFX1164-NEXT: s_waitcnt lgkmcnt(0)14721; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 014722; GFX1164-NEXT: s_endpgm14723;14724; GFX1132-LABEL: umax_i64_constant:14725; GFX1132: ; %bb.0: ; %entry14726; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014727; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)14728; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v014729; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr114730; GFX1132-NEXT: s_and_saveexec_b32 s0, vcc_lo14731; GFX1132-NEXT: s_cbranch_execz .LBB28_214732; GFX1132-NEXT: ; %bb.1:14733; GFX1132-NEXT: v_mov_b32_e32 v0, 514734; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, 014735; GFX1132-NEXT: ds_max_rtn_u64 v[0:1], v2, v[0:1]14736; GFX1132-NEXT: s_waitcnt lgkmcnt(0)14737; GFX1132-NEXT: buffer_gl0_inv14738; GFX1132-NEXT: .LBB28_2:14739; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s014740; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x2414741; GFX1132-NEXT: v_readfirstlane_b32 s3, v114742; GFX1132-NEXT: v_readfirstlane_b32 s2, v014743; GFX1132-NEXT: v_mov_b32_e32 v1, 014744; GFX1132-NEXT: v_cndmask_b32_e64 v0, 5, 0, vcc_lo14745; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)14746; GFX1132-NEXT: v_cmp_gt_u64_e32 vcc_lo, s[2:3], v[0:1]14747; GFX1132-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo14748; GFX1132-NEXT: v_cndmask_b32_e64 v1, 0, s3, vcc_lo14749; GFX1132-NEXT: s_mov_b32 s3, 0x3101600014750; GFX1132-NEXT: s_mov_b32 s2, -114751; GFX1132-NEXT: s_waitcnt lgkmcnt(0)14752; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 014753; GFX1132-NEXT: s_endpgm14754entry:14755 %old = atomicrmw umax ptr addrspace(3) @local_var64, i64 5 acq_rel14756 store i64 %old, ptr addrspace(1) %out14757 ret void14758}14759 14760define amdgpu_kernel void @umax_i64_varying(ptr addrspace(1) %out) {14761; GFX7LESS_ITERATIVE-LABEL: umax_i64_varying:14762; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry14763; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec14764; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 014765; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], 014766; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr214767; GFX7LESS_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop14768; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114769; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]14770; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s814771; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s814772; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s814773; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m014774; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m014775; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1014776; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v5, s914777; GFX7LESS_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[0:1], v[4:5]14778; GFX7LESS_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec14779; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s914780; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1014781; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s814782; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]14783; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[2:3], 014784; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]14785; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB29_114786; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14787; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 014788; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v014789; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014790; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr414791; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc14792; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]14793; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB29_414794; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:14795; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014796; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s114797; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s014798; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -114799; GFX7LESS_ITERATIVE-NEXT: ds_max_rtn_u64 v[3:4], v0, v[3:4]14800; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14801; GFX7LESS_ITERATIVE-NEXT: .LBB29_4:14802; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]14803; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x914804; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00014805; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -114806; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v414807; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v314808; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s514809; GFX7LESS_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[1:2]14810; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc14811; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s414812; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc14813; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14814; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 014815; GFX7LESS_ITERATIVE-NEXT: s_endpgm14816;14817; GFX8_ITERATIVE-LABEL: umax_i64_varying:14818; GFX8_ITERATIVE: ; %bb.0: ; %entry14819; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec14820; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 014821; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], 014822; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr214823; GFX8_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop14824; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114825; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]14826; GFX8_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s814827; GFX8_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s814828; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1014829; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v5, s914830; GFX8_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[0:1], v[4:5]14831; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s814832; GFX8_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec14833; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m014834; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m014835; GFX8_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s914836; GFX8_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1014837; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s814838; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]14839; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB29_114840; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14841; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014842; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014843; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014844; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr414845; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc14846; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]14847; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB29_414848; GFX8_ITERATIVE-NEXT: ; %bb.3:14849; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s114850; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014851; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s014852; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -114853; GFX8_ITERATIVE-NEXT: ds_max_rtn_u64 v[3:4], v0, v[3:4]14854; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14855; GFX8_ITERATIVE-NEXT: .LBB29_4:14856; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]14857; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414858; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v414859; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v314860; GFX8_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[1:2]14861; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s514862; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc14863; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s414864; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00014865; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -114866; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc14867; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14868; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 014869; GFX8_ITERATIVE-NEXT: s_endpgm14870;14871; GFX9_ITERATIVE-LABEL: umax_i64_varying:14872; GFX9_ITERATIVE: ; %bb.0: ; %entry14873; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec14874; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 014875; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], 014876; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr214877; GFX9_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop14878; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114879; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]14880; GFX9_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s814881; GFX9_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s814882; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1014883; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v5, s914884; GFX9_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[0:1], v[4:5]14885; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s814886; GFX9_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec14887; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m014888; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m014889; GFX9_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s914890; GFX9_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1014891; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s814892; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]14893; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB29_114894; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14895; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014896; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014897; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014898; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr414899; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc14900; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]14901; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB29_414902; GFX9_ITERATIVE-NEXT: ; %bb.3:14903; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s114904; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014905; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s014906; GFX9_ITERATIVE-NEXT: ds_max_rtn_u64 v[3:4], v0, v[3:4]14907; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14908; GFX9_ITERATIVE-NEXT: .LBB29_4:14909; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]14910; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414911; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v414912; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v314913; GFX9_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[1:2]14914; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s514915; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc14916; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s414917; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00014918; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -114919; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc14920; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14921; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 014922; GFX9_ITERATIVE-NEXT: s_endpgm14923;14924; GFX1064_ITERATIVE-LABEL: umax_i64_varying:14925; GFX1064_ITERATIVE: ; %bb.0: ; %entry14926; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 014927; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec14928; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], 014929; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr214930; GFX1064_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop14931; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114932; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s10, s[2:3]14933; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s1014934; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s1014935; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s1014936; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s1014937; GFX1064_ITERATIVE-NEXT: v_cmp_gt_u64_e64 s[8:9], s[0:1], s[6:7]14938; GFX1064_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec14939; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s714940; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s614941; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1014942; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]14943; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB29_114944; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14945; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014946; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr414947; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v014948; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v014949; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc14950; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]14951; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB29_414952; GFX1064_ITERATIVE-NEXT: ; %bb.3:14953; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s114954; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 014955; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s014956; GFX1064_ITERATIVE-NEXT: ds_max_rtn_u64 v[3:4], v0, v[3:4]14957; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14958; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv14959; GFX1064_ITERATIVE-NEXT: .LBB29_4:14960; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)14961; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]14962; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2414963; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v414964; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v314965; GFX1064_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[2:3], v[1:2]14966; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc14967; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc14968; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600014969; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -114970; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)14971; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 014972; GFX1064_ITERATIVE-NEXT: s_endpgm14973;14974; GFX1032_ITERATIVE-LABEL: umax_i64_varying:14975; GFX1032_ITERATIVE: ; %bb.0: ; %entry14976; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 014977; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo14978; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], 014979; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr214980; GFX1032_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop14981; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=114982; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s214983; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s314984; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s314985; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s314986; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s314987; GFX1032_ITERATIVE-NEXT: v_cmp_gt_u64_e64 s8, s[0:1], s[6:7]14988; GFX1032_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo14989; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s714990; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s614991; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s314992; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s314993; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB29_114994; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd14995; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 014996; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr414997; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v014998; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo14999; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s215000; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB29_415001; GFX1032_ITERATIVE-NEXT: ; %bb.3:15002; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s115003; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 015004; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s015005; GFX1032_ITERATIVE-NEXT: ds_max_rtn_u64 v[3:4], v0, v[3:4]15006; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15007; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv15008; GFX1032_ITERATIVE-NEXT: .LBB29_4:15009; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)15010; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s215011; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415012; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v415013; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v315014; GFX1032_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc_lo, s[2:3], v[1:2]15015; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc_lo15016; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc_lo15017; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600015018; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -115019; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15020; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 015021; GFX1032_ITERATIVE-NEXT: s_endpgm15022;15023; GFX1164_ITERATIVE-LABEL: umax_i64_varying:15024; GFX1164_ITERATIVE: ; %bb.0: ; %entry15025; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 015026; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v015027; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec15028; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], 015029; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr115030; GFX1164_ITERATIVE-NEXT: .p2align 615031; GFX1164_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop15032; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115033; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s10, s[2:3]15034; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)15035; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s1015036; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s1015037; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s1015038; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s1015039; GFX1164_ITERATIVE-NEXT: v_cmp_gt_u64_e64 s[8:9], s[0:1], s[6:7]15040; GFX1164_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec15041; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s715042; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s615043; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1015044; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)15045; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[6:7]15046; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB29_115047; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15048; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 015049; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15050; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v215051; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v215052; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr315053; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc15054; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)15055; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]15056; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB29_415057; GFX1164_ITERATIVE-NEXT: ; %bb.3:15058; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s115059; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 015060; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s015061; GFX1164_ITERATIVE-NEXT: ds_max_rtn_u64 v[2:3], v4, v[2:3]15062; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15063; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv15064; GFX1164_ITERATIVE-NEXT: .LBB29_4:15065; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]15066; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2415067; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v315068; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v215069; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)15070; GFX1164_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc, s[2:3], v[0:1]15071; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc15072; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc15073; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600015074; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -115075; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15076; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 015077; GFX1164_ITERATIVE-NEXT: s_endpgm15078;15079; GFX1132_ITERATIVE-LABEL: umax_i64_varying:15080; GFX1132_ITERATIVE: ; %bb.0: ; %entry15081; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v015082; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo15083; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], 015084; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr115085; GFX1132_ITERATIVE-NEXT: .p2align 615086; GFX1132_ITERATIVE-NEXT: .LBB29_1: ; %ComputeLoop15087; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115088; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s215089; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)15090; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s315091; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s315092; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s315093; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s315094; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)15095; GFX1132_ITERATIVE-NEXT: v_cmp_gt_u64_e64 s8, s[0:1], s[6:7]15096; GFX1132_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo15097; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s715098; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s615099; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s315100; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s315101; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB29_115102; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15103; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 015104; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15105; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v215106; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr315107; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo15108; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s215109; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB29_415110; GFX1132_ITERATIVE-NEXT: ; %bb.3:15111; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s115112; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s015113; GFX1132_ITERATIVE-NEXT: ds_max_rtn_u64 v[2:3], v4, v[2:3]15114; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15115; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv15116; GFX1132_ITERATIVE-NEXT: .LBB29_4:15117; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s215118; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2415119; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v315120; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v215121; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)15122; GFX1132_ITERATIVE-NEXT: v_cmp_gt_u64_e32 vcc_lo, s[2:3], v[0:1]15123; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo15124; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo15125; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600015126; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -115127; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15128; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 015129; GFX1132_ITERATIVE-NEXT: s_endpgm15130;15131; GFX7LESS_DPP-LABEL: umax_i64_varying:15132; GFX7LESS_DPP: ; %bb.0: ; %entry15133; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x915134; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 015135; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -115136; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)15137; GFX7LESS_DPP-NEXT: ds_max_rtn_u64 v[0:1], v1, v[0:1]15138; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)15139; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00015140; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -115141; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 015142; GFX7LESS_DPP-NEXT: s_endpgm15143;15144; GFX8_DPP-LABEL: umax_i64_varying:15145; GFX8_DPP: ; %bb.0: ; %entry15146; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 015147; GFX8_DPP-NEXT: v_mov_b32_e32 v7, 015148; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v515149; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -115150; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, 0, 0, s[0:1]15151; GFX8_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]15152; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015153; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015154; GFX8_DPP-NEXT: s_nop 015155; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf15156; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf15157; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15158; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15159; GFX8_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15160; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015161; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015162; GFX8_DPP-NEXT: s_nop 015163; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf15164; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf15165; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15166; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15167; GFX8_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15168; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015169; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015170; GFX8_DPP-NEXT: s_nop 015171; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf15172; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf15173; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15174; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15175; GFX8_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15176; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015177; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015178; GFX8_DPP-NEXT: s_nop 015179; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf15180; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf15181; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15182; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15183; GFX8_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15184; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015185; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015186; GFX8_DPP-NEXT: s_nop 015187; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf15188; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf15189; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15190; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15191; GFX8_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15192; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015193; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015194; GFX8_DPP-NEXT: s_nop 015195; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf15196; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf15197; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15198; GFX8_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15199; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15200; GFX8_DPP-NEXT: v_mov_b32_e32 v4, 015201; GFX8_DPP-NEXT: v_mov_b32_e32 v3, 015202; GFX8_DPP-NEXT: v_readlane_b32 s3, v2, 6315203; GFX8_DPP-NEXT: v_readlane_b32 s2, v1, 6315204; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 wave_shr:1 row_mask:0xf bank_mask:0xf15205; GFX8_DPP-NEXT: v_mov_b32_dpp v3, v1 wave_shr:1 row_mask:0xf bank_mask:0xf15206; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]15207; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v515208; GFX8_DPP-NEXT: ; implicit-def: $vgpr5_vgpr615209; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc15210; GFX8_DPP-NEXT: s_cbranch_execz .LBB29_215211; GFX8_DPP-NEXT: ; %bb.1:15212; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s315213; GFX8_DPP-NEXT: v_mov_b32_e32 v5, s215214; GFX8_DPP-NEXT: s_mov_b32 m0, -115215; GFX8_DPP-NEXT: ds_max_rtn_u64 v[5:6], v7, v[5:6]15216; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)15217; GFX8_DPP-NEXT: .LBB29_2:15218; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]15219; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415220; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v615221; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v515222; GFX8_DPP-NEXT: v_mov_b32_e32 v5, v315223; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v415224; GFX8_DPP-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[5:6]15225; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s515226; GFX8_DPP-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc15227; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s415228; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00015229; GFX8_DPP-NEXT: s_mov_b32 s2, -115230; GFX8_DPP-NEXT: v_cndmask_b32_e32 v5, v5, v0, vcc15231; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)15232; GFX8_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 015233; GFX8_DPP-NEXT: s_endpgm15234;15235; GFX9_DPP-LABEL: umax_i64_varying:15236; GFX9_DPP: ; %bb.0: ; %entry15237; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v5, exec_lo, 015238; GFX9_DPP-NEXT: v_mov_b32_e32 v7, 015239; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v5, exec_hi, v515240; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -115241; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, 0, 0, s[0:1]15242; GFX9_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]15243; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015244; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015245; GFX9_DPP-NEXT: s_nop 015246; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf15247; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf15248; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15249; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15250; GFX9_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15251; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015252; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015253; GFX9_DPP-NEXT: s_nop 015254; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf15255; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:2 row_mask:0xf bank_mask:0xf15256; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15257; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15258; GFX9_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15259; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015260; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015261; GFX9_DPP-NEXT: s_nop 015262; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf15263; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf15264; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15265; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15266; GFX9_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15267; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015268; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015269; GFX9_DPP-NEXT: s_nop 015270; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf15271; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:8 row_mask:0xf bank_mask:0xf15272; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15273; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15274; GFX9_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15275; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015276; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015277; GFX9_DPP-NEXT: s_nop 015278; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf15279; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:15 row_mask:0xa bank_mask:0xf15280; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15281; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15282; GFX9_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15283; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015284; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015285; GFX9_DPP-NEXT: s_nop 015286; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf15287; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 row_bcast:31 row_mask:0xc bank_mask:0xf15288; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15289; GFX9_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15290; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15291; GFX9_DPP-NEXT: v_mov_b32_e32 v4, 015292; GFX9_DPP-NEXT: v_mov_b32_e32 v3, 015293; GFX9_DPP-NEXT: v_readlane_b32 s3, v2, 6315294; GFX9_DPP-NEXT: v_readlane_b32 s2, v1, 6315295; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 wave_shr:1 row_mask:0xf bank_mask:0xf15296; GFX9_DPP-NEXT: v_mov_b32_dpp v3, v1 wave_shr:1 row_mask:0xf bank_mask:0xf15297; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]15298; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v515299; GFX9_DPP-NEXT: ; implicit-def: $vgpr5_vgpr615300; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc15301; GFX9_DPP-NEXT: s_cbranch_execz .LBB29_215302; GFX9_DPP-NEXT: ; %bb.1:15303; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s315304; GFX9_DPP-NEXT: v_mov_b32_e32 v5, s215305; GFX9_DPP-NEXT: ds_max_rtn_u64 v[5:6], v7, v[5:6]15306; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)15307; GFX9_DPP-NEXT: .LBB29_2:15308; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]15309; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415310; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v615311; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v515312; GFX9_DPP-NEXT: v_mov_b32_e32 v5, v315313; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v415314; GFX9_DPP-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[5:6]15315; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s515316; GFX9_DPP-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc15317; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s415318; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00015319; GFX9_DPP-NEXT: s_mov_b32 s2, -115320; GFX9_DPP-NEXT: v_cndmask_b32_e32 v5, v5, v0, vcc15321; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)15322; GFX9_DPP-NEXT: buffer_store_dwordx2 v[5:6], off, s[0:3], 015323; GFX9_DPP-NEXT: s_endpgm15324;15325; GFX1064_DPP-LABEL: umax_i64_varying:15326; GFX1064_DPP: ; %bb.0: ; %entry15327; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -115328; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, 0, 0, s[0:1]15329; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 015330; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 015331; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]15332; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 015333; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 015334; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf15335; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf15336; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15337; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15338; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15339; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 015340; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 015341; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf15342; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf15343; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[5:6]15344; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc15345; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc15346; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, 015347; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 015348; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf15349; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf15350; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15351; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15352; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15353; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 015354; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 015355; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf15356; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf15357; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[5:6]15358; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc15359; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc15360; GFX1064_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -115361; GFX1064_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -115362; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15363; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15364; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15365; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15366; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15367; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 015368; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, 015369; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 3115370; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3115371; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, s215372; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, s315373; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf15374; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf15375; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, 015376; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15377; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15378; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, 015379; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15380; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]15381; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 015382; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -115383; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf15384; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 1515385; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf15386; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 1515387; GFX1064_DPP-NEXT: v_readlane_b32 s6, v2, 3115388; GFX1064_DPP-NEXT: v_readlane_b32 s7, v1, 3115389; GFX1064_DPP-NEXT: v_writelane_b32 v5, s2, 1615390; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 6315391; GFX1064_DPP-NEXT: v_writelane_b32 v4, s3, 1615392; GFX1064_DPP-NEXT: v_readlane_b32 s8, v2, 4715393; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 6315394; GFX1064_DPP-NEXT: v_readlane_b32 s9, v1, 4715395; GFX1064_DPP-NEXT: v_writelane_b32 v5, s6, 3215396; GFX1064_DPP-NEXT: v_writelane_b32 v4, s7, 3215397; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]15398; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v015399; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 015400; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -115401; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]15402; GFX1064_DPP-NEXT: v_writelane_b32 v5, s8, 4815403; GFX1064_DPP-NEXT: v_writelane_b32 v4, s9, 4815404; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]15405; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v715406; GFX1064_DPP-NEXT: s_mov_b32 s2, -115407; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr815408; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc15409; GFX1064_DPP-NEXT: s_cbranch_execz .LBB29_215410; GFX1064_DPP-NEXT: ; %bb.1:15411; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s115412; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s015413; GFX1064_DPP-NEXT: ds_max_rtn_u64 v[7:8], v0, v[7:8]15414; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)15415; GFX1064_DPP-NEXT: buffer_gl0_inv15416; GFX1064_DPP-NEXT: .LBB29_2:15417; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)15418; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]15419; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415420; GFX1064_DPP-NEXT: s_mov_b32 null, 015421; GFX1064_DPP-NEXT: v_readfirstlane_b32 s5, v815422; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v715423; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, v415424; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v515425; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600015426; GFX1064_DPP-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[7:8]15427; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc15428; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc15429; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)15430; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 015431; GFX1064_DPP-NEXT: s_endpgm15432;15433; GFX1032_DPP-LABEL: umax_i64_varying:15434; GFX1032_DPP: ; %bb.0: ; %entry15435; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -115436; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, 0, 0, s215437; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 015438; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 015439; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s215440; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 015441; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 015442; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf15443; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf15444; GFX1032_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[3:4]15445; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo15446; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo15447; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 015448; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 015449; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf15450; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf15451; GFX1032_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[5:6]15452; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo15453; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo15454; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, 015455; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 015456; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf15457; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf15458; GFX1032_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[3:4]15459; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo15460; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo15461; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 015462; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, 015463; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf15464; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf15465; GFX1032_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[5:6]15466; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo15467; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo15468; GFX1032_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -115469; GFX1032_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -115470; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15471; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15472; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, 015473; GFX1032_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[3:4]15474; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo15475; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo15476; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, 015477; GFX1032_DPP-NEXT: v_readlane_b32 s3, v2, 1515478; GFX1032_DPP-NEXT: v_readlane_b32 s1, v2, 3115479; GFX1032_DPP-NEXT: v_readlane_b32 s0, v1, 3115480; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf15481; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf15482; GFX1032_DPP-NEXT: v_readlane_b32 s6, v1, 1515483; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s215484; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 015485; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 015486; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -115487; GFX1032_DPP-NEXT: v_writelane_b32 v5, s3, 1615488; GFX1032_DPP-NEXT: v_writelane_b32 v4, s6, 1615489; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s215490; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v715491; GFX1032_DPP-NEXT: s_mov_b32 s2, -115492; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr815493; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo15494; GFX1032_DPP-NEXT: s_cbranch_execz .LBB29_215495; GFX1032_DPP-NEXT: ; %bb.1:15496; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s115497; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s015498; GFX1032_DPP-NEXT: ds_max_rtn_u64 v[7:8], v0, v[7:8]15499; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)15500; GFX1032_DPP-NEXT: buffer_gl0_inv15501; GFX1032_DPP-NEXT: .LBB29_2:15502; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)15503; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s315504; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415505; GFX1032_DPP-NEXT: s_mov_b32 null, 015506; GFX1032_DPP-NEXT: v_readfirstlane_b32 s5, v815507; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v715508; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, v415509; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v515510; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600015511; GFX1032_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, s[4:5], v[7:8]15512; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo15513; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo15514; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)15515; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 015516; GFX1032_DPP-NEXT: s_endpgm15517;15518; GFX1164_DPP-LABEL: umax_i64_varying:15519; GFX1164_DPP: ; %bb.0: ; %entry15520; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v015521; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -115522; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)15523; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, 0, 0, s[0:1]15524; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 015525; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 015526; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s[0:1]15527; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, 015528; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 015529; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf15530; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)15531; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf15532; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15533; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15534; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15535; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 015536; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 015537; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15538; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf15539; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf15540; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)15541; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[5:6]15542; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)15543; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc15544; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc15545; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, 015546; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 015547; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15548; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf15549; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf15550; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)15551; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15552; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)15553; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15554; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15555; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 015556; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 015557; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15558; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf15559; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf15560; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)15561; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[5:6]15562; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)15563; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc15564; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc15565; GFX1164_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -115566; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15567; GFX1164_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -115568; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15569; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15570; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15571; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15572; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)15573; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15574; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15575; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 015576; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, 015577; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15578; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 3115579; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3115580; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15581; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, s215582; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, s315583; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15584; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf15585; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf15586; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, 015587; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)15588; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, v[1:2], v[3:4]15589; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)15590; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc15591; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, 015592; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc15593; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]15594; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)15595; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 015596; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -115597; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)15598; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf15599; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 1515600; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf15601; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 1515602; GFX1164_DPP-NEXT: v_readlane_b32 s6, v2, 3115603; GFX1164_DPP-NEXT: v_readlane_b32 s7, v1, 3115604; GFX1164_DPP-NEXT: v_writelane_b32 v5, s2, 1615605; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 6315606; GFX1164_DPP-NEXT: v_writelane_b32 v4, s3, 1615607; GFX1164_DPP-NEXT: v_readlane_b32 s8, v2, 4715608; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 6315609; GFX1164_DPP-NEXT: v_readlane_b32 s9, v1, 4715610; GFX1164_DPP-NEXT: v_writelane_b32 v5, s6, 3215611; GFX1164_DPP-NEXT: v_writelane_b32 v4, s7, 3215612; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]15613; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)15614; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v015615; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 015616; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -115617; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]15618; GFX1164_DPP-NEXT: v_writelane_b32 v5, s8, 4815619; GFX1164_DPP-NEXT: v_writelane_b32 v4, s9, 4815620; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]15621; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v715622; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)15623; GFX1164_DPP-NEXT: s_mov_b32 s2, -115624; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr815625; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc15626; GFX1164_DPP-NEXT: s_cbranch_execz .LBB29_215627; GFX1164_DPP-NEXT: ; %bb.1:15628; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s115629; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s015630; GFX1164_DPP-NEXT: ds_max_rtn_u64 v[7:8], v0, v[7:8]15631; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)15632; GFX1164_DPP-NEXT: buffer_gl0_inv15633; GFX1164_DPP-NEXT: .LBB29_2:15634; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]15635; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2415636; GFX1164_DPP-NEXT: v_readfirstlane_b32 s5, v815637; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v715638; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, v415639; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v515640; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600015641; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)15642; GFX1164_DPP-NEXT: v_cmp_gt_u64_e32 vcc, s[4:5], v[7:8]15643; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc15644; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc15645; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)15646; GFX1164_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 015647; GFX1164_DPP-NEXT: s_endpgm15648;15649; GFX1132_DPP-LABEL: umax_i64_varying:15650; GFX1132_DPP: ; %bb.0: ; %entry15651; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v015652; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -115653; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)15654; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, 0, 0, s215655; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, 015656; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, 0, v0, s215657; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v5, 015658; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15659; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf15660; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf15661; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)15662; GFX1132_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[3:4]15663; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v115664; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, 015665; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf15666; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)15667; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf15668; GFX1132_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[5:6]15669; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v115670; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v5, 015671; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)15672; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf15673; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf15674; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)15675; GFX1132_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[3:4]15676; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v115677; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, 015678; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf15679; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)15680; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf15681; GFX1132_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[5:6]15682; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v115683; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)15684; GFX1132_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -115685; GFX1132_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -115686; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)15687; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15688; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf15689; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)15690; GFX1132_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, v[1:2], v[3:4]15691; GFX1132_DPP-NEXT: v_dual_mov_b32 v5, 0 :: v_dual_cndmask_b32 v2, v4, v215692; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_cndmask_b32 v1, v3, v115693; GFX1132_DPP-NEXT: v_readlane_b32 s3, v2, 1515694; GFX1132_DPP-NEXT: v_readlane_b32 s1, v2, 3115695; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)15696; GFX1132_DPP-NEXT: v_readlane_b32 s0, v1, 3115697; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf15698; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf15699; GFX1132_DPP-NEXT: v_readlane_b32 s6, v1, 1515700; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s215701; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 015702; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 015703; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -115704; GFX1132_DPP-NEXT: v_writelane_b32 v5, s3, 1615705; GFX1132_DPP-NEXT: v_writelane_b32 v4, s6, 1615706; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s215707; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v715708; GFX1132_DPP-NEXT: s_mov_b32 s2, -115709; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr815710; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo15711; GFX1132_DPP-NEXT: s_cbranch_execz .LBB29_215712; GFX1132_DPP-NEXT: ; %bb.1:15713; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s015714; GFX1132_DPP-NEXT: ds_max_rtn_u64 v[7:8], v0, v[7:8]15715; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)15716; GFX1132_DPP-NEXT: buffer_gl0_inv15717; GFX1132_DPP-NEXT: .LBB29_2:15718; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s315719; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2415720; GFX1132_DPP-NEXT: v_readfirstlane_b32 s5, v815721; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v715722; GFX1132_DPP-NEXT: v_mov_b32_e32 v7, v415723; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v515724; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600015725; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)15726; GFX1132_DPP-NEXT: v_cmp_gt_u64_e32 vcc_lo, s[4:5], v[7:8]15727; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo15728; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo15729; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)15730; GFX1132_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 015731; GFX1132_DPP-NEXT: s_endpgm15732entry:15733 %lane = call i32 @llvm.amdgcn.workitem.id.x()15734 %lane_ext = zext i32 %lane to i6415735 %old = atomicrmw umax ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel15736 store i64 %old, ptr addrspace(1) %out15737 ret void15738}15739 15740define amdgpu_kernel void @umin_i32_varying(ptr addrspace(1) %out) {15741; GFX7LESS_ITERATIVE-LABEL: umin_i32_varying:15742; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry15743; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec15744; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -115745; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr115746; GFX7LESS_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15747; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115748; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]15749; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s315750; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s315751; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m015752; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s315753; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]15754; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[0:1], 015755; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]15756; GFX7LESS_ITERATIVE-NEXT: s_min_u32 s2, s2, s815757; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB30_115758; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15759; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 015760; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v015761; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v015762; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr015763; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc15764; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]15765; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB30_415766; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:15767; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 015768; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v2, s215769; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -115770; GFX7LESS_ITERATIVE-NEXT: ds_min_rtn_u32 v0, v0, v215771; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15772; GFX7LESS_ITERATIVE-NEXT: .LBB30_4:15773; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]15774; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x915775; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00015776; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -115777; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v015778; GFX7LESS_ITERATIVE-NEXT: v_min_u32_e32 v0, s4, v115779; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15780; GFX7LESS_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 015781; GFX7LESS_ITERATIVE-NEXT: s_endpgm15782;15783; GFX8_ITERATIVE-LABEL: umin_i32_varying:15784; GFX8_ITERATIVE: ; %bb.0: ; %entry15785; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec15786; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -115787; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr115788; GFX8_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15789; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115790; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]15791; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s315792; GFX8_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s315793; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m015794; GFX8_ITERATIVE-NEXT: s_min_u32 s2, s2, s615795; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s315796; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]15797; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB30_115798; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15799; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 015800; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v015801; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v015802; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr015803; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc15804; GFX8_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]15805; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB30_415806; GFX8_ITERATIVE-NEXT: ; %bb.3:15807; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 015808; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v2, s215809; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -115810; GFX8_ITERATIVE-NEXT: ds_min_rtn_u32 v0, v0, v215811; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15812; GFX8_ITERATIVE-NEXT: .LBB30_4:15813; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]15814; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415815; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v015816; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00015817; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -115818; GFX8_ITERATIVE-NEXT: v_min_u32_e32 v0, s4, v115819; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15820; GFX8_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 015821; GFX8_ITERATIVE-NEXT: s_endpgm15822;15823; GFX9_ITERATIVE-LABEL: umin_i32_varying:15824; GFX9_ITERATIVE: ; %bb.0: ; %entry15825; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec15826; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -115827; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr115828; GFX9_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15829; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115830; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]15831; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s315832; GFX9_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s315833; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s2, m015834; GFX9_ITERATIVE-NEXT: s_min_u32 s2, s2, s615835; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s315836; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]15837; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB30_115838; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15839; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 015840; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v015841; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v015842; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr015843; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc15844; GFX9_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]15845; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB30_415846; GFX9_ITERATIVE-NEXT: ; %bb.3:15847; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 015848; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v2, s215849; GFX9_ITERATIVE-NEXT: ds_min_rtn_u32 v0, v0, v215850; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15851; GFX9_ITERATIVE-NEXT: .LBB30_4:15852; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]15853; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415854; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v015855; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00015856; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -115857; GFX9_ITERATIVE-NEXT: v_min_u32_e32 v0, s4, v115858; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15859; GFX9_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 015860; GFX9_ITERATIVE-NEXT: s_endpgm15861;15862; GFX1064_ITERATIVE-LABEL: umin_i32_varying:15863; GFX1064_ITERATIVE: ; %bb.0: ; %entry15864; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec15865; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -115866; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr115867; GFX1064_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15868; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115869; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s3, s[0:1]15870; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s8, v0, s315871; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s2, s315872; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s315873; GFX1064_ITERATIVE-NEXT: s_min_u32 s2, s2, s815874; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[0:1], s[0:1], s[6:7]15875; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB30_115876; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15877; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 015878; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v015879; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v015880; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr015881; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc15882; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]15883; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB30_415884; GFX1064_ITERATIVE-NEXT: ; %bb.3:15885; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 015886; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v2, s215887; GFX1064_ITERATIVE-NEXT: ds_min_rtn_u32 v0, v0, v215888; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15889; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv15890; GFX1064_ITERATIVE-NEXT: .LBB30_4:15891; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)15892; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]15893; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415894; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v015895; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600015896; GFX1064_ITERATIVE-NEXT: v_min_u32_e32 v0, s2, v115897; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -115898; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15899; GFX1064_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 015900; GFX1064_ITERATIVE-NEXT: s_endpgm15901;15902; GFX1032_ITERATIVE-LABEL: umin_i32_varying:15903; GFX1032_ITERATIVE: ; %bb.0: ; %entry15904; GFX1032_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo15905; GFX1032_ITERATIVE-NEXT: s_mov_b32 s0, -115906; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr115907; GFX1032_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15908; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115909; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s2, s115910; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s3, v0, s215911; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s215912; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s215913; GFX1032_ITERATIVE-NEXT: s_min_u32 s0, s0, s315914; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s1, s1, s215915; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB30_115916; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15917; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 015918; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v015919; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr015920; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo15921; GFX1032_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s115922; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB30_415923; GFX1032_ITERATIVE-NEXT: ; %bb.3:15924; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 015925; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v2, s015926; GFX1032_ITERATIVE-NEXT: ds_min_rtn_u32 v0, v0, v215927; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15928; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv15929; GFX1032_ITERATIVE-NEXT: .LBB30_4:15930; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)15931; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s115932; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2415933; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v015934; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600015935; GFX1032_ITERATIVE-NEXT: v_min_u32_e32 v0, s2, v115936; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -115937; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15938; GFX1032_ITERATIVE-NEXT: buffer_store_dword v0, off, s[0:3], 015939; GFX1032_ITERATIVE-NEXT: s_endpgm15940;15941; GFX1164_ITERATIVE-LABEL: umin_i32_varying:15942; GFX1164_ITERATIVE: ; %bb.0: ; %entry15943; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v015944; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], exec15945; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -115946; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr015947; GFX1164_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15948; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115949; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s3, s[0:1]15950; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)15951; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s8, v1, s315952; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s2, s315953; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s315954; GFX1164_ITERATIVE-NEXT: s_min_u32 s2, s2, s815955; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[6:7]15956; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB30_115957; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd15958; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 015959; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15960; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v115961; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v115962; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr115963; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[0:1], vcc15964; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)15965; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[0:1], exec, s[0:1]15966; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB30_415967; GFX1164_ITERATIVE-NEXT: ; %bb.3:15968; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v1, 015969; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s215970; GFX1164_ITERATIVE-NEXT: ds_min_rtn_u32 v1, v1, v215971; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15972; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv15973; GFX1164_ITERATIVE-NEXT: .LBB30_4:15974; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[0:1]15975; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2415976; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v115977; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600015978; GFX1164_ITERATIVE-NEXT: v_min_u32_e32 v0, s2, v015979; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -115980; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)15981; GFX1164_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 015982; GFX1164_ITERATIVE-NEXT: s_endpgm15983;15984; GFX1132_ITERATIVE-LABEL: umin_i32_varying:15985; GFX1132_ITERATIVE: ; %bb.0: ; %entry15986; GFX1132_ITERATIVE-NEXT: v_and_b32_e32 v1, 0x3ff, v015987; GFX1132_ITERATIVE-NEXT: s_mov_b32 s1, exec_lo15988; GFX1132_ITERATIVE-NEXT: s_mov_b32 s0, -115989; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr015990; GFX1132_ITERATIVE-NEXT: .LBB30_1: ; %ComputeLoop15991; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=115992; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s2, s115993; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)15994; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s3, v1, s215995; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s215996; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s2, 1, s215997; GFX1132_ITERATIVE-NEXT: s_min_u32 s0, s0, s315998; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s1, s1, s215999; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB30_116000; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16001; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 016002; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)16003; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v116004; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr116005; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s1, vcc_lo16006; GFX1132_ITERATIVE-NEXT: s_xor_b32 s1, exec_lo, s116007; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB30_416008; GFX1132_ITERATIVE-NEXT: ; %bb.3:16009; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, s016010; GFX1132_ITERATIVE-NEXT: ds_min_rtn_u32 v1, v1, v216011; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16012; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv16013; GFX1132_ITERATIVE-NEXT: .LBB30_4:16014; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s116015; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416016; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v116017; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600016018; GFX1132_ITERATIVE-NEXT: v_min_u32_e32 v0, s2, v016019; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -116020; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16021; GFX1132_ITERATIVE-NEXT: buffer_store_b32 v0, off, s[0:3], 016022; GFX1132_ITERATIVE-NEXT: s_endpgm16023;16024; GFX7LESS_DPP-LABEL: umin_i32_varying:16025; GFX7LESS_DPP: ; %bb.0: ; %entry16026; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x916027; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 016028; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -116029; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)16030; GFX7LESS_DPP-NEXT: ds_min_rtn_u32 v0, v1, v016031; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)16032; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00016033; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -116034; GFX7LESS_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 016035; GFX7LESS_DPP-NEXT: s_endpgm16036;16037; GFX8_DPP-LABEL: umin_i32_varying:16038; GFX8_DPP: ; %bb.0: ; %entry16039; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 016040; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v316041; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116042; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]16043; GFX8_DPP-NEXT: v_mov_b32_e32 v1, -116044; GFX8_DPP-NEXT: s_nop 016045; GFX8_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf16046; GFX8_DPP-NEXT: s_nop 116047; GFX8_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf16048; GFX8_DPP-NEXT: s_nop 116049; GFX8_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf16050; GFX8_DPP-NEXT: s_nop 116051; GFX8_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf16052; GFX8_DPP-NEXT: s_nop 116053; GFX8_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf16054; GFX8_DPP-NEXT: s_nop 116055; GFX8_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf16056; GFX8_DPP-NEXT: v_readlane_b32 s2, v2, 6316057; GFX8_DPP-NEXT: s_nop 016058; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf16059; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]16060; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v316061; GFX8_DPP-NEXT: ; implicit-def: $vgpr016062; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc16063; GFX8_DPP-NEXT: s_cbranch_execz .LBB30_216064; GFX8_DPP-NEXT: ; %bb.1:16065; GFX8_DPP-NEXT: v_mov_b32_e32 v0, 016066; GFX8_DPP-NEXT: v_mov_b32_e32 v3, s216067; GFX8_DPP-NEXT: s_mov_b32 m0, -116068; GFX8_DPP-NEXT: ds_min_rtn_u32 v0, v0, v316069; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)16070; GFX8_DPP-NEXT: .LBB30_2:16071; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]16072; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416073; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v016074; GFX8_DPP-NEXT: v_mov_b32_e32 v0, v116075; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00016076; GFX8_DPP-NEXT: s_mov_b32 s2, -116077; GFX8_DPP-NEXT: v_min_u32_e32 v0, s4, v016078; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)16079; GFX8_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 016080; GFX8_DPP-NEXT: s_endpgm16081;16082; GFX9_DPP-LABEL: umin_i32_varying:16083; GFX9_DPP: ; %bb.0: ; %entry16084; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v3, exec_lo, 016085; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v3, exec_hi, v316086; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116087; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]16088; GFX9_DPP-NEXT: v_mov_b32_e32 v1, -116089; GFX9_DPP-NEXT: s_nop 016090; GFX9_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:1 row_mask:0xf bank_mask:0xf16091; GFX9_DPP-NEXT: s_nop 116092; GFX9_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:2 row_mask:0xf bank_mask:0xf16093; GFX9_DPP-NEXT: s_nop 116094; GFX9_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:4 row_mask:0xf bank_mask:0xf16095; GFX9_DPP-NEXT: s_nop 116096; GFX9_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_shr:8 row_mask:0xf bank_mask:0xf16097; GFX9_DPP-NEXT: s_nop 116098; GFX9_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_bcast:15 row_mask:0xa bank_mask:0xf16099; GFX9_DPP-NEXT: s_nop 116100; GFX9_DPP-NEXT: v_min_u32_dpp v2, v2, v2 row_bcast:31 row_mask:0xc bank_mask:0xf16101; GFX9_DPP-NEXT: v_readlane_b32 s2, v2, 6316102; GFX9_DPP-NEXT: s_nop 016103; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v2 wave_shr:1 row_mask:0xf bank_mask:0xf16104; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]16105; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v316106; GFX9_DPP-NEXT: ; implicit-def: $vgpr016107; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc16108; GFX9_DPP-NEXT: s_cbranch_execz .LBB30_216109; GFX9_DPP-NEXT: ; %bb.1:16110; GFX9_DPP-NEXT: v_mov_b32_e32 v0, 016111; GFX9_DPP-NEXT: v_mov_b32_e32 v3, s216112; GFX9_DPP-NEXT: ds_min_rtn_u32 v0, v0, v316113; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)16114; GFX9_DPP-NEXT: .LBB30_2:16115; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]16116; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416117; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v016118; GFX9_DPP-NEXT: v_mov_b32_e32 v0, v116119; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00016120; GFX9_DPP-NEXT: s_mov_b32 s2, -116121; GFX9_DPP-NEXT: v_min_u32_e32 v0, s4, v016122; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)16123; GFX9_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 016124; GFX9_DPP-NEXT: s_endpgm16125;16126; GFX1064_DPP-LABEL: umin_i32_varying:16127; GFX1064_DPP: ; %bb.0: ; %entry16128; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116129; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]16130; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -116131; GFX1064_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf16132; GFX1064_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf16133; GFX1064_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf16134; GFX1064_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf16135; GFX1064_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -116136; GFX1064_DPP-NEXT: v_min_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf16137; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 3116138; GFX1064_DPP-NEXT: v_mov_b32_e32 v2, s216139; GFX1064_DPP-NEXT: v_min_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf16140; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf16141; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 1516142; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3116143; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 1616144; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]16145; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016146; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116147; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 4716148; GFX1064_DPP-NEXT: v_readlane_b32 s6, v1, 6316149; GFX1064_DPP-NEXT: v_writelane_b32 v3, s3, 3216150; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]16151; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016152; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116153; GFX1064_DPP-NEXT: v_writelane_b32 v3, s2, 4816154; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]16155; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016156; GFX1064_DPP-NEXT: s_mov_b32 s2, -116157; GFX1064_DPP-NEXT: ; implicit-def: $vgpr016158; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc16159; GFX1064_DPP-NEXT: s_cbranch_execz .LBB30_216160; GFX1064_DPP-NEXT: ; %bb.1:16161; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 016162; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, s616163; GFX1064_DPP-NEXT: ds_min_rtn_u32 v0, v0, v416164; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)16165; GFX1064_DPP-NEXT: buffer_gl0_inv16166; GFX1064_DPP-NEXT: .LBB30_2:16167; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)16168; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[0:1]16169; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416170; GFX1064_DPP-NEXT: v_readfirstlane_b32 s3, v016171; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, v316172; GFX1064_DPP-NEXT: v_min_u32_e32 v0, s3, v016173; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600016174; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)16175; GFX1064_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 016176; GFX1064_DPP-NEXT: s_endpgm16177;16178; GFX1032_DPP-LABEL: umin_i32_varying:16179; GFX1032_DPP: ; %bb.0: ; %entry16180; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -116181; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s016182; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -116183; GFX1032_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf16184; GFX1032_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf16185; GFX1032_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf16186; GFX1032_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf16187; GFX1032_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -116188; GFX1032_DPP-NEXT: v_min_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf16189; GFX1032_DPP-NEXT: v_readlane_b32 s1, v1, 1516190; GFX1032_DPP-NEXT: v_readlane_b32 s2, v1, 3116191; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf16192; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s016193; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016194; GFX1032_DPP-NEXT: s_or_saveexec_b32 s0, -116195; GFX1032_DPP-NEXT: v_writelane_b32 v3, s1, 1616196; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s016197; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v016198; GFX1032_DPP-NEXT: s_mov_b32 s0, s216199; GFX1032_DPP-NEXT: s_mov_b32 s2, -116200; GFX1032_DPP-NEXT: ; implicit-def: $vgpr016201; GFX1032_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo16202; GFX1032_DPP-NEXT: s_cbranch_execz .LBB30_216203; GFX1032_DPP-NEXT: ; %bb.1:16204; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 016205; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, s016206; GFX1032_DPP-NEXT: ds_min_rtn_u32 v0, v0, v416207; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)16208; GFX1032_DPP-NEXT: buffer_gl0_inv16209; GFX1032_DPP-NEXT: .LBB30_2:16210; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)16211; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s116212; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416213; GFX1032_DPP-NEXT: v_readfirstlane_b32 s3, v016214; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, v316215; GFX1032_DPP-NEXT: v_min_u32_e32 v0, s3, v016216; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600016217; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)16218; GFX1032_DPP-NEXT: buffer_store_dword v0, off, s[0:3], 016219; GFX1032_DPP-NEXT: s_endpgm16220;16221; GFX1164_DPP-LABEL: umin_i32_varying:16222; GFX1164_DPP: ; %bb.0: ; %entry16223; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v016224; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116225; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)16226; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]16227; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -116228; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)16229; GFX1164_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf16230; GFX1164_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf16231; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16232; GFX1164_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf16233; GFX1164_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf16234; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16235; GFX1164_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -116236; GFX1164_DPP-NEXT: v_min_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf16237; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16238; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 3116239; GFX1164_DPP-NEXT: v_mov_b32_e32 v2, s216240; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16241; GFX1164_DPP-NEXT: v_min_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf16242; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf16243; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 1516244; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3116245; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)16246; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 1616247; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]16248; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016249; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116250; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)16251; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 4716252; GFX1164_DPP-NEXT: v_readlane_b32 s6, v1, 6316253; GFX1164_DPP-NEXT: v_writelane_b32 v3, s3, 3216254; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]16255; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)16256; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016257; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116258; GFX1164_DPP-NEXT: v_writelane_b32 v3, s2, 4816259; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]16260; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016261; GFX1164_DPP-NEXT: s_mov_b32 s2, -116262; GFX1164_DPP-NEXT: ; implicit-def: $vgpr016263; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc16264; GFX1164_DPP-NEXT: s_cbranch_execz .LBB30_216265; GFX1164_DPP-NEXT: ; %bb.1:16266; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 016267; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, s616268; GFX1164_DPP-NEXT: ds_min_rtn_u32 v0, v0, v416269; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)16270; GFX1164_DPP-NEXT: buffer_gl0_inv16271; GFX1164_DPP-NEXT: .LBB30_2:16272; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[0:1]16273; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416274; GFX1164_DPP-NEXT: v_readfirstlane_b32 s3, v016275; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, v316276; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)16277; GFX1164_DPP-NEXT: v_min_u32_e32 v0, s3, v016278; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600016279; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)16280; GFX1164_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 016281; GFX1164_DPP-NEXT: s_endpgm16282;16283; GFX1132_DPP-LABEL: umin_i32_varying:16284; GFX1132_DPP: ; %bb.0: ; %entry16285; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v016286; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -116287; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)16288; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s016289; GFX1132_DPP-NEXT: v_mov_b32_e32 v3, -116290; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)16291; GFX1132_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:1 row_mask:0xf bank_mask:0xf16292; GFX1132_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:2 row_mask:0xf bank_mask:0xf16293; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16294; GFX1132_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:4 row_mask:0xf bank_mask:0xf16295; GFX1132_DPP-NEXT: v_min_u32_dpp v1, v1, v1 row_shr:8 row_mask:0xf bank_mask:0xf16296; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16297; GFX1132_DPP-NEXT: v_permlanex16_b32 v2, v1, -1, -116298; GFX1132_DPP-NEXT: v_min_u32_dpp v1, v2, v1 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf16299; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(SALU_CYCLE_1)16300; GFX1132_DPP-NEXT: v_readlane_b32 s1, v1, 1516301; GFX1132_DPP-NEXT: v_readlane_b32 s2, v1, 3116302; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf16303; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s016304; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016305; GFX1132_DPP-NEXT: s_or_saveexec_b32 s0, -116306; GFX1132_DPP-NEXT: v_writelane_b32 v3, s1, 1616307; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s016308; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)16309; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v016310; GFX1132_DPP-NEXT: s_mov_b32 s0, s216311; GFX1132_DPP-NEXT: s_mov_b32 s2, -116312; GFX1132_DPP-NEXT: ; implicit-def: $vgpr016313; GFX1132_DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo16314; GFX1132_DPP-NEXT: s_cbranch_execz .LBB30_216315; GFX1132_DPP-NEXT: ; %bb.1:16316; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 016317; GFX1132_DPP-NEXT: v_mov_b32_e32 v4, s016318; GFX1132_DPP-NEXT: ds_min_rtn_u32 v0, v0, v416319; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)16320; GFX1132_DPP-NEXT: buffer_gl0_inv16321; GFX1132_DPP-NEXT: .LBB30_2:16322; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s116323; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416324; GFX1132_DPP-NEXT: v_readfirstlane_b32 s3, v016325; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, v316326; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)16327; GFX1132_DPP-NEXT: v_min_u32_e32 v0, s3, v016328; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600016329; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)16330; GFX1132_DPP-NEXT: buffer_store_b32 v0, off, s[0:3], 016331; GFX1132_DPP-NEXT: s_endpgm16332entry:16333 %lane = call i32 @llvm.amdgcn.workitem.id.x()16334 %old = atomicrmw umin ptr addrspace(3) @local_var32, i32 %lane acq_rel16335 store i32 %old, ptr addrspace(1) %out16336 ret void16337}16338 16339define amdgpu_kernel void @umin_i64_constant(ptr addrspace(1) %out) {16340; GFX7LESS-LABEL: umin_i64_constant:16341; GFX7LESS: ; %bb.0: ; %entry16342; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 016343; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v016344; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016345; GFX7LESS-NEXT: ; implicit-def: $vgpr0_vgpr116346; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc16347; GFX7LESS-NEXT: s_cbranch_execz .LBB31_216348; GFX7LESS-NEXT: ; %bb.1:16349; GFX7LESS-NEXT: v_mov_b32_e32 v0, 516350; GFX7LESS-NEXT: v_mov_b32_e32 v1, 016351; GFX7LESS-NEXT: v_mov_b32_e32 v2, 016352; GFX7LESS-NEXT: s_mov_b32 m0, -116353; GFX7LESS-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16354; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)16355; GFX7LESS-NEXT: .LBB31_2:16356; GFX7LESS-NEXT: s_or_b64 exec, exec, s[0:1]16357; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x916358; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00016359; GFX7LESS-NEXT: s_mov_b32 s2, -116360; GFX7LESS-NEXT: v_readfirstlane_b32 s5, v116361; GFX7LESS-NEXT: v_readfirstlane_b32 s4, v016362; GFX7LESS-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc16363; GFX7LESS-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc16364; GFX7LESS-NEXT: v_mov_b32_e32 v2, s516365; GFX7LESS-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[0:1]16366; GFX7LESS-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc16367; GFX7LESS-NEXT: v_mov_b32_e32 v2, s416368; GFX7LESS-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc16369; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)16370; GFX7LESS-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 016371; GFX7LESS-NEXT: s_endpgm16372;16373; GFX8-LABEL: umin_i64_constant:16374; GFX8: ; %bb.0: ; %entry16375; GFX8-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016376; GFX8-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016377; GFX8-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016378; GFX8-NEXT: ; implicit-def: $vgpr0_vgpr116379; GFX8-NEXT: s_and_saveexec_b64 s[0:1], vcc16380; GFX8-NEXT: s_cbranch_execz .LBB31_216381; GFX8-NEXT: ; %bb.1:16382; GFX8-NEXT: v_mov_b32_e32 v0, 516383; GFX8-NEXT: v_mov_b32_e32 v1, 016384; GFX8-NEXT: v_mov_b32_e32 v2, 016385; GFX8-NEXT: s_mov_b32 m0, -116386; GFX8-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16387; GFX8-NEXT: s_waitcnt lgkmcnt(0)16388; GFX8-NEXT: .LBB31_2:16389; GFX8-NEXT: s_or_b64 exec, exec, s[0:1]16390; GFX8-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416391; GFX8-NEXT: v_readfirstlane_b32 s5, v116392; GFX8-NEXT: v_readfirstlane_b32 s4, v016393; GFX8-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc16394; GFX8-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc16395; GFX8-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[0:1]16396; GFX8-NEXT: v_mov_b32_e32 v2, s516397; GFX8-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc16398; GFX8-NEXT: v_mov_b32_e32 v2, s416399; GFX8-NEXT: s_mov_b32 s3, 0xf00016400; GFX8-NEXT: s_mov_b32 s2, -116401; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc16402; GFX8-NEXT: s_waitcnt lgkmcnt(0)16403; GFX8-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 016404; GFX8-NEXT: s_endpgm16405;16406; GFX9-LABEL: umin_i64_constant:16407; GFX9: ; %bb.0: ; %entry16408; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016409; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016410; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016411; GFX9-NEXT: ; implicit-def: $vgpr0_vgpr116412; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc16413; GFX9-NEXT: s_cbranch_execz .LBB31_216414; GFX9-NEXT: ; %bb.1:16415; GFX9-NEXT: v_mov_b32_e32 v0, 516416; GFX9-NEXT: v_mov_b32_e32 v1, 016417; GFX9-NEXT: v_mov_b32_e32 v2, 016418; GFX9-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16419; GFX9-NEXT: s_waitcnt lgkmcnt(0)16420; GFX9-NEXT: .LBB31_2:16421; GFX9-NEXT: s_or_b64 exec, exec, s[0:1]16422; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416423; GFX9-NEXT: v_readfirstlane_b32 s5, v116424; GFX9-NEXT: v_readfirstlane_b32 s4, v016425; GFX9-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc16426; GFX9-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc16427; GFX9-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[0:1]16428; GFX9-NEXT: v_mov_b32_e32 v2, s516429; GFX9-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc16430; GFX9-NEXT: v_mov_b32_e32 v2, s416431; GFX9-NEXT: s_mov_b32 s3, 0xf00016432; GFX9-NEXT: s_mov_b32 s2, -116433; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc16434; GFX9-NEXT: s_waitcnt lgkmcnt(0)16435; GFX9-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 016436; GFX9-NEXT: s_endpgm16437;16438; GFX1064-LABEL: umin_i64_constant:16439; GFX1064: ; %bb.0: ; %entry16440; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016441; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016442; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016443; GFX1064-NEXT: ; implicit-def: $vgpr0_vgpr116444; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc16445; GFX1064-NEXT: s_cbranch_execz .LBB31_216446; GFX1064-NEXT: ; %bb.1:16447; GFX1064-NEXT: v_mov_b32_e32 v0, 516448; GFX1064-NEXT: v_mov_b32_e32 v1, 016449; GFX1064-NEXT: v_mov_b32_e32 v2, 016450; GFX1064-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16451; GFX1064-NEXT: s_waitcnt lgkmcnt(0)16452; GFX1064-NEXT: buffer_gl0_inv16453; GFX1064-NEXT: .LBB31_2:16454; GFX1064-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)16455; GFX1064-NEXT: s_or_b64 exec, exec, s[0:1]16456; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416457; GFX1064-NEXT: v_readfirstlane_b32 s3, v116458; GFX1064-NEXT: v_readfirstlane_b32 s2, v016459; GFX1064-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc16460; GFX1064-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc16461; GFX1064-NEXT: v_cmp_lt_u64_e32 vcc, s[2:3], v[0:1]16462; GFX1064-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc16463; GFX1064-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc16464; GFX1064-NEXT: s_mov_b32 s3, 0x3101600016465; GFX1064-NEXT: s_mov_b32 s2, -116466; GFX1064-NEXT: s_waitcnt lgkmcnt(0)16467; GFX1064-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 016468; GFX1064-NEXT: s_endpgm16469;16470; GFX1032-LABEL: umin_i64_constant:16471; GFX1032: ; %bb.0: ; %entry16472; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016473; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v016474; GFX1032-NEXT: ; implicit-def: $vgpr0_vgpr116475; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo16476; GFX1032-NEXT: s_cbranch_execz .LBB31_216477; GFX1032-NEXT: ; %bb.1:16478; GFX1032-NEXT: v_mov_b32_e32 v0, 516479; GFX1032-NEXT: v_mov_b32_e32 v1, 016480; GFX1032-NEXT: v_mov_b32_e32 v2, 016481; GFX1032-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16482; GFX1032-NEXT: s_waitcnt lgkmcnt(0)16483; GFX1032-NEXT: buffer_gl0_inv16484; GFX1032-NEXT: .LBB31_2:16485; GFX1032-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)16486; GFX1032-NEXT: s_or_b32 exec_lo, exec_lo, s016487; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416488; GFX1032-NEXT: v_readfirstlane_b32 s3, v116489; GFX1032-NEXT: v_readfirstlane_b32 s2, v016490; GFX1032-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc_lo16491; GFX1032-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc_lo16492; GFX1032-NEXT: v_cmp_lt_u64_e32 vcc_lo, s[2:3], v[0:1]16493; GFX1032-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo16494; GFX1032-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo16495; GFX1032-NEXT: s_mov_b32 s3, 0x3101600016496; GFX1032-NEXT: s_mov_b32 s2, -116497; GFX1032-NEXT: s_waitcnt lgkmcnt(0)16498; GFX1032-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 016499; GFX1032-NEXT: s_endpgm16500;16501; GFX1164-LABEL: umin_i64_constant:16502; GFX1164: ; %bb.0: ; %entry16503; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016504; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16505; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016506; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016507; GFX1164-NEXT: ; implicit-def: $vgpr0_vgpr116508; GFX1164-NEXT: s_and_saveexec_b64 s[0:1], vcc16509; GFX1164-NEXT: s_cbranch_execz .LBB31_216510; GFX1164-NEXT: ; %bb.1:16511; GFX1164-NEXT: v_mov_b32_e32 v0, 516512; GFX1164-NEXT: v_mov_b32_e32 v1, 016513; GFX1164-NEXT: v_mov_b32_e32 v2, 016514; GFX1164-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16515; GFX1164-NEXT: s_waitcnt lgkmcnt(0)16516; GFX1164-NEXT: buffer_gl0_inv16517; GFX1164-NEXT: .LBB31_2:16518; GFX1164-NEXT: s_or_b64 exec, exec, s[0:1]16519; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416520; GFX1164-NEXT: v_readfirstlane_b32 s3, v116521; GFX1164-NEXT: v_readfirstlane_b32 s2, v016522; GFX1164-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc16523; GFX1164-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc16524; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)16525; GFX1164-NEXT: v_cmp_lt_u64_e32 vcc, s[2:3], v[0:1]16526; GFX1164-NEXT: s_waitcnt_depctr depctr_va_vcc(0)16527; GFX1164-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc16528; GFX1164-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc16529; GFX1164-NEXT: s_mov_b32 s3, 0x3101600016530; GFX1164-NEXT: s_mov_b32 s2, -116531; GFX1164-NEXT: s_waitcnt lgkmcnt(0)16532; GFX1164-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 016533; GFX1164-NEXT: s_endpgm16534;16535; GFX1132-LABEL: umin_i64_constant:16536; GFX1132: ; %bb.0: ; %entry16537; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016538; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)16539; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v016540; GFX1132-NEXT: ; implicit-def: $vgpr0_vgpr116541; GFX1132-NEXT: s_and_saveexec_b32 s0, vcc_lo16542; GFX1132-NEXT: s_cbranch_execz .LBB31_216543; GFX1132-NEXT: ; %bb.1:16544; GFX1132-NEXT: v_mov_b32_e32 v0, 516545; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, 016546; GFX1132-NEXT: ds_min_rtn_u64 v[0:1], v2, v[0:1]16547; GFX1132-NEXT: s_waitcnt lgkmcnt(0)16548; GFX1132-NEXT: buffer_gl0_inv16549; GFX1132-NEXT: .LBB31_2:16550; GFX1132-NEXT: s_or_b32 exec_lo, exec_lo, s016551; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416552; GFX1132-NEXT: v_readfirstlane_b32 s3, v116553; GFX1132-NEXT: v_readfirstlane_b32 s2, v016554; GFX1132-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc_lo16555; GFX1132-NEXT: v_cndmask_b32_e64 v0, 5, -1, vcc_lo16556; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)16557; GFX1132-NEXT: v_cmp_lt_u64_e32 vcc_lo, s[2:3], v[0:1]16558; GFX1132-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo16559; GFX1132-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo16560; GFX1132-NEXT: s_mov_b32 s3, 0x3101600016561; GFX1132-NEXT: s_mov_b32 s2, -116562; GFX1132-NEXT: s_waitcnt lgkmcnt(0)16563; GFX1132-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 016564; GFX1132-NEXT: s_endpgm16565entry:16566 %old = atomicrmw umin ptr addrspace(3) @local_var64, i64 5 acq_rel16567 store i64 %old, ptr addrspace(1) %out16568 ret void16569}16570 16571define amdgpu_kernel void @umin_i64_varying(ptr addrspace(1) %out) {16572; GFX7LESS_ITERATIVE-LABEL: umin_i64_varying:16573; GFX7LESS_ITERATIVE: ; %bb.0: ; %entry16574; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec16575; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, 016576; GFX7LESS_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116577; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr216578; GFX7LESS_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16579; GFX7LESS_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116580; GFX7LESS_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]16581; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, s816582; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s816583; GFX7LESS_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s816584; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m016585; GFX7LESS_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m016586; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1016587; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v5, s916588; GFX7LESS_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[0:1], v[4:5]16589; GFX7LESS_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec16590; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s916591; GFX7LESS_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1016592; GFX7LESS_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s816593; GFX7LESS_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]16594; GFX7LESS_ITERATIVE-NEXT: v_cmp_ne_u64_e64 s[6:7], s[2:3], 016595; GFX7LESS_ITERATIVE-NEXT: s_and_b64 vcc, exec, s[6:7]16596; GFX7LESS_ITERATIVE-NEXT: s_cbranch_vccnz .LBB32_116597; GFX7LESS_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16598; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 016599; GFX7LESS_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v016600; GFX7LESS_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016601; GFX7LESS_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr416602; GFX7LESS_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc16603; GFX7LESS_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]16604; GFX7LESS_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416605; GFX7LESS_ITERATIVE-NEXT: ; %bb.3:16606; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, 016607; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v4, s116608; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v3, s016609; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 m0, -116610; GFX7LESS_ITERATIVE-NEXT: ds_min_rtn_u64 v[3:4], v0, v[3:4]16611; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16612; GFX7LESS_ITERATIVE-NEXT: .LBB32_4:16613; GFX7LESS_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]16614; GFX7LESS_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x916615; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00016616; GFX7LESS_ITERATIVE-NEXT: s_mov_b32 s2, -116617; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v416618; GFX7LESS_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v316619; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s516620; GFX7LESS_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[1:2]16621; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc16622; GFX7LESS_ITERATIVE-NEXT: v_mov_b32_e32 v0, s416623; GFX7LESS_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc16624; GFX7LESS_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16625; GFX7LESS_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 016626; GFX7LESS_ITERATIVE-NEXT: s_endpgm16627;16628; GFX8_ITERATIVE-LABEL: umin_i64_varying:16629; GFX8_ITERATIVE: ; %bb.0: ; %entry16630; GFX8_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec16631; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, 016632; GFX8_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116633; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr216634; GFX8_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16635; GFX8_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116636; GFX8_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]16637; GFX8_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s816638; GFX8_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s816639; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1016640; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v5, s916641; GFX8_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[0:1], v[4:5]16642; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, s816643; GFX8_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec16644; GFX8_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m016645; GFX8_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m016646; GFX8_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s916647; GFX8_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1016648; GFX8_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s816649; GFX8_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]16650; GFX8_ITERATIVE-NEXT: s_cbranch_scc1 .LBB32_116651; GFX8_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16652; GFX8_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016653; GFX8_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016654; GFX8_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016655; GFX8_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr416656; GFX8_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc16657; GFX8_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]16658; GFX8_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416659; GFX8_ITERATIVE-NEXT: ; %bb.3:16660; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v4, s116661; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, 016662; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v3, s016663; GFX8_ITERATIVE-NEXT: s_mov_b32 m0, -116664; GFX8_ITERATIVE-NEXT: ds_min_rtn_u64 v[3:4], v0, v[3:4]16665; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16666; GFX8_ITERATIVE-NEXT: .LBB32_4:16667; GFX8_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]16668; GFX8_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416669; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v416670; GFX8_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v316671; GFX8_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[1:2]16672; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s516673; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc16674; GFX8_ITERATIVE-NEXT: v_mov_b32_e32 v0, s416675; GFX8_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00016676; GFX8_ITERATIVE-NEXT: s_mov_b32 s2, -116677; GFX8_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc16678; GFX8_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16679; GFX8_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 016680; GFX8_ITERATIVE-NEXT: s_endpgm16681;16682; GFX9_ITERATIVE-LABEL: umin_i64_varying:16683; GFX9_ITERATIVE: ; %bb.0: ; %entry16684; GFX9_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec16685; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, 016686; GFX9_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116687; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr216688; GFX9_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16689; GFX9_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116690; GFX9_ITERATIVE-NEXT: s_ff1_i32_b64 s8, s[2:3]16691; GFX9_ITERATIVE-NEXT: v_readlane_b32 s9, v3, s816692; GFX9_ITERATIVE-NEXT: v_readlane_b32 s10, v0, s816693; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s1016694; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v5, s916695; GFX9_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[0:1], v[4:5]16696; GFX9_ITERATIVE-NEXT: s_mov_b32 m0, s816697; GFX9_ITERATIVE-NEXT: s_and_b64 s[6:7], vcc, exec16698; GFX9_ITERATIVE-NEXT: v_writelane_b32 v2, s1, m016699; GFX9_ITERATIVE-NEXT: v_writelane_b32 v1, s0, m016700; GFX9_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s916701; GFX9_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s1016702; GFX9_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s816703; GFX9_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]16704; GFX9_ITERATIVE-NEXT: s_cbranch_scc1 .LBB32_116705; GFX9_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16706; GFX9_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016707; GFX9_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016708; GFX9_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016709; GFX9_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr416710; GFX9_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc16711; GFX9_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]16712; GFX9_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416713; GFX9_ITERATIVE-NEXT: ; %bb.3:16714; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v4, s116715; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, 016716; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v3, s016717; GFX9_ITERATIVE-NEXT: ds_min_rtn_u64 v[3:4], v0, v[3:4]16718; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16719; GFX9_ITERATIVE-NEXT: .LBB32_4:16720; GFX9_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]16721; GFX9_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416722; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s5, v416723; GFX9_ITERATIVE-NEXT: v_readfirstlane_b32 s4, v316724; GFX9_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[1:2]16725; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s516726; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v2, v2, v0, vcc16727; GFX9_ITERATIVE-NEXT: v_mov_b32_e32 v0, s416728; GFX9_ITERATIVE-NEXT: s_mov_b32 s3, 0xf00016729; GFX9_ITERATIVE-NEXT: s_mov_b32 s2, -116730; GFX9_ITERATIVE-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc16731; GFX9_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16732; GFX9_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 016733; GFX9_ITERATIVE-NEXT: s_endpgm16734;16735; GFX1064_ITERATIVE-LABEL: umin_i64_varying:16736; GFX1064_ITERATIVE: ; %bb.0: ; %entry16737; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, 016738; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec16739; GFX1064_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116740; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr216741; GFX1064_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16742; GFX1064_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116743; GFX1064_ITERATIVE-NEXT: s_ff1_i32_b64 s10, s[2:3]16744; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s1016745; GFX1064_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s1016746; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s1016747; GFX1064_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s1016748; GFX1064_ITERATIVE-NEXT: v_cmp_lt_u64_e64 s[8:9], s[0:1], s[6:7]16749; GFX1064_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec16750; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s716751; GFX1064_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s616752; GFX1064_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1016753; GFX1064_ITERATIVE-NEXT: s_andn2_b64 s[2:3], s[2:3], s[6:7]16754; GFX1064_ITERATIVE-NEXT: s_cbranch_scc1 .LBB32_116755; GFX1064_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16756; GFX1064_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016757; GFX1064_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr416758; GFX1064_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v016759; GFX1064_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v016760; GFX1064_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc16761; GFX1064_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]16762; GFX1064_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416763; GFX1064_ITERATIVE-NEXT: ; %bb.3:16764; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v4, s116765; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v0, 016766; GFX1064_ITERATIVE-NEXT: v_mov_b32_e32 v3, s016767; GFX1064_ITERATIVE-NEXT: ds_min_rtn_u64 v[3:4], v0, v[3:4]16768; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16769; GFX1064_ITERATIVE-NEXT: buffer_gl0_inv16770; GFX1064_ITERATIVE-NEXT: .LBB32_4:16771; GFX1064_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)16772; GFX1064_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]16773; GFX1064_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416774; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v416775; GFX1064_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v316776; GFX1064_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[2:3], v[1:2]16777; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc16778; GFX1064_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc16779; GFX1064_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600016780; GFX1064_ITERATIVE-NEXT: s_mov_b32 s2, -116781; GFX1064_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16782; GFX1064_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 016783; GFX1064_ITERATIVE-NEXT: s_endpgm16784;16785; GFX1032_ITERATIVE-LABEL: umin_i64_varying:16786; GFX1032_ITERATIVE: ; %bb.0: ; %entry16787; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, 016788; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo16789; GFX1032_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116790; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr1_vgpr216791; GFX1032_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16792; GFX1032_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116793; GFX1032_ITERATIVE-NEXT: s_ff1_i32_b32 s3, s216794; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s7, v3, s316795; GFX1032_ITERATIVE-NEXT: v_readlane_b32 s6, v0, s316796; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v2, s1, s316797; GFX1032_ITERATIVE-NEXT: v_writelane_b32 v1, s0, s316798; GFX1032_ITERATIVE-NEXT: v_cmp_lt_u64_e64 s8, s[0:1], s[6:7]16799; GFX1032_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo16800; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s716801; GFX1032_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s616802; GFX1032_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s316803; GFX1032_ITERATIVE-NEXT: s_andn2_b32 s2, s2, s316804; GFX1032_ITERATIVE-NEXT: s_cbranch_scc1 .LBB32_116805; GFX1032_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16806; GFX1032_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 016807; GFX1032_ITERATIVE-NEXT: ; implicit-def: $vgpr3_vgpr416808; GFX1032_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v016809; GFX1032_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo16810; GFX1032_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s216811; GFX1032_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416812; GFX1032_ITERATIVE-NEXT: ; %bb.3:16813; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v4, s116814; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v0, 016815; GFX1032_ITERATIVE-NEXT: v_mov_b32_e32 v3, s016816; GFX1032_ITERATIVE-NEXT: ds_min_rtn_u64 v[3:4], v0, v[3:4]16817; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16818; GFX1032_ITERATIVE-NEXT: buffer_gl0_inv16819; GFX1032_ITERATIVE-NEXT: .LBB32_4:16820; GFX1032_ITERATIVE-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)16821; GFX1032_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s216822; GFX1032_ITERATIVE-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416823; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v416824; GFX1032_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v316825; GFX1032_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc_lo, s[2:3], v[1:2]16826; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v2, v2, s3, vcc_lo16827; GFX1032_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s2, vcc_lo16828; GFX1032_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600016829; GFX1032_ITERATIVE-NEXT: s_mov_b32 s2, -116830; GFX1032_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16831; GFX1032_ITERATIVE-NEXT: buffer_store_dwordx2 v[1:2], off, s[0:3], 016832; GFX1032_ITERATIVE-NEXT: s_endpgm16833;16834; GFX1164_ITERATIVE-LABEL: umin_i64_varying:16835; GFX1164_ITERATIVE: ; %bb.0: ; %entry16836; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, 016837; GFX1164_ITERATIVE-NEXT: v_and_b32_e32 v3, 0x3ff, v016838; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[2:3], exec16839; GFX1164_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116840; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr116841; GFX1164_ITERATIVE-NEXT: .p2align 616842; GFX1164_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16843; GFX1164_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116844; GFX1164_ITERATIVE-NEXT: s_ctz_i32_b64 s10, s[2:3]16845; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_3)16846; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s1016847; GFX1164_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s1016848; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s1016849; GFX1164_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s1016850; GFX1164_ITERATIVE-NEXT: v_cmp_lt_u64_e64 s[8:9], s[0:1], s[6:7]16851; GFX1164_ITERATIVE-NEXT: s_and_b64 s[8:9], s[8:9], exec16852; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s716853; GFX1164_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s616854; GFX1164_ITERATIVE-NEXT: s_lshl_b64 s[6:7], 1, s1016855; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)16856; GFX1164_ITERATIVE-NEXT: s_and_not1_b64 s[2:3], s[2:3], s[6:7]16857; GFX1164_ITERATIVE-NEXT: s_cbranch_scc1 .LBB32_116858; GFX1164_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16859; GFX1164_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 016860; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16861; GFX1164_ITERATIVE-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v216862; GFX1164_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc, 0, v216863; GFX1164_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr316864; GFX1164_ITERATIVE-NEXT: s_and_saveexec_b64 s[2:3], vcc16865; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(SALU_CYCLE_1)16866; GFX1164_ITERATIVE-NEXT: s_xor_b64 s[2:3], exec, s[2:3]16867; GFX1164_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416868; GFX1164_ITERATIVE-NEXT: ; %bb.3:16869; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v3, s116870; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v4, 016871; GFX1164_ITERATIVE-NEXT: v_mov_b32_e32 v2, s016872; GFX1164_ITERATIVE-NEXT: ds_min_rtn_u64 v[2:3], v4, v[2:3]16873; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16874; GFX1164_ITERATIVE-NEXT: buffer_gl0_inv16875; GFX1164_ITERATIVE-NEXT: .LBB32_4:16876; GFX1164_ITERATIVE-NEXT: s_or_b64 exec, exec, s[2:3]16877; GFX1164_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416878; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v316879; GFX1164_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v216880; GFX1164_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)16881; GFX1164_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc, s[2:3], v[0:1]16882; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc16883; GFX1164_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc16884; GFX1164_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600016885; GFX1164_ITERATIVE-NEXT: s_mov_b32 s2, -116886; GFX1164_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16887; GFX1164_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 016888; GFX1164_ITERATIVE-NEXT: s_endpgm16889;16890; GFX1132_ITERATIVE-LABEL: umin_i64_varying:16891; GFX1132_ITERATIVE: ; %bb.0: ; %entry16892; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v2, 0 :: v_dual_and_b32 v3, 0x3ff, v016893; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, exec_lo16894; GFX1132_ITERATIVE-NEXT: s_mov_b64 s[0:1], -116895; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr0_vgpr116896; GFX1132_ITERATIVE-NEXT: .p2align 616897; GFX1132_ITERATIVE-NEXT: .LBB32_1: ; %ComputeLoop16898; GFX1132_ITERATIVE-NEXT: ; =>This Inner Loop Header: Depth=116899; GFX1132_ITERATIVE-NEXT: s_ctz_i32_b32 s3, s216900; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)16901; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s7, v2, s316902; GFX1132_ITERATIVE-NEXT: v_readlane_b32 s6, v3, s316903; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v1, s1, s316904; GFX1132_ITERATIVE-NEXT: v_writelane_b32 v0, s0, s316905; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)16906; GFX1132_ITERATIVE-NEXT: v_cmp_lt_u64_e64 s8, s[0:1], s[6:7]16907; GFX1132_ITERATIVE-NEXT: s_and_b32 s8, s8, exec_lo16908; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s1, s1, s716909; GFX1132_ITERATIVE-NEXT: s_cselect_b32 s0, s0, s616910; GFX1132_ITERATIVE-NEXT: s_lshl_b32 s3, 1, s316911; GFX1132_ITERATIVE-NEXT: s_and_not1_b32 s2, s2, s316912; GFX1132_ITERATIVE-NEXT: s_cbranch_scc1 .LBB32_116913; GFX1132_ITERATIVE-NEXT: ; %bb.2: ; %ComputeEnd16914; GFX1132_ITERATIVE-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 016915; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)16916; GFX1132_ITERATIVE-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v216917; GFX1132_ITERATIVE-NEXT: ; implicit-def: $vgpr2_vgpr316918; GFX1132_ITERATIVE-NEXT: s_and_saveexec_b32 s2, vcc_lo16919; GFX1132_ITERATIVE-NEXT: s_xor_b32 s2, exec_lo, s216920; GFX1132_ITERATIVE-NEXT: s_cbranch_execz .LBB32_416921; GFX1132_ITERATIVE-NEXT: ; %bb.3:16922; GFX1132_ITERATIVE-NEXT: v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v3, s116923; GFX1132_ITERATIVE-NEXT: v_mov_b32_e32 v2, s016924; GFX1132_ITERATIVE-NEXT: ds_min_rtn_u64 v[2:3], v4, v[2:3]16925; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16926; GFX1132_ITERATIVE-NEXT: buffer_gl0_inv16927; GFX1132_ITERATIVE-NEXT: .LBB32_4:16928; GFX1132_ITERATIVE-NEXT: s_or_b32 exec_lo, exec_lo, s216929; GFX1132_ITERATIVE-NEXT: s_load_b64 s[0:1], s[4:5], 0x2416930; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s3, v316931; GFX1132_ITERATIVE-NEXT: v_readfirstlane_b32 s2, v216932; GFX1132_ITERATIVE-NEXT: s_delay_alu instid0(VALU_DEP_1)16933; GFX1132_ITERATIVE-NEXT: v_cmp_lt_u64_e32 vcc_lo, s[2:3], v[0:1]16934; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v1, v1, s3, vcc_lo16935; GFX1132_ITERATIVE-NEXT: v_cndmask_b32_e64 v0, v0, s2, vcc_lo16936; GFX1132_ITERATIVE-NEXT: s_mov_b32 s3, 0x3101600016937; GFX1132_ITERATIVE-NEXT: s_mov_b32 s2, -116938; GFX1132_ITERATIVE-NEXT: s_waitcnt lgkmcnt(0)16939; GFX1132_ITERATIVE-NEXT: buffer_store_b64 v[0:1], off, s[0:3], 016940; GFX1132_ITERATIVE-NEXT: s_endpgm16941;16942; GFX7LESS_DPP-LABEL: umin_i64_varying:16943; GFX7LESS_DPP: ; %bb.0: ; %entry16944; GFX7LESS_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x916945; GFX7LESS_DPP-NEXT: v_mov_b32_e32 v1, 016946; GFX7LESS_DPP-NEXT: s_mov_b32 m0, -116947; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)16948; GFX7LESS_DPP-NEXT: ds_min_rtn_u64 v[0:1], v1, v[0:1]16949; GFX7LESS_DPP-NEXT: s_waitcnt lgkmcnt(0)16950; GFX7LESS_DPP-NEXT: s_mov_b32 s3, 0xf00016951; GFX7LESS_DPP-NEXT: s_mov_b32 s2, -116952; GFX7LESS_DPP-NEXT: buffer_store_dwordx2 v[0:1], off, s[0:3], 016953; GFX7LESS_DPP-NEXT: s_endpgm16954;16955; GFX8_DPP-LABEL: umin_i64_varying:16956; GFX8_DPP: ; %bb.0: ; %entry16957; GFX8_DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 016958; GFX8_DPP-NEXT: v_mov_b32_e32 v8, 016959; GFX8_DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v616960; GFX8_DPP-NEXT: s_or_saveexec_b64 s[0:1], -116961; GFX8_DPP-NEXT: v_cndmask_b32_e64 v3, -1, 0, s[0:1]16962; GFX8_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]16963; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -116964; GFX8_DPP-NEXT: v_mov_b32_e32 v4, -116965; GFX8_DPP-NEXT: v_mov_b32_e32 v1, -116966; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:1 row_mask:0xf bank_mask:0xf16967; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf16968; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]16969; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc16970; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc16971; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -116972; GFX8_DPP-NEXT: v_mov_b32_e32 v4, -116973; GFX8_DPP-NEXT: s_nop 016974; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:2 row_mask:0xf bank_mask:0xf16975; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf16976; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]16977; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc16978; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc16979; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -116980; GFX8_DPP-NEXT: v_mov_b32_e32 v4, -116981; GFX8_DPP-NEXT: s_nop 016982; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:4 row_mask:0xf bank_mask:0xf16983; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf16984; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]16985; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc16986; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc16987; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -116988; GFX8_DPP-NEXT: v_mov_b32_e32 v4, -116989; GFX8_DPP-NEXT: s_nop 016990; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:8 row_mask:0xf bank_mask:0xf16991; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf16992; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]16993; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc16994; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc16995; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -116996; GFX8_DPP-NEXT: v_mov_b32_e32 v4, -116997; GFX8_DPP-NEXT: s_nop 016998; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:15 row_mask:0xa bank_mask:0xf16999; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf17000; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17001; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17002; GFX8_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17003; GFX8_DPP-NEXT: v_mov_b32_e32 v5, -117004; GFX8_DPP-NEXT: v_mov_b32_e32 v4, -117005; GFX8_DPP-NEXT: s_nop 017006; GFX8_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:31 row_mask:0xc bank_mask:0xf17007; GFX8_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf17008; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17009; GFX8_DPP-NEXT: v_cndmask_b32_e32 v4, v4, v2, vcc17010; GFX8_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17011; GFX8_DPP-NEXT: v_mov_b32_e32 v2, -117012; GFX8_DPP-NEXT: v_readlane_b32 s3, v3, 6317013; GFX8_DPP-NEXT: v_readlane_b32 s2, v4, 6317014; GFX8_DPP-NEXT: v_mov_b32_dpp v2, v3 wave_shr:1 row_mask:0xf bank_mask:0xf17015; GFX8_DPP-NEXT: v_mov_b32_dpp v1, v4 wave_shr:1 row_mask:0xf bank_mask:0xf17016; GFX8_DPP-NEXT: s_mov_b64 exec, s[0:1]17017; GFX8_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v617018; GFX8_DPP-NEXT: ; implicit-def: $vgpr6_vgpr717019; GFX8_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc17020; GFX8_DPP-NEXT: s_cbranch_execz .LBB32_217021; GFX8_DPP-NEXT: ; %bb.1:17022; GFX8_DPP-NEXT: v_mov_b32_e32 v7, s317023; GFX8_DPP-NEXT: v_mov_b32_e32 v6, s217024; GFX8_DPP-NEXT: s_mov_b32 m0, -117025; GFX8_DPP-NEXT: ds_min_rtn_u64 v[6:7], v8, v[6:7]17026; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)17027; GFX8_DPP-NEXT: .LBB32_2:17028; GFX8_DPP-NEXT: s_or_b64 exec, exec, s[0:1]17029; GFX8_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2417030; GFX8_DPP-NEXT: v_readfirstlane_b32 s5, v717031; GFX8_DPP-NEXT: v_readfirstlane_b32 s4, v617032; GFX8_DPP-NEXT: v_mov_b32_e32 v6, v117033; GFX8_DPP-NEXT: v_mov_b32_e32 v7, v217034; GFX8_DPP-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[6:7]17035; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s517036; GFX8_DPP-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc17037; GFX8_DPP-NEXT: v_mov_b32_e32 v0, s417038; GFX8_DPP-NEXT: s_mov_b32 s3, 0xf00017039; GFX8_DPP-NEXT: s_mov_b32 s2, -117040; GFX8_DPP-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc17041; GFX8_DPP-NEXT: s_waitcnt lgkmcnt(0)17042; GFX8_DPP-NEXT: buffer_store_dwordx2 v[6:7], off, s[0:3], 017043; GFX8_DPP-NEXT: s_endpgm17044;17045; GFX9_DPP-LABEL: umin_i64_varying:17046; GFX9_DPP: ; %bb.0: ; %entry17047; GFX9_DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 017048; GFX9_DPP-NEXT: v_mov_b32_e32 v8, 017049; GFX9_DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v617050; GFX9_DPP-NEXT: s_or_saveexec_b64 s[0:1], -117051; GFX9_DPP-NEXT: v_cndmask_b32_e64 v3, -1, 0, s[0:1]17052; GFX9_DPP-NEXT: v_cndmask_b32_e64 v2, -1, v0, s[0:1]17053; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -117054; GFX9_DPP-NEXT: v_mov_b32_e32 v4, -117055; GFX9_DPP-NEXT: v_mov_b32_e32 v1, -117056; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:1 row_mask:0xf bank_mask:0xf17057; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf17058; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17059; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17060; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17061; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -117062; GFX9_DPP-NEXT: v_mov_b32_e32 v4, -117063; GFX9_DPP-NEXT: s_nop 017064; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:2 row_mask:0xf bank_mask:0xf17065; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:2 row_mask:0xf bank_mask:0xf17066; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17067; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17068; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17069; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -117070; GFX9_DPP-NEXT: v_mov_b32_e32 v4, -117071; GFX9_DPP-NEXT: s_nop 017072; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:4 row_mask:0xf bank_mask:0xf17073; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf17074; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17075; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17076; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17077; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -117078; GFX9_DPP-NEXT: v_mov_b32_e32 v4, -117079; GFX9_DPP-NEXT: s_nop 017080; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_shr:8 row_mask:0xf bank_mask:0xf17081; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:8 row_mask:0xf bank_mask:0xf17082; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17083; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17084; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17085; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -117086; GFX9_DPP-NEXT: v_mov_b32_e32 v4, -117087; GFX9_DPP-NEXT: s_nop 017088; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:15 row_mask:0xa bank_mask:0xf17089; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:15 row_mask:0xa bank_mask:0xf17090; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17091; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17092; GFX9_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17093; GFX9_DPP-NEXT: v_mov_b32_e32 v5, -117094; GFX9_DPP-NEXT: v_mov_b32_e32 v4, -117095; GFX9_DPP-NEXT: s_nop 017096; GFX9_DPP-NEXT: v_mov_b32_dpp v5, v3 row_bcast:31 row_mask:0xc bank_mask:0xf17097; GFX9_DPP-NEXT: v_mov_b32_dpp v4, v2 row_bcast:31 row_mask:0xc bank_mask:0xf17098; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[2:3], v[4:5]17099; GFX9_DPP-NEXT: v_cndmask_b32_e32 v4, v4, v2, vcc17100; GFX9_DPP-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc17101; GFX9_DPP-NEXT: v_mov_b32_e32 v2, -117102; GFX9_DPP-NEXT: v_readlane_b32 s3, v3, 6317103; GFX9_DPP-NEXT: v_readlane_b32 s2, v4, 6317104; GFX9_DPP-NEXT: v_mov_b32_dpp v2, v3 wave_shr:1 row_mask:0xf bank_mask:0xf17105; GFX9_DPP-NEXT: v_mov_b32_dpp v1, v4 wave_shr:1 row_mask:0xf bank_mask:0xf17106; GFX9_DPP-NEXT: s_mov_b64 exec, s[0:1]17107; GFX9_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v617108; GFX9_DPP-NEXT: ; implicit-def: $vgpr6_vgpr717109; GFX9_DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc17110; GFX9_DPP-NEXT: s_cbranch_execz .LBB32_217111; GFX9_DPP-NEXT: ; %bb.1:17112; GFX9_DPP-NEXT: v_mov_b32_e32 v7, s317113; GFX9_DPP-NEXT: v_mov_b32_e32 v6, s217114; GFX9_DPP-NEXT: ds_min_rtn_u64 v[6:7], v8, v[6:7]17115; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)17116; GFX9_DPP-NEXT: .LBB32_2:17117; GFX9_DPP-NEXT: s_or_b64 exec, exec, s[0:1]17118; GFX9_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2417119; GFX9_DPP-NEXT: v_readfirstlane_b32 s5, v717120; GFX9_DPP-NEXT: v_readfirstlane_b32 s4, v617121; GFX9_DPP-NEXT: v_mov_b32_e32 v6, v117122; GFX9_DPP-NEXT: v_mov_b32_e32 v7, v217123; GFX9_DPP-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[6:7]17124; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s517125; GFX9_DPP-NEXT: v_cndmask_b32_e32 v7, v7, v0, vcc17126; GFX9_DPP-NEXT: v_mov_b32_e32 v0, s417127; GFX9_DPP-NEXT: s_mov_b32 s3, 0xf00017128; GFX9_DPP-NEXT: s_mov_b32 s2, -117129; GFX9_DPP-NEXT: v_cndmask_b32_e32 v6, v6, v0, vcc17130; GFX9_DPP-NEXT: s_waitcnt lgkmcnt(0)17131; GFX9_DPP-NEXT: buffer_store_dwordx2 v[6:7], off, s[0:3], 017132; GFX9_DPP-NEXT: s_endpgm17133;17134; GFX1064_DPP-LABEL: umin_i64_varying:17135; GFX1064_DPP: ; %bb.0: ; %entry17136; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -117137; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v2, -1, 0, s[0:1]17138; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, -117139; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -117140; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]17141; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, -117142; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, -117143; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf17144; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf17145; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17146; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17147; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17148; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, -117149; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -117150; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf17151; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf17152; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[5:6]17153; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc17154; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc17155; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, -117156; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, -117157; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf17158; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf17159; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17160; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17161; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17162; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, -117163; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -117164; GFX1064_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf17165; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf17166; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[5:6]17167; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc17168; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc17169; GFX1064_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -117170; GFX1064_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -117171; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17172; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17173; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17174; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17175; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17176; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, -117177; GFX1064_DPP-NEXT: v_mov_b32_e32 v3, -117178; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 3117179; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 3117180; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, s217181; GFX1064_DPP-NEXT: v_mov_b32_e32 v6, s317182; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf17183; GFX1064_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf17184; GFX1064_DPP-NEXT: v_mov_b32_e32 v5, -117185; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17186; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17187; GFX1064_DPP-NEXT: v_mov_b32_e32 v4, -117188; GFX1064_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17189; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]17190; GFX1064_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 017191; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[0:1], -117192; GFX1064_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf17193; GFX1064_DPP-NEXT: v_readlane_b32 s2, v2, 1517194; GFX1064_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf17195; GFX1064_DPP-NEXT: v_readlane_b32 s3, v1, 1517196; GFX1064_DPP-NEXT: v_readlane_b32 s6, v2, 3117197; GFX1064_DPP-NEXT: v_readlane_b32 s7, v1, 3117198; GFX1064_DPP-NEXT: v_writelane_b32 v5, s2, 1617199; GFX1064_DPP-NEXT: v_readlane_b32 s2, v1, 6317200; GFX1064_DPP-NEXT: v_writelane_b32 v4, s3, 1617201; GFX1064_DPP-NEXT: v_readlane_b32 s8, v2, 4717202; GFX1064_DPP-NEXT: v_readlane_b32 s3, v2, 6317203; GFX1064_DPP-NEXT: v_readlane_b32 s9, v1, 4717204; GFX1064_DPP-NEXT: v_writelane_b32 v5, s6, 3217205; GFX1064_DPP-NEXT: v_writelane_b32 v4, s7, 3217206; GFX1064_DPP-NEXT: s_mov_b64 exec, s[0:1]17207; GFX1064_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v017208; GFX1064_DPP-NEXT: v_mov_b32_e32 v0, 017209; GFX1064_DPP-NEXT: s_or_saveexec_b64 s[6:7], -117210; GFX1064_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]17211; GFX1064_DPP-NEXT: v_writelane_b32 v5, s8, 4817212; GFX1064_DPP-NEXT: v_writelane_b32 v4, s9, 4817213; GFX1064_DPP-NEXT: s_mov_b64 exec, s[6:7]17214; GFX1064_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v717215; GFX1064_DPP-NEXT: s_mov_b32 s2, -117216; GFX1064_DPP-NEXT: ; implicit-def: $vgpr7_vgpr817217; GFX1064_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc17218; GFX1064_DPP-NEXT: s_cbranch_execz .LBB32_217219; GFX1064_DPP-NEXT: ; %bb.1:17220; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, s117221; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, s017222; GFX1064_DPP-NEXT: ds_min_rtn_u64 v[7:8], v0, v[7:8]17223; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)17224; GFX1064_DPP-NEXT: buffer_gl0_inv17225; GFX1064_DPP-NEXT: .LBB32_2:17226; GFX1064_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)17227; GFX1064_DPP-NEXT: s_or_b64 exec, exec, s[6:7]17228; GFX1064_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2417229; GFX1064_DPP-NEXT: s_mov_b32 null, 017230; GFX1064_DPP-NEXT: v_readfirstlane_b32 s5, v817231; GFX1064_DPP-NEXT: v_readfirstlane_b32 s4, v717232; GFX1064_DPP-NEXT: v_mov_b32_e32 v7, v417233; GFX1064_DPP-NEXT: v_mov_b32_e32 v8, v517234; GFX1064_DPP-NEXT: s_mov_b32 s3, 0x3101600017235; GFX1064_DPP-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[7:8]17236; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc17237; GFX1064_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc17238; GFX1064_DPP-NEXT: s_waitcnt lgkmcnt(0)17239; GFX1064_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 017240; GFX1064_DPP-NEXT: s_endpgm17241;17242; GFX1032_DPP-LABEL: umin_i64_varying:17243; GFX1032_DPP: ; %bb.0: ; %entry17244; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -117245; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v2, -1, 0, s217246; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, -117247; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -117248; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s217249; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, -117250; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, -117251; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf17252; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf17253; GFX1032_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[3:4]17254; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo17255; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo17256; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, -117257; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -117258; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf17259; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf17260; GFX1032_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[5:6]17261; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo17262; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo17263; GFX1032_DPP-NEXT: v_mov_b32_e32 v6, -117264; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, -117265; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf17266; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf17267; GFX1032_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[3:4]17268; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo17269; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo17270; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, -117271; GFX1032_DPP-NEXT: v_mov_b32_e32 v3, -117272; GFX1032_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf17273; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf17274; GFX1032_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[5:6]17275; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc_lo17276; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc_lo17277; GFX1032_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -117278; GFX1032_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -117279; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17280; GFX1032_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17281; GFX1032_DPP-NEXT: v_mov_b32_e32 v5, -117282; GFX1032_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[3:4]17283; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc_lo17284; GFX1032_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc_lo17285; GFX1032_DPP-NEXT: v_mov_b32_e32 v4, -117286; GFX1032_DPP-NEXT: v_readlane_b32 s3, v2, 1517287; GFX1032_DPP-NEXT: v_readlane_b32 s1, v2, 3117288; GFX1032_DPP-NEXT: v_readlane_b32 s0, v1, 3117289; GFX1032_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf17290; GFX1032_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf17291; GFX1032_DPP-NEXT: v_readlane_b32 s6, v1, 1517292; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s217293; GFX1032_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 017294; GFX1032_DPP-NEXT: v_mov_b32_e32 v0, 017295; GFX1032_DPP-NEXT: s_or_saveexec_b32 s2, -117296; GFX1032_DPP-NEXT: v_writelane_b32 v5, s3, 1617297; GFX1032_DPP-NEXT: v_writelane_b32 v4, s6, 1617298; GFX1032_DPP-NEXT: s_mov_b32 exec_lo, s217299; GFX1032_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v717300; GFX1032_DPP-NEXT: s_mov_b32 s2, -117301; GFX1032_DPP-NEXT: ; implicit-def: $vgpr7_vgpr817302; GFX1032_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo17303; GFX1032_DPP-NEXT: s_cbranch_execz .LBB32_217304; GFX1032_DPP-NEXT: ; %bb.1:17305; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, s117306; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, s017307; GFX1032_DPP-NEXT: ds_min_rtn_u64 v[7:8], v0, v[7:8]17308; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)17309; GFX1032_DPP-NEXT: buffer_gl0_inv17310; GFX1032_DPP-NEXT: .LBB32_2:17311; GFX1032_DPP-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)17312; GFX1032_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s317313; GFX1032_DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2417314; GFX1032_DPP-NEXT: s_mov_b32 null, 017315; GFX1032_DPP-NEXT: v_readfirstlane_b32 s5, v817316; GFX1032_DPP-NEXT: v_readfirstlane_b32 s4, v717317; GFX1032_DPP-NEXT: v_mov_b32_e32 v7, v417318; GFX1032_DPP-NEXT: v_mov_b32_e32 v8, v517319; GFX1032_DPP-NEXT: s_mov_b32 s3, 0x3101600017320; GFX1032_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, s[4:5], v[7:8]17321; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo17322; GFX1032_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo17323; GFX1032_DPP-NEXT: s_waitcnt lgkmcnt(0)17324; GFX1032_DPP-NEXT: buffer_store_dwordx2 v[7:8], off, s[0:3], 017325; GFX1032_DPP-NEXT: s_endpgm17326;17327; GFX1164_DPP-LABEL: umin_i64_varying:17328; GFX1164_DPP: ; %bb.0: ; %entry17329; GFX1164_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v017330; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -117331; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)17332; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v2, -1, 0, s[0:1]17333; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, -117334; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -117335; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s[0:1]17336; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, -117337; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, -117338; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf17339; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_1)17340; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf17341; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17342; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17343; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17344; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, -117345; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -117346; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17347; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf17348; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf17349; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)17350; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[5:6]17351; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)17352; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc17353; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc17354; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, -117355; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, -117356; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17357; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf17358; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf17359; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)17360; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17361; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)17362; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17363; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17364; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, -117365; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -117366; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17367; GFX1164_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf17368; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf17369; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)17370; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[5:6]17371; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)17372; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc17373; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v5, v1, vcc17374; GFX1164_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -117375; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17376; GFX1164_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -117377; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17378; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17379; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17380; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17381; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)17382; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17383; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17384; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, -117385; GFX1164_DPP-NEXT: v_mov_b32_e32 v3, -117386; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)17387; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 3117388; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 3117389; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17390; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, s217391; GFX1164_DPP-NEXT: v_mov_b32_e32 v6, s317392; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17393; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf17394; GFX1164_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xc bank_mask:0xf17395; GFX1164_DPP-NEXT: v_mov_b32_e32 v5, -117396; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)17397; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, v[1:2], v[3:4]17398; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)17399; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc17400; GFX1164_DPP-NEXT: v_mov_b32_e32 v4, -117401; GFX1164_DPP-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc17402; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]17403; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)17404; GFX1164_DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 017405; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[0:1], -117406; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)17407; GFX1164_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf17408; GFX1164_DPP-NEXT: v_readlane_b32 s2, v2, 1517409; GFX1164_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf17410; GFX1164_DPP-NEXT: v_readlane_b32 s3, v1, 1517411; GFX1164_DPP-NEXT: v_readlane_b32 s6, v2, 3117412; GFX1164_DPP-NEXT: v_readlane_b32 s7, v1, 3117413; GFX1164_DPP-NEXT: v_writelane_b32 v5, s2, 1617414; GFX1164_DPP-NEXT: v_readlane_b32 s2, v1, 6317415; GFX1164_DPP-NEXT: v_writelane_b32 v4, s3, 1617416; GFX1164_DPP-NEXT: v_readlane_b32 s8, v2, 4717417; GFX1164_DPP-NEXT: v_readlane_b32 s3, v2, 6317418; GFX1164_DPP-NEXT: v_readlane_b32 s9, v1, 4717419; GFX1164_DPP-NEXT: v_writelane_b32 v5, s6, 3217420; GFX1164_DPP-NEXT: v_writelane_b32 v4, s7, 3217421; GFX1164_DPP-NEXT: s_mov_b64 exec, s[0:1]17422; GFX1164_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)17423; GFX1164_DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v017424; GFX1164_DPP-NEXT: v_mov_b32_e32 v0, 017425; GFX1164_DPP-NEXT: s_or_saveexec_b64 s[6:7], -117426; GFX1164_DPP-NEXT: s_mov_b64 s[0:1], s[2:3]17427; GFX1164_DPP-NEXT: v_writelane_b32 v5, s8, 4817428; GFX1164_DPP-NEXT: v_writelane_b32 v4, s9, 4817429; GFX1164_DPP-NEXT: s_mov_b64 exec, s[6:7]17430; GFX1164_DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v717431; GFX1164_DPP-NEXT: s_waitcnt_depctr depctr_va_vcc(0)17432; GFX1164_DPP-NEXT: s_mov_b32 s2, -117433; GFX1164_DPP-NEXT: ; implicit-def: $vgpr7_vgpr817434; GFX1164_DPP-NEXT: s_and_saveexec_b64 s[6:7], vcc17435; GFX1164_DPP-NEXT: s_cbranch_execz .LBB32_217436; GFX1164_DPP-NEXT: ; %bb.1:17437; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, s117438; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, s017439; GFX1164_DPP-NEXT: ds_min_rtn_u64 v[7:8], v0, v[7:8]17440; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)17441; GFX1164_DPP-NEXT: buffer_gl0_inv17442; GFX1164_DPP-NEXT: .LBB32_2:17443; GFX1164_DPP-NEXT: s_or_b64 exec, exec, s[6:7]17444; GFX1164_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2417445; GFX1164_DPP-NEXT: v_readfirstlane_b32 s5, v817446; GFX1164_DPP-NEXT: v_readfirstlane_b32 s4, v717447; GFX1164_DPP-NEXT: v_mov_b32_e32 v7, v417448; GFX1164_DPP-NEXT: v_mov_b32_e32 v8, v517449; GFX1164_DPP-NEXT: s_mov_b32 s3, 0x3101600017450; GFX1164_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)17451; GFX1164_DPP-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[7:8]17452; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc17453; GFX1164_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc17454; GFX1164_DPP-NEXT: s_waitcnt lgkmcnt(0)17455; GFX1164_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 017456; GFX1164_DPP-NEXT: s_endpgm17457;17458; GFX1132_DPP-LABEL: umin_i64_varying:17459; GFX1132_DPP: ; %bb.0: ; %entry17460; GFX1132_DPP-NEXT: v_and_b32_e32 v0, 0x3ff, v017461; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -117462; GFX1132_DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_3)17463; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v2, -1, 0, s217464; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, -1 :: v_dual_mov_b32 v3, -117465; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v1, -1, v0, s217466; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, -1 :: v_dual_mov_b32 v5, -117467; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)17468; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:1 row_mask:0xf bank_mask:0xf17469; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:1 row_mask:0xf bank_mask:0xf17470; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)17471; GFX1132_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[3:4]17472; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v117473; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, -1 :: v_dual_mov_b32 v3, -117474; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:2 row_mask:0xf bank_mask:0xf17475; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17476; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:2 row_mask:0xf bank_mask:0xf17477; GFX1132_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[5:6]17478; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v117479; GFX1132_DPP-NEXT: v_dual_mov_b32 v6, -1 :: v_dual_mov_b32 v5, -117480; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)17481; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v2 row_shr:4 row_mask:0xf bank_mask:0xf17482; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v1 row_shr:4 row_mask:0xf bank_mask:0xf17483; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)17484; GFX1132_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[3:4]17485; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v4, v2 :: v_dual_cndmask_b32 v1, v3, v117486; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, -1 :: v_dual_mov_b32 v3, -117487; GFX1132_DPP-NEXT: v_mov_b32_dpp v6, v2 row_shr:8 row_mask:0xf bank_mask:0xf17488; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17489; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v1 row_shr:8 row_mask:0xf bank_mask:0xf17490; GFX1132_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[5:6]17491; GFX1132_DPP-NEXT: v_dual_cndmask_b32 v2, v6, v2 :: v_dual_cndmask_b32 v1, v5, v117492; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)17493; GFX1132_DPP-NEXT: v_permlanex16_b32 v5, v2, -1, -117494; GFX1132_DPP-NEXT: v_permlanex16_b32 v6, v1, -1, -117495; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)17496; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v5 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17497; GFX1132_DPP-NEXT: v_mov_b32_dpp v3, v6 quad_perm:[0,1,2,3] row_mask:0xa bank_mask:0xf17498; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)17499; GFX1132_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, v[1:2], v[3:4]17500; GFX1132_DPP-NEXT: v_dual_mov_b32 v5, -1 :: v_dual_cndmask_b32 v2, v4, v217501; GFX1132_DPP-NEXT: v_dual_mov_b32 v4, -1 :: v_dual_cndmask_b32 v1, v3, v117502; GFX1132_DPP-NEXT: v_readlane_b32 s3, v2, 1517503; GFX1132_DPP-NEXT: v_readlane_b32 s1, v2, 3117504; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)17505; GFX1132_DPP-NEXT: v_readlane_b32 s0, v1, 3117506; GFX1132_DPP-NEXT: v_mov_b32_dpp v5, v2 row_shr:1 row_mask:0xf bank_mask:0xf17507; GFX1132_DPP-NEXT: v_mov_b32_dpp v4, v1 row_shr:1 row_mask:0xf bank_mask:0xf17508; GFX1132_DPP-NEXT: v_readlane_b32 s6, v1, 1517509; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s217510; GFX1132_DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 017511; GFX1132_DPP-NEXT: v_mov_b32_e32 v0, 017512; GFX1132_DPP-NEXT: s_or_saveexec_b32 s2, -117513; GFX1132_DPP-NEXT: v_writelane_b32 v5, s3, 1617514; GFX1132_DPP-NEXT: v_writelane_b32 v4, s6, 1617515; GFX1132_DPP-NEXT: s_mov_b32 exec_lo, s217516; GFX1132_DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v717517; GFX1132_DPP-NEXT: s_mov_b32 s2, -117518; GFX1132_DPP-NEXT: ; implicit-def: $vgpr7_vgpr817519; GFX1132_DPP-NEXT: s_and_saveexec_b32 s3, vcc_lo17520; GFX1132_DPP-NEXT: s_cbranch_execz .LBB32_217521; GFX1132_DPP-NEXT: ; %bb.1:17522; GFX1132_DPP-NEXT: v_dual_mov_b32 v8, s1 :: v_dual_mov_b32 v7, s017523; GFX1132_DPP-NEXT: ds_min_rtn_u64 v[7:8], v0, v[7:8]17524; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)17525; GFX1132_DPP-NEXT: buffer_gl0_inv17526; GFX1132_DPP-NEXT: .LBB32_2:17527; GFX1132_DPP-NEXT: s_or_b32 exec_lo, exec_lo, s317528; GFX1132_DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2417529; GFX1132_DPP-NEXT: v_readfirstlane_b32 s5, v817530; GFX1132_DPP-NEXT: v_readfirstlane_b32 s4, v717531; GFX1132_DPP-NEXT: v_mov_b32_e32 v7, v417532; GFX1132_DPP-NEXT: v_mov_b32_e32 v8, v517533; GFX1132_DPP-NEXT: s_mov_b32 s3, 0x3101600017534; GFX1132_DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)17535; GFX1132_DPP-NEXT: v_cmp_lt_u64_e32 vcc_lo, s[4:5], v[7:8]17536; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v8, v8, s5, vcc_lo17537; GFX1132_DPP-NEXT: v_cndmask_b32_e64 v7, v7, s4, vcc_lo17538; GFX1132_DPP-NEXT: s_waitcnt lgkmcnt(0)17539; GFX1132_DPP-NEXT: buffer_store_b64 v[7:8], off, s[0:3], 017540; GFX1132_DPP-NEXT: s_endpgm17541entry:17542 %lane = call i32 @llvm.amdgcn.workitem.id.x()17543 %lane_ext = zext i32 %lane to i6417544 %old = atomicrmw umin ptr addrspace(3) @local_var32, i64 %lane_ext acq_rel17545 store i64 %old, ptr addrspace(1) %out17546 ret void17547}17548