12572 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-prefix=GFX7LESS %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX9 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize64 -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1064 %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32 -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1032 %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1164 %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32 -amdgpu-atomic-optimizer-strategy=Iterative < %s | FileCheck -enable-var-scope -check-prefixes=GFX1132 %s8; RUN: llc -mtriple=amdgcn -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefix=GFX7LESS-DPP %s9; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX9-DPP %s10; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize64 -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1064-DPP %s11; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32 -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1032-DPP %s12; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1164-DPP %s13; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32 -amdgpu-atomic-optimizer-strategy=DPP < %s | FileCheck -enable-var-scope -check-prefixes=GFX1132-DPP %s14 15declare float @div.float.value()16declare double @div.double.value()17 18define amdgpu_kernel void @global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {19; GFX7LESS-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:20; GFX7LESS: ; %bb.0:21; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec22; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 023; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v024; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v025; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc26; GFX7LESS-NEXT: s_cbranch_execz .LBB0_327; GFX7LESS-NEXT: ; %bb.1:28; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x929; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]30; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)31; GFX7LESS-NEXT: s_load_dword s6, s[0:1], 0x032; GFX7LESS-NEXT: s_mov_b64 s[4:5], 033; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00034; GFX7LESS-NEXT: v_cvt_f32_ubyte0_e32 v0, s235; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v036; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)37; GFX7LESS-NEXT: v_mov_b32_e32 v1, s638; GFX7LESS-NEXT: s_mov_b32 s2, -139; GFX7LESS-NEXT: .LBB0_2: ; %atomicrmw.start40; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=141; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v242; GFX7LESS-NEXT: s_waitcnt expcnt(0)43; GFX7LESS-NEXT: v_mov_b32_e32 v4, v144; GFX7LESS-NEXT: v_mov_b32_e32 v3, v045; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc46; GFX7LESS-NEXT: s_waitcnt vmcnt(0)47; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v148; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]49; GFX7LESS-NEXT: v_mov_b32_e32 v1, v350; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]51; GFX7LESS-NEXT: s_cbranch_execnz .LBB0_252; GFX7LESS-NEXT: .LBB0_3:53; GFX7LESS-NEXT: s_endpgm54;55; GFX9-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:56; GFX9: ; %bb.0:57; GFX9-NEXT: s_mov_b64 s[2:3], exec58; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 059; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v060; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v061; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc62; GFX9-NEXT: s_cbranch_execz .LBB0_363; GFX9-NEXT: ; %bb.1:64; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2465; GFX9-NEXT: s_bcnt1_i32_b64 s5, s[2:3]66; GFX9-NEXT: v_cvt_f32_ubyte0_e32 v0, s567; GFX9-NEXT: s_mov_b64 s[2:3], 068; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v069; GFX9-NEXT: s_waitcnt lgkmcnt(0)70; GFX9-NEXT: s_load_dword s4, s[0:1], 0x071; GFX9-NEXT: v_mov_b32_e32 v3, 072; GFX9-NEXT: s_waitcnt lgkmcnt(0)73; GFX9-NEXT: v_mov_b32_e32 v1, s474; GFX9-NEXT: .LBB0_2: ; %atomicrmw.start75; GFX9-NEXT: ; =>This Inner Loop Header: Depth=176; GFX9-NEXT: v_sub_f32_e32 v0, v1, v277; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc78; GFX9-NEXT: s_waitcnt vmcnt(0)79; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v180; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]81; GFX9-NEXT: v_mov_b32_e32 v1, v082; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]83; GFX9-NEXT: s_cbranch_execnz .LBB0_284; GFX9-NEXT: .LBB0_3:85; GFX9-NEXT: s_endpgm86;87; GFX1064-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:88; GFX1064: ; %bb.0:89; GFX1064-NEXT: s_mov_b64 s[2:3], exec90; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 091; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v092; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v093; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc94; GFX1064-NEXT: s_cbranch_execz .LBB0_395; GFX1064-NEXT: ; %bb.1:96; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2497; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]98; GFX1064-NEXT: v_mov_b32_e32 v3, 099; GFX1064-NEXT: v_cvt_f32_ubyte0_e32 v0, s2100; GFX1064-NEXT: s_mov_b64 s[2:3], 0101; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v0102; GFX1064-NEXT: s_waitcnt lgkmcnt(0)103; GFX1064-NEXT: s_load_dword s4, s[0:1], 0x0104; GFX1064-NEXT: s_waitcnt lgkmcnt(0)105; GFX1064-NEXT: v_mov_b32_e32 v1, s4106; GFX1064-NEXT: .LBB0_2: ; %atomicrmw.start107; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=1108; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v2109; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc110; GFX1064-NEXT: s_waitcnt vmcnt(0)111; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1112; GFX1064-NEXT: v_mov_b32_e32 v1, v0113; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]114; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]115; GFX1064-NEXT: s_cbranch_execnz .LBB0_2116; GFX1064-NEXT: .LBB0_3:117; GFX1064-NEXT: s_endpgm118;119; GFX1032-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:120; GFX1032: ; %bb.0:121; GFX1032-NEXT: s_mov_b32 s3, exec_lo122; GFX1032-NEXT: s_mov_b32 s2, 0123; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 0124; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0125; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo126; GFX1032-NEXT: s_cbranch_execz .LBB0_3127; GFX1032-NEXT: ; %bb.1:128; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24129; GFX1032-NEXT: s_bcnt1_i32_b32 s3, s3130; GFX1032-NEXT: v_mov_b32_e32 v3, 0131; GFX1032-NEXT: v_cvt_f32_ubyte0_e32 v0, s3132; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v0133; GFX1032-NEXT: s_waitcnt lgkmcnt(0)134; GFX1032-NEXT: s_load_dword s4, s[0:1], 0x0135; GFX1032-NEXT: s_waitcnt lgkmcnt(0)136; GFX1032-NEXT: v_mov_b32_e32 v1, s4137; GFX1032-NEXT: .LBB0_2: ; %atomicrmw.start138; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=1139; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v2140; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc141; GFX1032-NEXT: s_waitcnt vmcnt(0)142; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1143; GFX1032-NEXT: v_mov_b32_e32 v1, v0144; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s2145; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s2146; GFX1032-NEXT: s_cbranch_execnz .LBB0_2147; GFX1032-NEXT: .LBB0_3:148; GFX1032-NEXT: s_endpgm149;150; GFX1164-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:151; GFX1164: ; %bb.0:152; GFX1164-NEXT: s_mov_b64 s[2:3], exec153; GFX1164-NEXT: s_mov_b64 s[0:1], exec154; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0155; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)156; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0157; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v0158; GFX1164-NEXT: s_cbranch_execz .LBB0_3159; GFX1164-NEXT: ; %bb.1:160; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x24161; GFX1164-NEXT: s_bcnt1_i32_b64 s2, s[2:3]162; GFX1164-NEXT: v_mov_b32_e32 v3, 0163; GFX1164-NEXT: v_cvt_f32_ubyte0_e32 v0, s2164; GFX1164-NEXT: s_mov_b64 s[2:3], 0165; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)166; GFX1164-NEXT: v_mul_f32_e32 v2, 4.0, v0167; GFX1164-NEXT: s_waitcnt lgkmcnt(0)168; GFX1164-NEXT: s_load_b32 s4, s[0:1], 0x0169; GFX1164-NEXT: s_waitcnt lgkmcnt(0)170; GFX1164-NEXT: v_mov_b32_e32 v1, s4171; GFX1164-NEXT: .LBB0_2: ; %atomicrmw.start172; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=1173; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)174; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v2175; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc176; GFX1164-NEXT: s_waitcnt vmcnt(0)177; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1178; GFX1164-NEXT: v_mov_b32_e32 v1, v0179; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]180; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)181; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]182; GFX1164-NEXT: s_cbranch_execnz .LBB0_2183; GFX1164-NEXT: .LBB0_3:184; GFX1164-NEXT: s_endpgm185;186; GFX1132-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:187; GFX1132: ; %bb.0:188; GFX1132-NEXT: s_mov_b32 s3, exec_lo189; GFX1132-NEXT: s_mov_b32 s2, 0190; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 0191; GFX1132-NEXT: s_mov_b32 s0, exec_lo192; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)193; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v0194; GFX1132-NEXT: s_cbranch_execz .LBB0_3195; GFX1132-NEXT: ; %bb.1:196; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x24197; GFX1132-NEXT: s_bcnt1_i32_b32 s3, s3198; GFX1132-NEXT: v_mov_b32_e32 v3, 0199; GFX1132-NEXT: v_cvt_f32_ubyte0_e32 v0, s3200; GFX1132-NEXT: s_waitcnt lgkmcnt(0)201; GFX1132-NEXT: s_load_b32 s4, s[0:1], 0x0202; GFX1132-NEXT: s_waitcnt lgkmcnt(0)203; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)204; GFX1132-NEXT: v_dual_mul_f32 v2, 4.0, v0 :: v_dual_mov_b32 v1, s4205; GFX1132-NEXT: .LBB0_2: ; %atomicrmw.start206; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=1207; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)208; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v2209; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc210; GFX1132-NEXT: s_waitcnt vmcnt(0)211; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1212; GFX1132-NEXT: v_mov_b32_e32 v1, v0213; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s2214; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)215; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s2216; GFX1132-NEXT: s_cbranch_execnz .LBB0_2217; GFX1132-NEXT: .LBB0_3:218; GFX1132-NEXT: s_endpgm219;220; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:221; GFX7LESS-DPP: ; %bb.0:222; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec223; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 0224; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v0225; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0226; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc227; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB0_3228; GFX7LESS-DPP-NEXT: ; %bb.1:229; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9230; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]231; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)232; GFX7LESS-DPP-NEXT: s_load_dword s6, s[0:1], 0x0233; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 0234; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf000235; GFX7LESS-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s2236; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0237; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)238; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s6239; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -1240; GFX7LESS-DPP-NEXT: .LBB0_2: ; %atomicrmw.start241; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=1242; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v0, v1, v2243; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)244; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v1245; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v0246; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc247; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)248; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v1249; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]250; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v3251; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]252; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB0_2253; GFX7LESS-DPP-NEXT: .LBB0_3:254; GFX7LESS-DPP-NEXT: s_endpgm255;256; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:257; GFX9-DPP: ; %bb.0:258; GFX9-DPP-NEXT: s_mov_b64 s[2:3], exec259; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0260; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0261; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0262; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc263; GFX9-DPP-NEXT: s_cbranch_execz .LBB0_3264; GFX9-DPP-NEXT: ; %bb.1:265; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24266; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s5, s[2:3]267; GFX9-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s5268; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 0269; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0270; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)271; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x0272; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 0273; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)274; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s4275; GFX9-DPP-NEXT: .LBB0_2: ; %atomicrmw.start276; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=1277; GFX9-DPP-NEXT: v_sub_f32_e32 v0, v1, v2278; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc279; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)280; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1281; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]282; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v0283; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]284; GFX9-DPP-NEXT: s_cbranch_execnz .LBB0_2285; GFX9-DPP-NEXT: .LBB0_3:286; GFX9-DPP-NEXT: s_endpgm287;288; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:289; GFX1064-DPP: ; %bb.0:290; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], exec291; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0292; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0293; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0294; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc295; GFX1064-DPP-NEXT: s_cbranch_execz .LBB0_3296; GFX1064-DPP-NEXT: ; %bb.1:297; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24298; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]299; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 0300; GFX1064-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s2301; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 0302; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0303; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)304; GFX1064-DPP-NEXT: s_load_dword s4, s[0:1], 0x0305; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)306; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s4307; GFX1064-DPP-NEXT: .LBB0_2: ; %atomicrmw.start308; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=1309; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v2310; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc311; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)312; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1313; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v0314; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]315; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]316; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB0_2317; GFX1064-DPP-NEXT: .LBB0_3:318; GFX1064-DPP-NEXT: s_endpgm319;320; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:321; GFX1032-DPP: ; %bb.0:322; GFX1032-DPP-NEXT: s_mov_b32 s3, exec_lo323; GFX1032-DPP-NEXT: s_mov_b32 s2, 0324; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 0325; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0326; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo327; GFX1032-DPP-NEXT: s_cbranch_execz .LBB0_3328; GFX1032-DPP-NEXT: ; %bb.1:329; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24330; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s3, s3331; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 0332; GFX1032-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s3333; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0334; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)335; GFX1032-DPP-NEXT: s_load_dword s4, s[0:1], 0x0336; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)337; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s4338; GFX1032-DPP-NEXT: .LBB0_2: ; %atomicrmw.start339; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=1340; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v2341; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc342; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)343; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1344; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v0345; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s2346; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s2347; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB0_2348; GFX1032-DPP-NEXT: .LBB0_3:349; GFX1032-DPP-NEXT: s_endpgm350;351; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:352; GFX1164-DPP: ; %bb.0:353; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], exec354; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec355; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0356; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)357; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0358; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v0359; GFX1164-DPP-NEXT: s_cbranch_execz .LBB0_3360; GFX1164-DPP-NEXT: ; %bb.1:361; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x24362; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]363; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, 0364; GFX1164-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s2365; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 0366; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)367; GFX1164-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0368; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)369; GFX1164-DPP-NEXT: s_load_b32 s4, s[0:1], 0x0370; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)371; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s4372; GFX1164-DPP-NEXT: .LBB0_2: ; %atomicrmw.start373; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=1374; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)375; GFX1164-DPP-NEXT: v_sub_f32_e32 v0, v1, v2376; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc377; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)378; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1379; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v0380; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]381; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)382; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]383; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB0_2384; GFX1164-DPP-NEXT: .LBB0_3:385; GFX1164-DPP-NEXT: s_endpgm386;387; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_unsafe:388; GFX1132-DPP: ; %bb.0:389; GFX1132-DPP-NEXT: s_mov_b32 s3, exec_lo390; GFX1132-DPP-NEXT: s_mov_b32 s2, 0391; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 0392; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo393; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)394; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v0395; GFX1132-DPP-NEXT: s_cbranch_execz .LBB0_3396; GFX1132-DPP-NEXT: ; %bb.1:397; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x24398; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s3, s3399; GFX1132-DPP-NEXT: v_mov_b32_e32 v3, 0400; GFX1132-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s3401; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)402; GFX1132-DPP-NEXT: s_load_b32 s4, s[0:1], 0x0403; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)404; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)405; GFX1132-DPP-NEXT: v_dual_mul_f32 v2, 4.0, v0 :: v_dual_mov_b32 v1, s4406; GFX1132-DPP-NEXT: .LBB0_2: ; %atomicrmw.start407; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=1408; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)409; GFX1132-DPP-NEXT: v_sub_f32_e32 v0, v1, v2410; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc411; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)412; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1413; GFX1132-DPP-NEXT: v_mov_b32_e32 v1, v0414; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s2415; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)416; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s2417; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB0_2418; GFX1132-DPP-NEXT: .LBB0_3:419; GFX1132-DPP-NEXT: s_endpgm420 %result = atomicrmw fsub ptr addrspace(1) %ptr, float 4.0 syncscope("agent") monotonic, align 4421 ret void422}423 424define amdgpu_kernel void @global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe(ptr addrspace(1) %ptr) #0 {425; GFX7LESS-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:426; GFX7LESS: ; %bb.0:427; GFX7LESS-NEXT: s_mov_b32 s32, 0428; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0429; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1430; GFX7LESS-NEXT: s_mov_b32 s38, -1431; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f000432; GFX7LESS-NEXT: s_add_u32 s36, s36, s11433; GFX7LESS-NEXT: s_addc_u32 s37, s37, 0434; GFX7LESS-NEXT: s_mov_b32 s14, s10435; GFX7LESS-NEXT: s_mov_b32 s13, s9436; GFX7LESS-NEXT: s_mov_b32 s12, s8437; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]438; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]439; GFX7LESS-NEXT: s_add_u32 s8, s34, 44440; GFX7LESS-NEXT: s_addc_u32 s9, s35, 0441; GFX7LESS-NEXT: s_getpc_b64 s[4:5]442; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4443; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12444; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0445; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v2446; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v1447; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v1448; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v2449; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]450; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]451; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]452; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]453; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)454; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]455; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec456; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 1457; GFX7LESS-NEXT: .LBB1_1: ; %ComputeLoop458; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=1459; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]460; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s2461; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s2462; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]463; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 0464; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]465; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v2466; GFX7LESS-NEXT: s_cbranch_vccnz .LBB1_1467; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd468; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 0469; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v0470; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0471; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc472; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]473; GFX7LESS-NEXT: s_cbranch_execz .LBB1_5474; GFX7LESS-NEXT: ; %bb.3:475; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x9476; GFX7LESS-NEXT: s_mov_b32 s3, 0xf000477; GFX7LESS-NEXT: s_mov_b32 s2, -1478; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)479; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 0480; GFX7LESS-NEXT: s_mov_b64 s[4:5], 0481; GFX7LESS-NEXT: .LBB1_4: ; %atomicrmw.start482; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=1483; GFX7LESS-NEXT: s_waitcnt vmcnt(0)484; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v2485; GFX7LESS-NEXT: s_waitcnt expcnt(0)486; GFX7LESS-NEXT: v_mov_b32_e32 v4, v1487; GFX7LESS-NEXT: v_mov_b32_e32 v3, v0488; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc489; GFX7LESS-NEXT: s_waitcnt vmcnt(0)490; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v1491; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]492; GFX7LESS-NEXT: v_mov_b32_e32 v1, v3493; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]494; GFX7LESS-NEXT: s_cbranch_execnz .LBB1_4495; GFX7LESS-NEXT: .LBB1_5:496; GFX7LESS-NEXT: s_endpgm497;498; GFX9-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:499; GFX9: ; %bb.0:500; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0501; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1502; GFX9-NEXT: s_mov_b32 s38, -1503; GFX9-NEXT: s_mov_b32 s39, 0xe00000504; GFX9-NEXT: s_add_u32 s36, s36, s11505; GFX9-NEXT: s_addc_u32 s37, s37, 0506; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]507; GFX9-NEXT: s_mov_b32 s12, s8508; GFX9-NEXT: s_add_u32 s8, s34, 44509; GFX9-NEXT: s_mov_b32 s13, s9510; GFX9-NEXT: s_addc_u32 s9, s35, 0511; GFX9-NEXT: s_getpc_b64 s[4:5]512; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4513; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12514; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0515; GFX9-NEXT: s_mov_b32 s14, s10516; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]517; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v2518; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v1519; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]520; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]521; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]522; GFX9-NEXT: v_or3_b32 v31, v0, v1, v2523; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]524; GFX9-NEXT: s_mov_b32 s32, 0525; GFX9-NEXT: s_waitcnt lgkmcnt(0)526; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]527; GFX9-NEXT: s_mov_b64 s[0:1], exec528; GFX9-NEXT: v_bfrev_b32_e32 v2, 1529; GFX9-NEXT: .LBB1_1: ; %ComputeLoop530; GFX9-NEXT: ; =>This Inner Loop Header: Depth=1531; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]532; GFX9-NEXT: v_readlane_b32 s4, v0, s2533; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s2534; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]535; GFX9-NEXT: v_add_f32_e32 v2, s4, v2536; GFX9-NEXT: s_cbranch_scc1 .LBB1_1537; GFX9-NEXT: ; %bb.2: ; %ComputeEnd538; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0539; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0540; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0541; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc542; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]543; GFX9-NEXT: s_cbranch_execz .LBB1_5544; GFX9-NEXT: ; %bb.3:545; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24546; GFX9-NEXT: v_mov_b32_e32 v3, 0547; GFX9-NEXT: s_mov_b64 s[2:3], 0548; GFX9-NEXT: s_waitcnt lgkmcnt(0)549; GFX9-NEXT: global_load_dword v1, v3, s[0:1]550; GFX9-NEXT: .LBB1_4: ; %atomicrmw.start551; GFX9-NEXT: ; =>This Inner Loop Header: Depth=1552; GFX9-NEXT: s_waitcnt vmcnt(0)553; GFX9-NEXT: v_sub_f32_e32 v0, v1, v2554; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc555; GFX9-NEXT: s_waitcnt vmcnt(0)556; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1557; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]558; GFX9-NEXT: v_mov_b32_e32 v1, v0559; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]560; GFX9-NEXT: s_cbranch_execnz .LBB1_4561; GFX9-NEXT: .LBB1_5:562; GFX9-NEXT: s_endpgm563;564; GFX1064-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:565; GFX1064: ; %bb.0:566; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0567; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1568; GFX1064-NEXT: s_mov_b32 s38, -1569; GFX1064-NEXT: s_mov_b32 s39, 0x31e16000570; GFX1064-NEXT: s_add_u32 s36, s36, s11571; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]572; GFX1064-NEXT: s_addc_u32 s37, s37, 0573; GFX1064-NEXT: s_mov_b32 s12, s8574; GFX1064-NEXT: s_add_u32 s8, s34, 44575; GFX1064-NEXT: s_mov_b32 s13, s9576; GFX1064-NEXT: s_addc_u32 s9, s35, 0577; GFX1064-NEXT: s_getpc_b64 s[4:5]578; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4579; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12580; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v2581; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0582; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v1583; GFX1064-NEXT: s_mov_b32 s14, s10584; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]585; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]586; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]587; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v2588; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]589; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]590; GFX1064-NEXT: s_mov_b32 s32, 0591; GFX1064-NEXT: s_waitcnt lgkmcnt(0)592; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]593; GFX1064-NEXT: v_bfrev_b32_e32 v2, 1594; GFX1064-NEXT: s_mov_b64 s[0:1], exec595; GFX1064-NEXT: .LBB1_1: ; %ComputeLoop596; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=1597; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]598; GFX1064-NEXT: v_readlane_b32 s3, v0, s2599; GFX1064-NEXT: v_add_f32_e32 v2, s3, v2600; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s2601; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]602; GFX1064-NEXT: s_cbranch_scc1 .LBB1_1603; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd604; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0605; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0606; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0607; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc608; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]609; GFX1064-NEXT: s_cbranch_execz .LBB1_5610; GFX1064-NEXT: ; %bb.3:611; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24612; GFX1064-NEXT: v_mov_b32_e32 v3, 0613; GFX1064-NEXT: s_mov_b64 s[2:3], 0614; GFX1064-NEXT: s_waitcnt lgkmcnt(0)615; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]616; GFX1064-NEXT: .LBB1_4: ; %atomicrmw.start617; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=1618; GFX1064-NEXT: s_waitcnt vmcnt(0)619; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v2620; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc621; GFX1064-NEXT: s_waitcnt vmcnt(0)622; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1623; GFX1064-NEXT: v_mov_b32_e32 v1, v0624; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]625; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]626; GFX1064-NEXT: s_cbranch_execnz .LBB1_4627; GFX1064-NEXT: .LBB1_5:628; GFX1064-NEXT: s_endpgm629;630; GFX1032-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:631; GFX1032: ; %bb.0:632; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0633; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1634; GFX1032-NEXT: s_mov_b32 s38, -1635; GFX1032-NEXT: s_mov_b32 s39, 0x31c16000636; GFX1032-NEXT: s_add_u32 s36, s36, s11637; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]638; GFX1032-NEXT: s_addc_u32 s37, s37, 0639; GFX1032-NEXT: s_mov_b32 s12, s8640; GFX1032-NEXT: s_add_u32 s8, s34, 44641; GFX1032-NEXT: s_mov_b32 s13, s9642; GFX1032-NEXT: s_addc_u32 s9, s35, 0643; GFX1032-NEXT: s_getpc_b64 s[4:5]644; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4645; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12646; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v2647; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0648; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v1649; GFX1032-NEXT: s_mov_b32 s14, s10650; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]651; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]652; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]653; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v2654; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]655; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]656; GFX1032-NEXT: s_mov_b32 s32, 0657; GFX1032-NEXT: s_waitcnt lgkmcnt(0)658; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]659; GFX1032-NEXT: v_bfrev_b32_e32 v2, 1660; GFX1032-NEXT: s_mov_b32 s0, exec_lo661; GFX1032-NEXT: .LBB1_1: ; %ComputeLoop662; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=1663; GFX1032-NEXT: s_ff1_i32_b32 s1, s0664; GFX1032-NEXT: v_readlane_b32 s2, v0, s1665; GFX1032-NEXT: s_lshl_b32 s1, 1, s1666; GFX1032-NEXT: s_andn2_b32 s0, s0, s1667; GFX1032-NEXT: v_add_f32_e32 v2, s2, v2668; GFX1032-NEXT: s_cbranch_scc1 .LBB1_1669; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd670; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0671; GFX1032-NEXT: s_mov_b32 s2, 0672; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0673; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo674; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s0675; GFX1032-NEXT: s_cbranch_execz .LBB1_5676; GFX1032-NEXT: ; %bb.3:677; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24678; GFX1032-NEXT: v_mov_b32_e32 v3, 0679; GFX1032-NEXT: s_waitcnt lgkmcnt(0)680; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]681; GFX1032-NEXT: .LBB1_4: ; %atomicrmw.start682; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=1683; GFX1032-NEXT: s_waitcnt vmcnt(0)684; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v2685; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc686; GFX1032-NEXT: s_waitcnt vmcnt(0)687; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1688; GFX1032-NEXT: v_mov_b32_e32 v1, v0689; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s2690; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s2691; GFX1032-NEXT: s_cbranch_execnz .LBB1_4692; GFX1032-NEXT: .LBB1_5:693; GFX1032-NEXT: s_endpgm694;695; GFX1164-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:696; GFX1164: ; %bb.0:697; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]698; GFX1164-NEXT: s_mov_b32 s12, s8699; GFX1164-NEXT: s_add_u32 s8, s34, 44700; GFX1164-NEXT: s_mov_b32 s13, s9701; GFX1164-NEXT: s_addc_u32 s9, s35, 0702; GFX1164-NEXT: s_getpc_b64 s[4:5]703; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4704; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12705; GFX1164-NEXT: v_mov_b32_e32 v31, v0706; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x0707; GFX1164-NEXT: s_mov_b32 s14, s10708; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]709; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]710; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]711; GFX1164-NEXT: s_mov_b32 s32, 0712; GFX1164-NEXT: s_waitcnt lgkmcnt(0)713; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]714; GFX1164-NEXT: v_bfrev_b32_e32 v2, 1715; GFX1164-NEXT: s_mov_b64 s[0:1], exec716; GFX1164-NEXT: .LBB1_1: ; %ComputeLoop717; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=1718; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)719; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]720; GFX1164-NEXT: v_readlane_b32 s3, v0, s2721; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)722; GFX1164-NEXT: v_add_f32_e32 v2, s3, v2723; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s2724; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]725; GFX1164-NEXT: s_cbranch_scc1 .LBB1_1726; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd727; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0728; GFX1164-NEXT: s_mov_b64 s[0:1], exec729; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)730; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0731; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v0732; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]733; GFX1164-NEXT: s_cbranch_execz .LBB1_5734; GFX1164-NEXT: ; %bb.3:735; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x24736; GFX1164-NEXT: v_mov_b32_e32 v3, 0737; GFX1164-NEXT: s_mov_b64 s[2:3], 0738; GFX1164-NEXT: s_waitcnt lgkmcnt(0)739; GFX1164-NEXT: global_load_b32 v1, v3, s[0:1]740; GFX1164-NEXT: .LBB1_4: ; %atomicrmw.start741; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=1742; GFX1164-NEXT: s_waitcnt vmcnt(0)743; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v2744; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc745; GFX1164-NEXT: s_waitcnt vmcnt(0)746; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1747; GFX1164-NEXT: v_mov_b32_e32 v1, v0748; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]749; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)750; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]751; GFX1164-NEXT: s_cbranch_execnz .LBB1_4752; GFX1164-NEXT: .LBB1_5:753; GFX1164-NEXT: s_endpgm754;755; GFX1132-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:756; GFX1132: ; %bb.0:757; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]758; GFX1132-NEXT: v_mov_b32_e32 v31, v0759; GFX1132-NEXT: s_add_u32 s8, s34, 44760; GFX1132-NEXT: s_addc_u32 s9, s35, 0761; GFX1132-NEXT: s_getpc_b64 s[4:5]762; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4763; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12764; GFX1132-NEXT: s_mov_b32 s12, s13765; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x0766; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]767; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]768; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]769; GFX1132-NEXT: s_mov_b32 s13, s14770; GFX1132-NEXT: s_mov_b32 s14, s15771; GFX1132-NEXT: s_mov_b32 s32, 0772; GFX1132-NEXT: s_waitcnt lgkmcnt(0)773; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]774; GFX1132-NEXT: v_bfrev_b32_e32 v2, 1775; GFX1132-NEXT: s_mov_b32 s0, exec_lo776; GFX1132-NEXT: .LBB1_1: ; %ComputeLoop777; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=1778; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)779; GFX1132-NEXT: s_ctz_i32_b32 s1, s0780; GFX1132-NEXT: v_readlane_b32 s2, v0, s1781; GFX1132-NEXT: s_lshl_b32 s1, 1, s1782; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)783; GFX1132-NEXT: s_and_not1_b32 s0, s0, s1784; GFX1132-NEXT: v_add_f32_e32 v2, s2, v2785; GFX1132-NEXT: s_cbranch_scc1 .LBB1_1786; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd787; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0788; GFX1132-NEXT: s_mov_b32 s2, 0789; GFX1132-NEXT: s_mov_b32 s0, exec_lo790; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)791; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v0792; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s0793; GFX1132-NEXT: s_cbranch_execz .LBB1_5794; GFX1132-NEXT: ; %bb.3:795; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x24796; GFX1132-NEXT: v_mov_b32_e32 v3, 0797; GFX1132-NEXT: s_waitcnt lgkmcnt(0)798; GFX1132-NEXT: global_load_b32 v1, v3, s[0:1]799; GFX1132-NEXT: .LBB1_4: ; %atomicrmw.start800; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=1801; GFX1132-NEXT: s_waitcnt vmcnt(0)802; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v2803; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc804; GFX1132-NEXT: s_waitcnt vmcnt(0)805; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1806; GFX1132-NEXT: v_mov_b32_e32 v1, v0807; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s2808; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)809; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s2810; GFX1132-NEXT: s_cbranch_execnz .LBB1_4811; GFX1132-NEXT: .LBB1_5:812; GFX1132-NEXT: s_endpgm813;814; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:815; GFX7LESS-DPP: ; %bb.0:816; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 0817; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD0818; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD1819; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -1820; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f000821; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s11822; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 0823; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s10824; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s9825; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s8826; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]827; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x9828; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf000829; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -1830; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 44831; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 0832; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]833; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4834; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12835; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0836; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2837; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1838; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v1839; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v2840; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]841; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]842; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]843; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]844; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)845; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]846; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 0847; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 0848; GFX7LESS-DPP-NEXT: .LBB1_1: ; %atomicrmw.start849; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=1850; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)851; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v1, v2, v0852; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)853; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v2854; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v1855; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc856; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)857; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v2858; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]859; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v3860; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]861; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB1_1862; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end863; GFX7LESS-DPP-NEXT: s_endpgm864;865; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:866; GFX9-DPP: ; %bb.0:867; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0868; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1869; GFX9-DPP-NEXT: s_mov_b32 s38, -1870; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe00000871; GFX9-DPP-NEXT: s_add_u32 s36, s36, s11872; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 0873; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]874; GFX9-DPP-NEXT: s_mov_b32 s12, s8875; GFX9-DPP-NEXT: s_add_u32 s8, s34, 44876; GFX9-DPP-NEXT: s_mov_b32 s13, s9877; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 0878; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]879; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4880; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12881; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0882; GFX9-DPP-NEXT: s_mov_b32 s14, s10883; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]884; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2885; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1886; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]887; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]888; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]889; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v2890; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]891; GFX9-DPP-NEXT: s_mov_b32 s32, 0892; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)893; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]894; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 0895; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v1896; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -1897; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 1898; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]899; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1900; GFX9-DPP-NEXT: s_nop 1901; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf902; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5903; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1904; GFX9-DPP-NEXT: s_nop 1905; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf906; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5907; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1908; GFX9-DPP-NEXT: s_nop 1909; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf910; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5911; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1912; GFX9-DPP-NEXT: s_nop 1913; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf914; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5915; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1916; GFX9-DPP-NEXT: s_nop 1917; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf918; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5919; GFX9-DPP-NEXT: s_nop 1920; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf921; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v3922; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 63923; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]924; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1925; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc926; GFX9-DPP-NEXT: s_cbranch_execz .LBB1_3927; GFX9-DPP-NEXT: ; %bb.1:928; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24929; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 0930; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 0931; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)932; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]933; GFX9-DPP-NEXT: .LBB1_2: ; %atomicrmw.start934; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=1935; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)936; GFX9-DPP-NEXT: v_subrev_f32_e32 v0, s4, v1937; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc938; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)939; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1940; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]941; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v0942; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]943; GFX9-DPP-NEXT: s_cbranch_execnz .LBB1_2944; GFX9-DPP-NEXT: .LBB1_3:945; GFX9-DPP-NEXT: s_endpgm946;947; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:948; GFX1064-DPP: ; %bb.0:949; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0950; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1951; GFX1064-DPP-NEXT: s_mov_b32 s38, -1952; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e16000953; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s11954; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]955; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 0956; GFX1064-DPP-NEXT: s_mov_b32 s12, s8957; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 44958; GFX1064-DPP-NEXT: s_mov_b32 s13, s9959; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 0960; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]961; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4962; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12963; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2964; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0965; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1966; GFX1064-DPP-NEXT: s_mov_b32 s14, s10967; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]968; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]969; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]970; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v2971; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]972; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]973; GFX1064-DPP-NEXT: s_mov_b32 s32, 0974; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)975; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]976; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -1977; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 1978; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]979; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 1980; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf981; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v3982; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 1983; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf984; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v5985; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 1986; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf987; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v4988; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf989; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v5990; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 0991; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v4992; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 0993; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 32994; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]995; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0996; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -1997; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s3998; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]999; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01000; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v31001; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01002; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc1003; GFX1064-DPP-NEXT: s_cbranch_execz .LBB1_31004; GFX1064-DPP-NEXT: ; %bb.1:1005; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241006; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 01007; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 01008; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)1009; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]1010; GFX1064-DPP-NEXT: .LBB1_2: ; %atomicrmw.start1011; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=11012; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)1013; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v21014; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc1015; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)1016; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11017; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v01018; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1019; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]1020; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB1_21021; GFX1064-DPP-NEXT: .LBB1_3:1022; GFX1064-DPP-NEXT: s_endpgm1023;1024; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:1025; GFX1032-DPP: ; %bb.0:1026; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01027; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11028; GFX1032-DPP-NEXT: s_mov_b32 s38, -11029; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160001030; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s111031; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]1032; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 01033; GFX1032-DPP-NEXT: s_mov_b32 s12, s81034; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 441035; GFX1032-DPP-NEXT: s_mov_b32 s13, s91036; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 01037; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]1038; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41039; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121040; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v21041; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01042; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v11043; GFX1032-DPP-NEXT: s_mov_b32 s14, s101044; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]1045; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]1046; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]1047; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v21048; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]1049; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]1050; GFX1032-DPP-NEXT: s_mov_b32 s32, 01051; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)1052; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]1053; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -11054; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 11055; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s01056; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 11057; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf1058; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v31059; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 11060; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf1061; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v51062; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 11063; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf1064; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v41065; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf1066; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v51067; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 01068; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v41069; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s01070; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01071; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v31072; GFX1032-DPP-NEXT: s_mov_b32 s2, 01073; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01074; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo1075; GFX1032-DPP-NEXT: s_cbranch_execz .LBB1_31076; GFX1032-DPP-NEXT: ; %bb.1:1077; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241078; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 01079; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)1080; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]1081; GFX1032-DPP-NEXT: .LBB1_2: ; %atomicrmw.start1082; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=11083; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)1084; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v21085; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc1086; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)1087; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11088; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v01089; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s21090; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s21091; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB1_21092; GFX1032-DPP-NEXT: .LBB1_3:1093; GFX1032-DPP-NEXT: s_endpgm1094;1095; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:1096; GFX1164-DPP: ; %bb.0:1097; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]1098; GFX1164-DPP-NEXT: s_mov_b32 s12, s81099; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 441100; GFX1164-DPP-NEXT: s_mov_b32 s13, s91101; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 01102; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]1103; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41104; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121105; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v01106; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x01107; GFX1164-DPP-NEXT: s_mov_b32 s14, s101108; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]1109; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]1110; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]1111; GFX1164-DPP-NEXT: s_mov_b32 s32, 01112; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1113; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]1114; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -11115; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 11116; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]1117; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 11118; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1119; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf1120; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v11121; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 11122; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1123; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf1124; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v31125; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 11126; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1127; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf1128; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v21129; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1130; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf1131; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v31132; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1133; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01134; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v21135; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1136; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v11137; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]1138; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01139; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -11140; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)1141; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v21142; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]1143; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)1144; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v01145; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v11146; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec1147; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)1148; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v41149; GFX1164-DPP-NEXT: s_cbranch_execz .LBB1_31150; GFX1164-DPP-NEXT: ; %bb.1:1151; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x241152; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 01153; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 01154; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1155; GFX1164-DPP-NEXT: global_load_b32 v5, v6, s[0:1]1156; GFX1164-DPP-NEXT: .LBB1_2: ; %atomicrmw.start1157; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=11158; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)1159; GFX1164-DPP-NEXT: v_sub_f32_e32 v4, v5, v01160; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc1161; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)1162; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v51163; GFX1164-DPP-NEXT: v_mov_b32_e32 v5, v41164; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1165; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1166; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]1167; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB1_21168; GFX1164-DPP-NEXT: .LBB1_3:1169; GFX1164-DPP-NEXT: s_endpgm1170;1171; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_align4_unsafe:1172; GFX1132-DPP: ; %bb.0:1173; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]1174; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v01175; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 441176; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 01177; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]1178; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41179; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121180; GFX1132-DPP-NEXT: s_mov_b32 s12, s131181; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x01182; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]1183; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]1184; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]1185; GFX1132-DPP-NEXT: s_mov_b32 s13, s141186; GFX1132-DPP-NEXT: s_mov_b32 s14, s151187; GFX1132-DPP-NEXT: s_mov_b32 s32, 01188; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1189; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]1190; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -11191; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 11192; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s01193; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 11194; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1195; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf1196; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v11197; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 11198; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1199; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf1200; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v31201; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 11202; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1203; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf1204; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v21205; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1206; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf1207; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v31208; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1209; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01210; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v21211; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s01212; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)1213; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 01214; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v11215; GFX1132-DPP-NEXT: s_mov_b32 s2, 01216; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo1217; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)1218; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v41219; GFX1132-DPP-NEXT: s_cbranch_execz .LBB1_31220; GFX1132-DPP-NEXT: ; %bb.1:1221; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x241222; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 01223; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1224; GFX1132-DPP-NEXT: global_load_b32 v5, v6, s[0:1]1225; GFX1132-DPP-NEXT: .LBB1_2: ; %atomicrmw.start1226; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=11227; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)1228; GFX1132-DPP-NEXT: v_sub_f32_e32 v4, v5, v01229; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc1230; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)1231; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v51232; GFX1132-DPP-NEXT: v_mov_b32_e32 v5, v41233; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s21234; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1235; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s21236; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB1_21237; GFX1132-DPP-NEXT: .LBB1_3:1238; GFX1132-DPP-NEXT: s_endpgm1239 %divValue = call float @div.float.value()1240 %result = atomicrmw fsub ptr addrspace(1) %ptr, float %divValue syncscope("agent") monotonic, align 41241 ret void1242}1243 1244define amdgpu_kernel void @global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {1245; GFX7LESS-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1246; GFX7LESS: ; %bb.0:1247; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01248; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11249; GFX7LESS-NEXT: s_mov_b32 s14, -11250; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0001251; GFX7LESS-NEXT: s_add_u32 s12, s12, s111252; GFX7LESS-NEXT: s_addc_u32 s13, s13, 01253; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec1254; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 01255; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v01256; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01257; GFX7LESS-NEXT: s_and_saveexec_b64 s[2:3], vcc1258; GFX7LESS-NEXT: s_cbranch_execz .LBB2_31259; GFX7LESS-NEXT: ; %bb.1:1260; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[0:1]1261; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x91262; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000001263; GFX7LESS-NEXT: v_mov_b32_e32 v0, 01264; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000001265; GFX7LESS-NEXT: s_mov_b64 s[4:5], 01266; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1267; GFX7LESS-NEXT: s_load_dword s2, s[0:1], 0x01268; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0001269; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]1270; GFX7LESS-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1271; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v01272; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1273; GFX7LESS-NEXT: v_mov_b32_e32 v1, s21274; GFX7LESS-NEXT: s_mov_b32 s2, -11275; GFX7LESS-NEXT: .LBB2_2: ; %atomicrmw.start1276; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=11277; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v21278; GFX7LESS-NEXT: s_waitcnt expcnt(0)1279; GFX7LESS-NEXT: v_mov_b32_e32 v4, v11280; GFX7LESS-NEXT: v_mov_b32_e32 v3, v01281; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc1282; GFX7LESS-NEXT: s_waitcnt vmcnt(0)1283; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v11284; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1285; GFX7LESS-NEXT: v_mov_b32_e32 v1, v31286; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]1287; GFX7LESS-NEXT: s_cbranch_execnz .LBB2_21288; GFX7LESS-NEXT: .LBB2_3:1289; GFX7LESS-NEXT: s_endpgm1290;1291; GFX9-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1292; GFX9: ; %bb.0:1293; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01294; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11295; GFX9-NEXT: s_mov_b32 s14, -11296; GFX9-NEXT: s_mov_b64 s[0:1], exec1297; GFX9-NEXT: s_mov_b32 s15, 0xe000001298; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01299; GFX9-NEXT: s_add_u32 s12, s12, s111300; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01301; GFX9-NEXT: s_addc_u32 s13, s13, 01302; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01303; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc1304; GFX9-NEXT: s_cbranch_execz .LBB2_31305; GFX9-NEXT: ; %bb.1:1306; GFX9-NEXT: v_mov_b32_e32 v0, 01307; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1308; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000001309; GFX9-NEXT: s_mov_b32 s1, 0x433000001310; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]1311; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241312; GFX9-NEXT: s_mov_b64 s[2:3], 01313; GFX9-NEXT: v_mov_b32_e32 v3, 01314; GFX9-NEXT: s_waitcnt lgkmcnt(0)1315; GFX9-NEXT: s_load_dword s4, s[0:1], 0x01316; GFX9-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1317; GFX9-NEXT: s_waitcnt lgkmcnt(0)1318; GFX9-NEXT: v_mov_b32_e32 v1, s41319; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v01320; GFX9-NEXT: .LBB2_2: ; %atomicrmw.start1321; GFX9-NEXT: ; =>This Inner Loop Header: Depth=11322; GFX9-NEXT: v_sub_f32_e32 v0, v1, v21323; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1324; GFX9-NEXT: s_waitcnt vmcnt(0)1325; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11326; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1327; GFX9-NEXT: v_mov_b32_e32 v1, v01328; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]1329; GFX9-NEXT: s_cbranch_execnz .LBB2_21330; GFX9-NEXT: .LBB2_3:1331; GFX9-NEXT: s_endpgm1332;1333; GFX1064-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1334; GFX1064: ; %bb.0:1335; GFX1064-NEXT: s_mov_b64 s[0:1], exec1336; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01337; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01338; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11339; GFX1064-NEXT: s_mov_b32 s14, -11340; GFX1064-NEXT: s_mov_b32 s15, 0x31e160001341; GFX1064-NEXT: s_add_u32 s12, s12, s111342; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01343; GFX1064-NEXT: s_addc_u32 s13, s13, 01344; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01345; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc1346; GFX1064-NEXT: s_cbranch_execz .LBB2_31347; GFX1064-NEXT: ; %bb.1:1348; GFX1064-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1349; GFX1064-NEXT: s_mov_b32 s1, 0x433000001350; GFX1064-NEXT: v_mov_b32_e32 v3, 01351; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1352; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241353; GFX1064-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1354; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1355; GFX1064-NEXT: s_load_dword s2, s[0:1], 0x01356; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1357; GFX1064-NEXT: v_mov_b32_e32 v1, s21358; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v01359; GFX1064-NEXT: s_mov_b64 s[2:3], 01360; GFX1064-NEXT: .LBB2_2: ; %atomicrmw.start1361; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=11362; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v21363; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1364; GFX1064-NEXT: s_waitcnt vmcnt(0)1365; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11366; GFX1064-NEXT: v_mov_b32_e32 v1, v01367; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1368; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]1369; GFX1064-NEXT: s_cbranch_execnz .LBB2_21370; GFX1064-NEXT: .LBB2_3:1371; GFX1064-NEXT: s_endpgm1372;1373; GFX1032-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1374; GFX1032: ; %bb.0:1375; GFX1032-NEXT: s_mov_b32 s0, exec_lo1376; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01377; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01378; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11379; GFX1032-NEXT: s_mov_b32 s14, -11380; GFX1032-NEXT: s_mov_b32 s15, 0x31c160001381; GFX1032-NEXT: s_add_u32 s12, s12, s111382; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01383; GFX1032-NEXT: s_addc_u32 s13, s13, 01384; GFX1032-NEXT: s_mov_b32 s2, 01385; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo1386; GFX1032-NEXT: s_cbranch_execz .LBB2_31387; GFX1032-NEXT: ; %bb.1:1388; GFX1032-NEXT: s_bcnt1_i32_b32 s0, s01389; GFX1032-NEXT: s_mov_b32 s1, 0x433000001390; GFX1032-NEXT: v_mov_b32_e32 v3, 01391; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1392; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241393; GFX1032-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1394; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1395; GFX1032-NEXT: s_load_dword s3, s[0:1], 0x01396; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1397; GFX1032-NEXT: v_mov_b32_e32 v1, s31398; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v01399; GFX1032-NEXT: .LBB2_2: ; %atomicrmw.start1400; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=11401; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v21402; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1403; GFX1032-NEXT: s_waitcnt vmcnt(0)1404; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11405; GFX1032-NEXT: v_mov_b32_e32 v1, v01406; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s21407; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s21408; GFX1032-NEXT: s_cbranch_execnz .LBB2_21409; GFX1032-NEXT: .LBB2_3:1410; GFX1032-NEXT: s_endpgm1411;1412; GFX1164-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1413; GFX1164: ; %bb.0:1414; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec1415; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000001416; GFX1164-NEXT: v_mov_b32_e32 v1, s01417; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01418; GFX1164-NEXT: s_mov_b64 s[0:1], exec1419; GFX1164-NEXT: s_clause 0x11420; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:41421; GFX1164-NEXT: scratch_store_b32 off, v1, off1422; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off1423; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v21424; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)1425; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v21426; GFX1164-NEXT: s_cbranch_execz .LBB2_31427; GFX1164-NEXT: ; %bb.1:1428; GFX1164-NEXT: s_waitcnt vmcnt(0)1429; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1430; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x241431; GFX1164-NEXT: v_mov_b32_e32 v3, 01432; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1433; GFX1164-NEXT: s_load_b32 s2, s[0:1], 0x01434; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)1435; GFX1164-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1436; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1437; GFX1164-NEXT: v_mov_b32_e32 v1, s21438; GFX1164-NEXT: s_mov_b64 s[2:3], 01439; GFX1164-NEXT: v_mul_f32_e32 v2, 4.0, v01440; GFX1164-NEXT: .LBB2_2: ; %atomicrmw.start1441; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=11442; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)1443; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v21444; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc1445; GFX1164-NEXT: s_waitcnt vmcnt(0)1446; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11447; GFX1164-NEXT: v_mov_b32_e32 v1, v01448; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1449; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1450; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]1451; GFX1164-NEXT: s_cbranch_execnz .LBB2_21452; GFX1164-NEXT: .LBB2_3:1453; GFX1164-NEXT: s_endpgm1454;1455; GFX1132-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1456; GFX1132: ; %bb.0:1457; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo1458; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1459; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s01460; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01461; GFX1132-NEXT: s_mov_b32 s2, 01462; GFX1132-NEXT: s_mov_b32 s0, exec_lo1463; GFX1132-NEXT: s_clause 0x11464; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:41465; GFX1132-NEXT: scratch_store_b32 off, v1, off1466; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off1467; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v21468; GFX1132-NEXT: s_cbranch_execz .LBB2_31469; GFX1132-NEXT: ; %bb.1:1470; GFX1132-NEXT: s_waitcnt vmcnt(0)1471; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1472; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x241473; GFX1132-NEXT: v_mov_b32_e32 v3, 01474; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1475; GFX1132-NEXT: s_load_b32 s3, s[0:1], 0x01476; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)1477; GFX1132-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1478; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1479; GFX1132-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v01480; GFX1132-NEXT: .LBB2_2: ; %atomicrmw.start1481; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=11482; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)1483; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v21484; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc1485; GFX1132-NEXT: s_waitcnt vmcnt(0)1486; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11487; GFX1132-NEXT: v_mov_b32_e32 v1, v01488; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s21489; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1490; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s21491; GFX1132-NEXT: s_cbranch_execnz .LBB2_21492; GFX1132-NEXT: .LBB2_3:1493; GFX1132-NEXT: s_endpgm1494;1495; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1496; GFX7LESS-DPP: ; %bb.0:1497; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01498; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11499; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -11500; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0001501; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s111502; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 01503; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], exec1504; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 01505; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v01506; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01507; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1508; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB2_31509; GFX7LESS-DPP-NEXT: ; %bb.1:1510; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[0:1]1511; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x91512; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000001513; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 01514; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000001515; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 01516; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)1517; GFX7LESS-DPP-NEXT: s_load_dword s2, s[0:1], 0x01518; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0001519; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]1520; GFX7LESS-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1521; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01522; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)1523; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s21524; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -11525; GFX7LESS-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1526; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=11527; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v0, v1, v21528; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)1529; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v11530; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v01531; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc1532; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)1533; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v11534; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1535; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v31536; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]1537; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB2_21538; GFX7LESS-DPP-NEXT: .LBB2_3:1539; GFX7LESS-DPP-NEXT: s_endpgm1540;1541; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1542; GFX9-DPP: ; %bb.0:1543; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01544; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11545; GFX9-DPP-NEXT: s_mov_b32 s14, -11546; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec1547; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000001548; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01549; GFX9-DPP-NEXT: s_add_u32 s12, s12, s111550; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01551; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 01552; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01553; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1554; GFX9-DPP-NEXT: s_cbranch_execz .LBB2_31555; GFX9-DPP-NEXT: ; %bb.1:1556; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 01557; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1558; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000001559; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000001560; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]1561; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241562; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 01563; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 01564; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)1565; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x01566; GFX9-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1567; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)1568; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s41569; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01570; GFX9-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1571; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=11572; GFX9-DPP-NEXT: v_sub_f32_e32 v0, v1, v21573; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1574; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)1575; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11576; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1577; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v01578; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]1579; GFX9-DPP-NEXT: s_cbranch_execnz .LBB2_21580; GFX9-DPP-NEXT: .LBB2_3:1581; GFX9-DPP-NEXT: s_endpgm1582;1583; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1584; GFX1064-DPP: ; %bb.0:1585; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec1586; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01587; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01588; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11589; GFX1064-DPP-NEXT: s_mov_b32 s14, -11590; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160001591; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s111592; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01593; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 01594; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01595; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1596; GFX1064-DPP-NEXT: s_cbranch_execz .LBB2_31597; GFX1064-DPP-NEXT: ; %bb.1:1598; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1599; GFX1064-DPP-NEXT: s_mov_b32 s1, 0x433000001600; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 01601; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1602; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241603; GFX1064-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1604; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)1605; GFX1064-DPP-NEXT: s_load_dword s2, s[0:1], 0x01606; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)1607; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s21608; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01609; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 01610; GFX1064-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1611; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=11612; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v21613; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1614; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)1615; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11616; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v01617; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1618; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]1619; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB2_21620; GFX1064-DPP-NEXT: .LBB2_3:1621; GFX1064-DPP-NEXT: s_endpgm1622;1623; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1624; GFX1032-DPP: ; %bb.0:1625; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo1626; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01627; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01628; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11629; GFX1032-DPP-NEXT: s_mov_b32 s14, -11630; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160001631; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s111632; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01633; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 01634; GFX1032-DPP-NEXT: s_mov_b32 s2, 01635; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo1636; GFX1032-DPP-NEXT: s_cbranch_execz .LBB2_31637; GFX1032-DPP-NEXT: ; %bb.1:1638; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s0, s01639; GFX1032-DPP-NEXT: s_mov_b32 s1, 0x433000001640; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 01641; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1642; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241643; GFX1032-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1644; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)1645; GFX1032-DPP-NEXT: s_load_dword s3, s[0:1], 0x01646; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)1647; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s31648; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01649; GFX1032-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1650; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=11651; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v21652; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1653; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)1654; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11655; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v01656; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s21657; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s21658; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB2_21659; GFX1032-DPP-NEXT: .LBB2_3:1660; GFX1032-DPP-NEXT: s_endpgm1661;1662; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1663; GFX1164-DPP: ; %bb.0:1664; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec1665; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000001666; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s01667; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01668; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec1669; GFX1164-DPP-NEXT: s_clause 0x11670; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:41671; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off1672; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off1673; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v21674; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)1675; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v21676; GFX1164-DPP-NEXT: s_cbranch_execz .LBB2_31677; GFX1164-DPP-NEXT: ; %bb.1:1678; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)1679; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1680; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x241681; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, 01682; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1683; GFX1164-DPP-NEXT: s_load_b32 s2, s[0:1], 0x01684; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)1685; GFX1164-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1686; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1687; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s21688; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 01689; GFX1164-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01690; GFX1164-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1691; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=11692; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)1693; GFX1164-DPP-NEXT: v_sub_f32_e32 v0, v1, v21694; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc1695; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)1696; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11697; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v01698; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1699; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1700; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]1701; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB2_21702; GFX1164-DPP-NEXT: .LBB2_3:1703; GFX1164-DPP-NEXT: s_endpgm1704;1705; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_one_as_scope_unsafe_structfp:1706; GFX1132-DPP: ; %bb.0:1707; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo1708; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1709; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s01710; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01711; GFX1132-DPP-NEXT: s_mov_b32 s2, 01712; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo1713; GFX1132-DPP-NEXT: s_clause 0x11714; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:41715; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off1716; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off1717; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v21718; GFX1132-DPP-NEXT: s_cbranch_execz .LBB2_31719; GFX1132-DPP-NEXT: ; %bb.1:1720; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)1721; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1722; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x241723; GFX1132-DPP-NEXT: v_mov_b32_e32 v3, 01724; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1725; GFX1132-DPP-NEXT: s_load_b32 s3, s[0:1], 0x01726; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)1727; GFX1132-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1728; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1729; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v01730; GFX1132-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1731; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=11732; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)1733; GFX1132-DPP-NEXT: v_sub_f32_e32 v0, v1, v21734; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc1735; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)1736; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11737; GFX1132-DPP-NEXT: v_mov_b32_e32 v1, v01738; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s21739; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1740; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s21741; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB2_21742; GFX1132-DPP-NEXT: .LBB2_3:1743; GFX1132-DPP-NEXT: s_endpgm1744 %result = atomicrmw fsub ptr addrspace(1) %ptr, float 4.0 syncscope("one-as") monotonic1745 ret void1746}1747 1748 1749define amdgpu_kernel void @global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {1750; GFX7LESS-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:1751; GFX7LESS: ; %bb.0:1752; GFX7LESS-NEXT: s_mov_b32 s32, 01753; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01754; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11755; GFX7LESS-NEXT: s_mov_b32 s38, -11756; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0001757; GFX7LESS-NEXT: s_add_u32 s36, s36, s111758; GFX7LESS-NEXT: s_addc_u32 s37, s37, 01759; GFX7LESS-NEXT: s_mov_b32 s14, s101760; GFX7LESS-NEXT: s_mov_b32 s13, s91761; GFX7LESS-NEXT: s_mov_b32 s12, s81762; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]1763; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]1764; GFX7LESS-NEXT: s_add_u32 s8, s34, 441765; GFX7LESS-NEXT: s_addc_u32 s9, s35, 01766; GFX7LESS-NEXT: s_getpc_b64 s[4:5]1767; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41768; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121769; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01770; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v21771; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v11772; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v11773; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v21774; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]1775; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]1776; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]1777; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]1778; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1779; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]1780; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec1781; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 11782; GFX7LESS-NEXT: .LBB3_1: ; %ComputeLoop1783; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=11784; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]1785; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s21786; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s21787; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]1788; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 01789; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]1790; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v21791; GFX7LESS-NEXT: s_cbranch_vccnz .LBB3_11792; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd1793; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 01794; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v01795; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01796; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc1797; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1798; GFX7LESS-NEXT: s_cbranch_execz .LBB3_51799; GFX7LESS-NEXT: ; %bb.3:1800; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x91801; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0001802; GFX7LESS-NEXT: s_mov_b32 s2, -11803; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1804; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 01805; GFX7LESS-NEXT: s_mov_b64 s[4:5], 01806; GFX7LESS-NEXT: .LBB3_4: ; %atomicrmw.start1807; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=11808; GFX7LESS-NEXT: s_waitcnt vmcnt(0)1809; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v21810; GFX7LESS-NEXT: s_waitcnt expcnt(0)1811; GFX7LESS-NEXT: v_mov_b32_e32 v4, v11812; GFX7LESS-NEXT: v_mov_b32_e32 v3, v01813; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc1814; GFX7LESS-NEXT: s_waitcnt vmcnt(0)1815; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v11816; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1817; GFX7LESS-NEXT: v_mov_b32_e32 v1, v31818; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]1819; GFX7LESS-NEXT: s_cbranch_execnz .LBB3_41820; GFX7LESS-NEXT: .LBB3_5:1821; GFX7LESS-NEXT: s_endpgm1822;1823; GFX9-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:1824; GFX9: ; %bb.0:1825; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01826; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11827; GFX9-NEXT: s_mov_b32 s38, -11828; GFX9-NEXT: s_mov_b32 s39, 0xe000001829; GFX9-NEXT: s_add_u32 s36, s36, s111830; GFX9-NEXT: s_addc_u32 s37, s37, 01831; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]1832; GFX9-NEXT: s_mov_b32 s12, s81833; GFX9-NEXT: s_add_u32 s8, s34, 441834; GFX9-NEXT: s_mov_b32 s13, s91835; GFX9-NEXT: s_addc_u32 s9, s35, 01836; GFX9-NEXT: s_getpc_b64 s[4:5]1837; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41838; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121839; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01840; GFX9-NEXT: s_mov_b32 s14, s101841; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]1842; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v21843; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v11844; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]1845; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]1846; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]1847; GFX9-NEXT: v_or3_b32 v31, v0, v1, v21848; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]1849; GFX9-NEXT: s_mov_b32 s32, 01850; GFX9-NEXT: s_waitcnt lgkmcnt(0)1851; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]1852; GFX9-NEXT: s_mov_b64 s[0:1], exec1853; GFX9-NEXT: v_bfrev_b32_e32 v2, 11854; GFX9-NEXT: .LBB3_1: ; %ComputeLoop1855; GFX9-NEXT: ; =>This Inner Loop Header: Depth=11856; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]1857; GFX9-NEXT: v_readlane_b32 s4, v0, s21858; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s21859; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]1860; GFX9-NEXT: v_add_f32_e32 v2, s4, v21861; GFX9-NEXT: s_cbranch_scc1 .LBB3_11862; GFX9-NEXT: ; %bb.2: ; %ComputeEnd1863; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01864; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01865; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01866; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc1867; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1868; GFX9-NEXT: s_cbranch_execz .LBB3_51869; GFX9-NEXT: ; %bb.3:1870; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241871; GFX9-NEXT: v_mov_b32_e32 v3, 01872; GFX9-NEXT: s_mov_b64 s[2:3], 01873; GFX9-NEXT: s_waitcnt lgkmcnt(0)1874; GFX9-NEXT: global_load_dword v1, v3, s[0:1]1875; GFX9-NEXT: .LBB3_4: ; %atomicrmw.start1876; GFX9-NEXT: ; =>This Inner Loop Header: Depth=11877; GFX9-NEXT: s_waitcnt vmcnt(0)1878; GFX9-NEXT: v_sub_f32_e32 v0, v1, v21879; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1880; GFX9-NEXT: s_waitcnt vmcnt(0)1881; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11882; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1883; GFX9-NEXT: v_mov_b32_e32 v1, v01884; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]1885; GFX9-NEXT: s_cbranch_execnz .LBB3_41886; GFX9-NEXT: .LBB3_5:1887; GFX9-NEXT: s_endpgm1888;1889; GFX1064-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:1890; GFX1064: ; %bb.0:1891; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01892; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11893; GFX1064-NEXT: s_mov_b32 s38, -11894; GFX1064-NEXT: s_mov_b32 s39, 0x31e160001895; GFX1064-NEXT: s_add_u32 s36, s36, s111896; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]1897; GFX1064-NEXT: s_addc_u32 s37, s37, 01898; GFX1064-NEXT: s_mov_b32 s12, s81899; GFX1064-NEXT: s_add_u32 s8, s34, 441900; GFX1064-NEXT: s_mov_b32 s13, s91901; GFX1064-NEXT: s_addc_u32 s9, s35, 01902; GFX1064-NEXT: s_getpc_b64 s[4:5]1903; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41904; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121905; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v21906; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01907; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v11908; GFX1064-NEXT: s_mov_b32 s14, s101909; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]1910; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]1911; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]1912; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v21913; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]1914; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]1915; GFX1064-NEXT: s_mov_b32 s32, 01916; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1917; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]1918; GFX1064-NEXT: v_bfrev_b32_e32 v2, 11919; GFX1064-NEXT: s_mov_b64 s[0:1], exec1920; GFX1064-NEXT: .LBB3_1: ; %ComputeLoop1921; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=11922; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]1923; GFX1064-NEXT: v_readlane_b32 s3, v0, s21924; GFX1064-NEXT: v_add_f32_e32 v2, s3, v21925; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s21926; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]1927; GFX1064-NEXT: s_cbranch_scc1 .LBB3_11928; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd1929; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01930; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01931; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01932; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc1933; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1934; GFX1064-NEXT: s_cbranch_execz .LBB3_51935; GFX1064-NEXT: ; %bb.3:1936; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241937; GFX1064-NEXT: v_mov_b32_e32 v3, 01938; GFX1064-NEXT: s_mov_b64 s[2:3], 01939; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1940; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]1941; GFX1064-NEXT: .LBB3_4: ; %atomicrmw.start1942; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=11943; GFX1064-NEXT: s_waitcnt vmcnt(0)1944; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v21945; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1946; GFX1064-NEXT: s_waitcnt vmcnt(0)1947; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11948; GFX1064-NEXT: v_mov_b32_e32 v1, v01949; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1950; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]1951; GFX1064-NEXT: s_cbranch_execnz .LBB3_41952; GFX1064-NEXT: .LBB3_5:1953; GFX1064-NEXT: s_endpgm1954;1955; GFX1032-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:1956; GFX1032: ; %bb.0:1957; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01958; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11959; GFX1032-NEXT: s_mov_b32 s38, -11960; GFX1032-NEXT: s_mov_b32 s39, 0x31c160001961; GFX1032-NEXT: s_add_u32 s36, s36, s111962; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]1963; GFX1032-NEXT: s_addc_u32 s37, s37, 01964; GFX1032-NEXT: s_mov_b32 s12, s81965; GFX1032-NEXT: s_add_u32 s8, s34, 441966; GFX1032-NEXT: s_mov_b32 s13, s91967; GFX1032-NEXT: s_addc_u32 s9, s35, 01968; GFX1032-NEXT: s_getpc_b64 s[4:5]1969; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41970; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121971; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v21972; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01973; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v11974; GFX1032-NEXT: s_mov_b32 s14, s101975; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]1976; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]1977; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]1978; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v21979; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]1980; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]1981; GFX1032-NEXT: s_mov_b32 s32, 01982; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1983; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]1984; GFX1032-NEXT: v_bfrev_b32_e32 v2, 11985; GFX1032-NEXT: s_mov_b32 s0, exec_lo1986; GFX1032-NEXT: .LBB3_1: ; %ComputeLoop1987; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=11988; GFX1032-NEXT: s_ff1_i32_b32 s1, s01989; GFX1032-NEXT: v_readlane_b32 s2, v0, s11990; GFX1032-NEXT: s_lshl_b32 s1, 1, s11991; GFX1032-NEXT: s_andn2_b32 s0, s0, s11992; GFX1032-NEXT: v_add_f32_e32 v2, s2, v21993; GFX1032-NEXT: s_cbranch_scc1 .LBB3_11994; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd1995; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01996; GFX1032-NEXT: s_mov_b32 s2, 01997; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01998; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo1999; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s02000; GFX1032-NEXT: s_cbranch_execz .LBB3_52001; GFX1032-NEXT: ; %bb.3:2002; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242003; GFX1032-NEXT: v_mov_b32_e32 v3, 02004; GFX1032-NEXT: s_waitcnt lgkmcnt(0)2005; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]2006; GFX1032-NEXT: .LBB3_4: ; %atomicrmw.start2007; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=12008; GFX1032-NEXT: s_waitcnt vmcnt(0)2009; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v22010; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2011; GFX1032-NEXT: s_waitcnt vmcnt(0)2012; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12013; GFX1032-NEXT: v_mov_b32_e32 v1, v02014; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s22015; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s22016; GFX1032-NEXT: s_cbranch_execnz .LBB3_42017; GFX1032-NEXT: .LBB3_5:2018; GFX1032-NEXT: s_endpgm2019;2020; GFX1164-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2021; GFX1164: ; %bb.0:2022; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]2023; GFX1164-NEXT: s_mov_b32 s12, s82024; GFX1164-NEXT: s_add_u32 s8, s34, 442025; GFX1164-NEXT: s_mov_b32 s13, s92026; GFX1164-NEXT: s_addc_u32 s9, s35, 02027; GFX1164-NEXT: s_getpc_b64 s[4:5]2028; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42029; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122030; GFX1164-NEXT: v_mov_b32_e32 v31, v02031; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x02032; GFX1164-NEXT: s_mov_b32 s14, s102033; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]2034; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]2035; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]2036; GFX1164-NEXT: s_mov_b32 s32, 02037; GFX1164-NEXT: s_waitcnt lgkmcnt(0)2038; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]2039; GFX1164-NEXT: v_bfrev_b32_e32 v2, 12040; GFX1164-NEXT: s_mov_b64 s[0:1], exec2041; GFX1164-NEXT: .LBB3_1: ; %ComputeLoop2042; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=12043; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)2044; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]2045; GFX1164-NEXT: v_readlane_b32 s3, v0, s22046; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2047; GFX1164-NEXT: v_add_f32_e32 v2, s3, v22048; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s22049; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]2050; GFX1164-NEXT: s_cbranch_scc1 .LBB3_12051; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd2052; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02053; GFX1164-NEXT: s_mov_b64 s[0:1], exec2054; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2055; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02056; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v02057; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]2058; GFX1164-NEXT: s_cbranch_execz .LBB3_52059; GFX1164-NEXT: ; %bb.3:2060; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x242061; GFX1164-NEXT: v_mov_b32_e32 v3, 02062; GFX1164-NEXT: s_mov_b64 s[2:3], 02063; GFX1164-NEXT: s_waitcnt lgkmcnt(0)2064; GFX1164-NEXT: global_load_b32 v1, v3, s[0:1]2065; GFX1164-NEXT: .LBB3_4: ; %atomicrmw.start2066; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=12067; GFX1164-NEXT: s_waitcnt vmcnt(0)2068; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v22069; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2070; GFX1164-NEXT: s_waitcnt vmcnt(0)2071; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12072; GFX1164-NEXT: v_mov_b32_e32 v1, v02073; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2074; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2075; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]2076; GFX1164-NEXT: s_cbranch_execnz .LBB3_42077; GFX1164-NEXT: .LBB3_5:2078; GFX1164-NEXT: s_endpgm2079;2080; GFX1132-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2081; GFX1132: ; %bb.0:2082; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]2083; GFX1132-NEXT: v_mov_b32_e32 v31, v02084; GFX1132-NEXT: s_add_u32 s8, s34, 442085; GFX1132-NEXT: s_addc_u32 s9, s35, 02086; GFX1132-NEXT: s_getpc_b64 s[4:5]2087; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42088; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122089; GFX1132-NEXT: s_mov_b32 s12, s132090; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x02091; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]2092; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]2093; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]2094; GFX1132-NEXT: s_mov_b32 s13, s142095; GFX1132-NEXT: s_mov_b32 s14, s152096; GFX1132-NEXT: s_mov_b32 s32, 02097; GFX1132-NEXT: s_waitcnt lgkmcnt(0)2098; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]2099; GFX1132-NEXT: v_bfrev_b32_e32 v2, 12100; GFX1132-NEXT: s_mov_b32 s0, exec_lo2101; GFX1132-NEXT: .LBB3_1: ; %ComputeLoop2102; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=12103; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)2104; GFX1132-NEXT: s_ctz_i32_b32 s1, s02105; GFX1132-NEXT: v_readlane_b32 s2, v0, s12106; GFX1132-NEXT: s_lshl_b32 s1, 1, s12107; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2108; GFX1132-NEXT: s_and_not1_b32 s0, s0, s12109; GFX1132-NEXT: v_add_f32_e32 v2, s2, v22110; GFX1132-NEXT: s_cbranch_scc1 .LBB3_12111; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd2112; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02113; GFX1132-NEXT: s_mov_b32 s2, 02114; GFX1132-NEXT: s_mov_b32 s0, exec_lo2115; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)2116; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v02117; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s02118; GFX1132-NEXT: s_cbranch_execz .LBB3_52119; GFX1132-NEXT: ; %bb.3:2120; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x242121; GFX1132-NEXT: v_mov_b32_e32 v3, 02122; GFX1132-NEXT: s_waitcnt lgkmcnt(0)2123; GFX1132-NEXT: global_load_b32 v1, v3, s[0:1]2124; GFX1132-NEXT: .LBB3_4: ; %atomicrmw.start2125; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=12126; GFX1132-NEXT: s_waitcnt vmcnt(0)2127; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v22128; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2129; GFX1132-NEXT: s_waitcnt vmcnt(0)2130; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12131; GFX1132-NEXT: v_mov_b32_e32 v1, v02132; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s22133; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2134; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s22135; GFX1132-NEXT: s_cbranch_execnz .LBB3_42136; GFX1132-NEXT: .LBB3_5:2137; GFX1132-NEXT: s_endpgm2138;2139; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2140; GFX7LESS-DPP: ; %bb.0:2141; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 02142; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD02143; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD12144; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -12145; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0002146; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s112147; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 02148; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s102149; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s92150; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s82151; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2152; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x92153; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0002154; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -12155; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 442156; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 02157; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]2158; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42159; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122160; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02161; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22162; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12163; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v12164; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v22165; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2166; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2167; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]2168; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]2169; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)2170; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2171; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 02172; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 02173; GFX7LESS-DPP-NEXT: .LBB3_1: ; %atomicrmw.start2174; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=12175; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)2176; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v1, v2, v02177; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)2178; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v22179; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v12180; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc2181; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)2182; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v22183; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]2184; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v32185; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]2186; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB3_12187; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end2188; GFX7LESS-DPP-NEXT: s_endpgm2189;2190; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2191; GFX9-DPP: ; %bb.0:2192; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02193; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12194; GFX9-DPP-NEXT: s_mov_b32 s38, -12195; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000002196; GFX9-DPP-NEXT: s_add_u32 s36, s36, s112197; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 02198; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2199; GFX9-DPP-NEXT: s_mov_b32 s12, s82200; GFX9-DPP-NEXT: s_add_u32 s8, s34, 442201; GFX9-DPP-NEXT: s_mov_b32 s13, s92202; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 02203; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]2204; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42205; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122206; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02207; GFX9-DPP-NEXT: s_mov_b32 s14, s102208; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2209; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22210; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12211; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2212; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2213; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]2214; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v22215; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]2216; GFX9-DPP-NEXT: s_mov_b32 s32, 02217; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2218; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2219; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 02220; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v12221; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12222; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 12223; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]2224; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12225; GFX9-DPP-NEXT: s_nop 12226; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf2227; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52228; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12229; GFX9-DPP-NEXT: s_nop 12230; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf2231; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52232; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12233; GFX9-DPP-NEXT: s_nop 12234; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf2235; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52236; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12237; GFX9-DPP-NEXT: s_nop 12238; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf2239; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52240; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12241; GFX9-DPP-NEXT: s_nop 12242; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf2243; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52244; GFX9-DPP-NEXT: s_nop 12245; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf2246; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v32247; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 632248; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]2249; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v12250; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc2251; GFX9-DPP-NEXT: s_cbranch_execz .LBB3_32252; GFX9-DPP-NEXT: ; %bb.1:2253; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242254; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 02255; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 02256; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2257; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]2258; GFX9-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2259; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=12260; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)2261; GFX9-DPP-NEXT: v_subrev_f32_e32 v0, s4, v12262; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc2263; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)2264; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12265; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2266; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v02267; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2268; GFX9-DPP-NEXT: s_cbranch_execnz .LBB3_22269; GFX9-DPP-NEXT: .LBB3_3:2270; GFX9-DPP-NEXT: s_endpgm2271;2272; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2273; GFX1064-DPP: ; %bb.0:2274; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02275; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12276; GFX1064-DPP-NEXT: s_mov_b32 s38, -12277; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160002278; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s112279; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2280; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 02281; GFX1064-DPP-NEXT: s_mov_b32 s12, s82282; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 442283; GFX1064-DPP-NEXT: s_mov_b32 s13, s92284; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 02285; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]2286; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42287; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122288; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22289; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02290; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12291; GFX1064-DPP-NEXT: s_mov_b32 s14, s102292; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2293; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2294; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2295; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v22296; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]2297; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]2298; GFX1064-DPP-NEXT: s_mov_b32 s32, 02299; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2300; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2301; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12302; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 12303; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]2304; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 12305; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf2306; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v32307; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 12308; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf2309; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v52310; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 12311; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf2312; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v42313; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf2314; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v52315; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 02316; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v42317; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 02318; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 322319; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]2320; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02321; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12322; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s32323; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]2324; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02325; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v32326; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02327; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc2328; GFX1064-DPP-NEXT: s_cbranch_execz .LBB3_32329; GFX1064-DPP-NEXT: ; %bb.1:2330; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242331; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 02332; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 02333; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2334; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]2335; GFX1064-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2336; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=12337; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)2338; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v22339; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc2340; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)2341; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12342; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v02343; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2344; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2345; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB3_22346; GFX1064-DPP-NEXT: .LBB3_3:2347; GFX1064-DPP-NEXT: s_endpgm2348;2349; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2350; GFX1032-DPP: ; %bb.0:2351; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02352; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12353; GFX1032-DPP-NEXT: s_mov_b32 s38, -12354; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160002355; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s112356; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2357; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 02358; GFX1032-DPP-NEXT: s_mov_b32 s12, s82359; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 442360; GFX1032-DPP-NEXT: s_mov_b32 s13, s92361; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 02362; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]2363; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42364; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122365; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22366; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02367; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12368; GFX1032-DPP-NEXT: s_mov_b32 s14, s102369; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2370; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2371; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2372; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v22373; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]2374; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]2375; GFX1032-DPP-NEXT: s_mov_b32 s32, 02376; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2377; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2378; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -12379; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 12380; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s02381; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 12382; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf2383; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v32384; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 12385; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf2386; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v52387; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 12388; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf2389; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v42390; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf2391; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v52392; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 02393; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v42394; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s02395; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02396; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v32397; GFX1032-DPP-NEXT: s_mov_b32 s2, 02398; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02399; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo2400; GFX1032-DPP-NEXT: s_cbranch_execz .LBB3_32401; GFX1032-DPP-NEXT: ; %bb.1:2402; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242403; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 02404; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2405; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]2406; GFX1032-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2407; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=12408; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)2409; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v22410; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc2411; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)2412; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12413; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v02414; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s22415; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s22416; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB3_22417; GFX1032-DPP-NEXT: .LBB3_3:2418; GFX1032-DPP-NEXT: s_endpgm2419;2420; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2421; GFX1164-DPP: ; %bb.0:2422; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2423; GFX1164-DPP-NEXT: s_mov_b32 s12, s82424; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 442425; GFX1164-DPP-NEXT: s_mov_b32 s13, s92426; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 02427; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]2428; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42429; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122430; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v02431; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x02432; GFX1164-DPP-NEXT: s_mov_b32 s14, s102433; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2434; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2435; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2436; GFX1164-DPP-NEXT: s_mov_b32 s32, 02437; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)2438; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2439; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12440; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 12441; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]2442; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 12443; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2444; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf2445; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v12446; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 12447; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2448; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf2449; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v32450; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 12451; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2452; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf2453; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v22454; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2455; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf2456; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v32457; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2458; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 02459; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v22460; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2461; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v12462; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]2463; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02464; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12465; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)2466; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v22467; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]2468; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)2469; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v02470; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v12471; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec2472; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)2473; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v42474; GFX1164-DPP-NEXT: s_cbranch_execz .LBB3_32475; GFX1164-DPP-NEXT: ; %bb.1:2476; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x242477; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 02478; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 02479; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)2480; GFX1164-DPP-NEXT: global_load_b32 v5, v6, s[0:1]2481; GFX1164-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2482; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=12483; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)2484; GFX1164-DPP-NEXT: v_sub_f32_e32 v4, v5, v02485; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc2486; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)2487; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v52488; GFX1164-DPP-NEXT: v_mov_b32_e32 v5, v42489; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2490; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2491; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]2492; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB3_22493; GFX1164-DPP-NEXT: .LBB3_3:2494; GFX1164-DPP-NEXT: s_endpgm2495;2496; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_div_value_one_as_scope_unsafe_structfp:2497; GFX1132-DPP: ; %bb.0:2498; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2499; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v02500; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 442501; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 02502; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]2503; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42504; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122505; GFX1132-DPP-NEXT: s_mov_b32 s12, s132506; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x02507; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2508; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2509; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2510; GFX1132-DPP-NEXT: s_mov_b32 s13, s142511; GFX1132-DPP-NEXT: s_mov_b32 s14, s152512; GFX1132-DPP-NEXT: s_mov_b32 s32, 02513; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)2514; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2515; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -12516; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 12517; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s02518; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 12519; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2520; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf2521; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v12522; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 12523; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2524; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf2525; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v32526; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 12527; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2528; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf2529; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v22530; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2531; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf2532; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v32533; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2534; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 02535; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v22536; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s02537; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)2538; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 02539; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v12540; GFX1132-DPP-NEXT: s_mov_b32 s2, 02541; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo2542; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)2543; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v42544; GFX1132-DPP-NEXT: s_cbranch_execz .LBB3_32545; GFX1132-DPP-NEXT: ; %bb.1:2546; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x242547; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 02548; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)2549; GFX1132-DPP-NEXT: global_load_b32 v5, v6, s[0:1]2550; GFX1132-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2551; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=12552; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)2553; GFX1132-DPP-NEXT: v_sub_f32_e32 v4, v5, v02554; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc2555; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)2556; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v52557; GFX1132-DPP-NEXT: v_mov_b32_e32 v5, v42558; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s22559; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2560; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s22561; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB3_22562; GFX1132-DPP-NEXT: .LBB3_3:2563; GFX1132-DPP-NEXT: s_endpgm2564 %divValue = call float @div.float.value() strictfp2565 %result = atomicrmw fsub ptr addrspace(1) %ptr, float %divValue syncscope("one-as") monotonic2566 ret void2567}2568 2569define amdgpu_kernel void @global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp(ptr addrspace(1) %ptr) #2{2570; GFX7LESS-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2571; GFX7LESS: ; %bb.0:2572; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02573; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12574; GFX7LESS-NEXT: s_mov_b32 s14, -12575; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0002576; GFX7LESS-NEXT: s_add_u32 s12, s12, s112577; GFX7LESS-NEXT: s_addc_u32 s13, s13, 02578; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec2579; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 02580; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v02581; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02582; GFX7LESS-NEXT: s_and_saveexec_b64 s[2:3], vcc2583; GFX7LESS-NEXT: s_cbranch_execz .LBB4_32584; GFX7LESS-NEXT: ; %bb.1:2585; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[0:1]2586; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x92587; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000002588; GFX7LESS-NEXT: v_mov_b32_e32 v0, 02589; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000002590; GFX7LESS-NEXT: s_mov_b64 s[4:5], 02591; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)2592; GFX7LESS-NEXT: s_load_dword s2, s[0:1], 0x02593; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0002594; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]2595; GFX7LESS-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2596; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v02597; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)2598; GFX7LESS-NEXT: v_mov_b32_e32 v1, s22599; GFX7LESS-NEXT: s_mov_b32 s2, -12600; GFX7LESS-NEXT: .LBB4_2: ; %atomicrmw.start2601; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=12602; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v22603; GFX7LESS-NEXT: s_waitcnt expcnt(0)2604; GFX7LESS-NEXT: v_mov_b32_e32 v4, v12605; GFX7LESS-NEXT: v_mov_b32_e32 v3, v02606; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc2607; GFX7LESS-NEXT: s_waitcnt vmcnt(0)2608; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v12609; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2610; GFX7LESS-NEXT: v_mov_b32_e32 v1, v32611; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]2612; GFX7LESS-NEXT: s_cbranch_execnz .LBB4_22613; GFX7LESS-NEXT: .LBB4_3:2614; GFX7LESS-NEXT: s_endpgm2615;2616; GFX9-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2617; GFX9: ; %bb.0:2618; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02619; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12620; GFX9-NEXT: s_mov_b32 s14, -12621; GFX9-NEXT: s_mov_b64 s[0:1], exec2622; GFX9-NEXT: s_mov_b32 s15, 0xe000002623; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02624; GFX9-NEXT: s_add_u32 s12, s12, s112625; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02626; GFX9-NEXT: s_addc_u32 s13, s13, 02627; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02628; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc2629; GFX9-NEXT: s_cbranch_execz .LBB4_32630; GFX9-NEXT: ; %bb.1:2631; GFX9-NEXT: v_mov_b32_e32 v0, 02632; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2633; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000002634; GFX9-NEXT: s_mov_b32 s1, 0x433000002635; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]2636; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242637; GFX9-NEXT: s_mov_b64 s[2:3], 02638; GFX9-NEXT: v_mov_b32_e32 v3, 02639; GFX9-NEXT: s_waitcnt lgkmcnt(0)2640; GFX9-NEXT: s_load_dword s4, s[0:1], 0x02641; GFX9-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2642; GFX9-NEXT: s_waitcnt lgkmcnt(0)2643; GFX9-NEXT: v_mov_b32_e32 v1, s42644; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v02645; GFX9-NEXT: .LBB4_2: ; %atomicrmw.start2646; GFX9-NEXT: ; =>This Inner Loop Header: Depth=12647; GFX9-NEXT: v_sub_f32_e32 v0, v1, v22648; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2649; GFX9-NEXT: s_waitcnt vmcnt(0)2650; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12651; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2652; GFX9-NEXT: v_mov_b32_e32 v1, v02653; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]2654; GFX9-NEXT: s_cbranch_execnz .LBB4_22655; GFX9-NEXT: .LBB4_3:2656; GFX9-NEXT: s_endpgm2657;2658; GFX1064-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2659; GFX1064: ; %bb.0:2660; GFX1064-NEXT: s_mov_b64 s[0:1], exec2661; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02662; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02663; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12664; GFX1064-NEXT: s_mov_b32 s14, -12665; GFX1064-NEXT: s_mov_b32 s15, 0x31e160002666; GFX1064-NEXT: s_add_u32 s12, s12, s112667; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02668; GFX1064-NEXT: s_addc_u32 s13, s13, 02669; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02670; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc2671; GFX1064-NEXT: s_cbranch_execz .LBB4_32672; GFX1064-NEXT: ; %bb.1:2673; GFX1064-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2674; GFX1064-NEXT: s_mov_b32 s1, 0x433000002675; GFX1064-NEXT: v_mov_b32_e32 v3, 02676; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2677; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242678; GFX1064-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2679; GFX1064-NEXT: s_waitcnt lgkmcnt(0)2680; GFX1064-NEXT: s_load_dword s2, s[0:1], 0x02681; GFX1064-NEXT: s_waitcnt lgkmcnt(0)2682; GFX1064-NEXT: v_mov_b32_e32 v1, s22683; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v02684; GFX1064-NEXT: s_mov_b64 s[2:3], 02685; GFX1064-NEXT: .LBB4_2: ; %atomicrmw.start2686; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=12687; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v22688; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2689; GFX1064-NEXT: s_waitcnt vmcnt(0)2690; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12691; GFX1064-NEXT: v_mov_b32_e32 v1, v02692; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2693; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]2694; GFX1064-NEXT: s_cbranch_execnz .LBB4_22695; GFX1064-NEXT: .LBB4_3:2696; GFX1064-NEXT: s_endpgm2697;2698; GFX1032-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2699; GFX1032: ; %bb.0:2700; GFX1032-NEXT: s_mov_b32 s0, exec_lo2701; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02702; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02703; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12704; GFX1032-NEXT: s_mov_b32 s14, -12705; GFX1032-NEXT: s_mov_b32 s15, 0x31c160002706; GFX1032-NEXT: s_add_u32 s12, s12, s112707; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02708; GFX1032-NEXT: s_addc_u32 s13, s13, 02709; GFX1032-NEXT: s_mov_b32 s2, 02710; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo2711; GFX1032-NEXT: s_cbranch_execz .LBB4_32712; GFX1032-NEXT: ; %bb.1:2713; GFX1032-NEXT: s_bcnt1_i32_b32 s0, s02714; GFX1032-NEXT: s_mov_b32 s1, 0x433000002715; GFX1032-NEXT: v_mov_b32_e32 v3, 02716; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2717; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242718; GFX1032-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2719; GFX1032-NEXT: s_waitcnt lgkmcnt(0)2720; GFX1032-NEXT: s_load_dword s3, s[0:1], 0x02721; GFX1032-NEXT: s_waitcnt lgkmcnt(0)2722; GFX1032-NEXT: v_mov_b32_e32 v1, s32723; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v02724; GFX1032-NEXT: .LBB4_2: ; %atomicrmw.start2725; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=12726; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v22727; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2728; GFX1032-NEXT: s_waitcnt vmcnt(0)2729; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12730; GFX1032-NEXT: v_mov_b32_e32 v1, v02731; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s22732; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s22733; GFX1032-NEXT: s_cbranch_execnz .LBB4_22734; GFX1032-NEXT: .LBB4_3:2735; GFX1032-NEXT: s_endpgm2736;2737; GFX1164-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2738; GFX1164: ; %bb.0:2739; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec2740; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000002741; GFX1164-NEXT: v_mov_b32_e32 v1, s02742; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02743; GFX1164-NEXT: s_mov_b64 s[0:1], exec2744; GFX1164-NEXT: s_clause 0x12745; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:42746; GFX1164-NEXT: scratch_store_b32 off, v1, off2747; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off2748; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v22749; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)2750; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v22751; GFX1164-NEXT: s_cbranch_execz .LBB4_32752; GFX1164-NEXT: ; %bb.1:2753; GFX1164-NEXT: s_waitcnt vmcnt(0)2754; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]2755; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x242756; GFX1164-NEXT: v_mov_b32_e32 v3, 02757; GFX1164-NEXT: s_waitcnt lgkmcnt(0)2758; GFX1164-NEXT: s_load_b32 s2, s[0:1], 0x02759; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)2760; GFX1164-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2761; GFX1164-NEXT: s_waitcnt lgkmcnt(0)2762; GFX1164-NEXT: v_mov_b32_e32 v1, s22763; GFX1164-NEXT: s_mov_b64 s[2:3], 02764; GFX1164-NEXT: v_mul_f32_e32 v2, 4.0, v02765; GFX1164-NEXT: .LBB4_2: ; %atomicrmw.start2766; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=12767; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)2768; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v22769; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2770; GFX1164-NEXT: s_waitcnt vmcnt(0)2771; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12772; GFX1164-NEXT: v_mov_b32_e32 v1, v02773; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2774; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2775; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]2776; GFX1164-NEXT: s_cbranch_execnz .LBB4_22777; GFX1164-NEXT: .LBB4_3:2778; GFX1164-NEXT: s_endpgm2779;2780; GFX1132-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2781; GFX1132: ; %bb.0:2782; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo2783; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2784; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s02785; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02786; GFX1132-NEXT: s_mov_b32 s2, 02787; GFX1132-NEXT: s_mov_b32 s0, exec_lo2788; GFX1132-NEXT: s_clause 0x12789; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:42790; GFX1132-NEXT: scratch_store_b32 off, v1, off2791; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off2792; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v22793; GFX1132-NEXT: s_cbranch_execz .LBB4_32794; GFX1132-NEXT: ; %bb.1:2795; GFX1132-NEXT: s_waitcnt vmcnt(0)2796; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]2797; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x242798; GFX1132-NEXT: v_mov_b32_e32 v3, 02799; GFX1132-NEXT: s_waitcnt lgkmcnt(0)2800; GFX1132-NEXT: s_load_b32 s3, s[0:1], 0x02801; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)2802; GFX1132-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2803; GFX1132-NEXT: s_waitcnt lgkmcnt(0)2804; GFX1132-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v02805; GFX1132-NEXT: .LBB4_2: ; %atomicrmw.start2806; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=12807; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)2808; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v22809; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2810; GFX1132-NEXT: s_waitcnt vmcnt(0)2811; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12812; GFX1132-NEXT: v_mov_b32_e32 v1, v02813; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s22814; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2815; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s22816; GFX1132-NEXT: s_cbranch_execnz .LBB4_22817; GFX1132-NEXT: .LBB4_3:2818; GFX1132-NEXT: s_endpgm2819;2820; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2821; GFX7LESS-DPP: ; %bb.0:2822; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02823; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12824; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -12825; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0002826; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s112827; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 02828; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], exec2829; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 02830; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v02831; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02832; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc2833; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB4_32834; GFX7LESS-DPP-NEXT: ; %bb.1:2835; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[0:1]2836; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x92837; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000002838; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 02839; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000002840; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 02841; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)2842; GFX7LESS-DPP-NEXT: s_load_dword s2, s[0:1], 0x02843; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0002844; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]2845; GFX7LESS-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2846; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02847; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)2848; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s22849; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -12850; GFX7LESS-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2851; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=12852; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v0, v1, v22853; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)2854; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v12855; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v02856; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc2857; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)2858; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v12859; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2860; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v32861; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]2862; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB4_22863; GFX7LESS-DPP-NEXT: .LBB4_3:2864; GFX7LESS-DPP-NEXT: s_endpgm2865;2866; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2867; GFX9-DPP: ; %bb.0:2868; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02869; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12870; GFX9-DPP-NEXT: s_mov_b32 s14, -12871; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec2872; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000002873; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02874; GFX9-DPP-NEXT: s_add_u32 s12, s12, s112875; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02876; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 02877; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02878; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc2879; GFX9-DPP-NEXT: s_cbranch_execz .LBB4_32880; GFX9-DPP-NEXT: ; %bb.1:2881; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 02882; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2883; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000002884; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000002885; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]2886; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242887; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 02888; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 02889; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2890; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x02891; GFX9-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2892; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2893; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s42894; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02895; GFX9-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2896; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=12897; GFX9-DPP-NEXT: v_sub_f32_e32 v0, v1, v22898; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2899; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)2900; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12901; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2902; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v02903; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2904; GFX9-DPP-NEXT: s_cbranch_execnz .LBB4_22905; GFX9-DPP-NEXT: .LBB4_3:2906; GFX9-DPP-NEXT: s_endpgm2907;2908; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2909; GFX1064-DPP: ; %bb.0:2910; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec2911; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02912; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02913; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12914; GFX1064-DPP-NEXT: s_mov_b32 s14, -12915; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160002916; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s112917; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02918; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 02919; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02920; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc2921; GFX1064-DPP-NEXT: s_cbranch_execz .LBB4_32922; GFX1064-DPP-NEXT: ; %bb.1:2923; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2924; GFX1064-DPP-NEXT: s_mov_b32 s1, 0x433000002925; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 02926; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2927; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242928; GFX1064-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2929; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2930; GFX1064-DPP-NEXT: s_load_dword s2, s[0:1], 0x02931; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2932; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s22933; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02934; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 02935; GFX1064-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2936; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=12937; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v22938; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2939; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)2940; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12941; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v02942; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2943; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2944; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB4_22945; GFX1064-DPP-NEXT: .LBB4_3:2946; GFX1064-DPP-NEXT: s_endpgm2947;2948; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2949; GFX1032-DPP: ; %bb.0:2950; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo2951; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02952; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02953; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12954; GFX1032-DPP-NEXT: s_mov_b32 s14, -12955; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160002956; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s112957; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02958; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 02959; GFX1032-DPP-NEXT: s_mov_b32 s2, 02960; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo2961; GFX1032-DPP-NEXT: s_cbranch_execz .LBB4_32962; GFX1032-DPP-NEXT: ; %bb.1:2963; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s0, s02964; GFX1032-DPP-NEXT: s_mov_b32 s1, 0x433000002965; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 02966; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2967; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242968; GFX1032-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2969; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2970; GFX1032-DPP-NEXT: s_load_dword s3, s[0:1], 0x02971; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2972; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s32973; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02974; GFX1032-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2975; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=12976; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v22977; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2978; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)2979; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12980; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v02981; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s22982; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s22983; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB4_22984; GFX1032-DPP-NEXT: .LBB4_3:2985; GFX1032-DPP-NEXT: s_endpgm2986;2987; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:2988; GFX1164-DPP: ; %bb.0:2989; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec2990; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000002991; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s02992; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02993; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec2994; GFX1164-DPP-NEXT: s_clause 0x12995; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:42996; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off2997; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off2998; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v22999; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)3000; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v23001; GFX1164-DPP-NEXT: s_cbranch_execz .LBB4_33002; GFX1164-DPP-NEXT: ; %bb.1:3003; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)3004; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]3005; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x243006; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, 03007; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)3008; GFX1164-DPP-NEXT: s_load_b32 s2, s[0:1], 0x03009; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)3010; GFX1164-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]3011; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)3012; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s23013; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 03014; GFX1164-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v03015; GFX1164-DPP-NEXT: .LBB4_2: ; %atomicrmw.start3016; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=13017; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)3018; GFX1164-DPP-NEXT: v_sub_f32_e32 v0, v1, v23019; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc3020; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)3021; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13022; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v03023; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3024; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3025; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]3026; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB4_23027; GFX1164-DPP-NEXT: .LBB4_3:3028; GFX1164-DPP-NEXT: s_endpgm3029;3030; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_agent_scope_strictfp:3031; GFX1132-DPP: ; %bb.0:3032; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo3033; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3034; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s03035; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 03036; GFX1132-DPP-NEXT: s_mov_b32 s2, 03037; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo3038; GFX1132-DPP-NEXT: s_clause 0x13039; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:43040; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off3041; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off3042; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v23043; GFX1132-DPP-NEXT: s_cbranch_execz .LBB4_33044; GFX1132-DPP-NEXT: ; %bb.1:3045; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)3046; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]3047; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x243048; GFX1132-DPP-NEXT: v_mov_b32_e32 v3, 03049; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)3050; GFX1132-DPP-NEXT: s_load_b32 s3, s[0:1], 0x03051; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)3052; GFX1132-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]3053; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)3054; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v03055; GFX1132-DPP-NEXT: .LBB4_2: ; %atomicrmw.start3056; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=13057; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)3058; GFX1132-DPP-NEXT: v_sub_f32_e32 v0, v1, v23059; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc3060; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)3061; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13062; GFX1132-DPP-NEXT: v_mov_b32_e32 v1, v03063; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s23064; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3065; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s23066; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB4_23067; GFX1132-DPP-NEXT: .LBB4_3:3068; GFX1132-DPP-NEXT: s_endpgm3069 %result = atomicrmw fsub ptr addrspace(1) %ptr, float 4.0 syncscope("agent") monotonic3070 ret void3071}3072 3073 3074define amdgpu_kernel void @global_atomic_fsub_uni_address_div_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {3075; GFX7LESS-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3076; GFX7LESS: ; %bb.0:3077; GFX7LESS-NEXT: s_mov_b32 s32, 03078; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03079; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13080; GFX7LESS-NEXT: s_mov_b32 s38, -13081; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0003082; GFX7LESS-NEXT: s_add_u32 s36, s36, s113083; GFX7LESS-NEXT: s_addc_u32 s37, s37, 03084; GFX7LESS-NEXT: s_mov_b32 s14, s103085; GFX7LESS-NEXT: s_mov_b32 s13, s93086; GFX7LESS-NEXT: s_mov_b32 s12, s83087; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]3088; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]3089; GFX7LESS-NEXT: s_add_u32 s8, s34, 443090; GFX7LESS-NEXT: s_addc_u32 s9, s35, 03091; GFX7LESS-NEXT: s_getpc_b64 s[4:5]3092; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43093; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123094; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03095; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v23096; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v13097; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v13098; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v23099; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]3100; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]3101; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]3102; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]3103; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3104; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]3105; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec3106; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 13107; GFX7LESS-NEXT: .LBB5_1: ; %ComputeLoop3108; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=13109; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]3110; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s23111; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s23112; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3113; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 03114; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]3115; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v23116; GFX7LESS-NEXT: s_cbranch_vccnz .LBB5_13117; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd3118; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 03119; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v03120; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03121; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc3122; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3123; GFX7LESS-NEXT: s_cbranch_execz .LBB5_53124; GFX7LESS-NEXT: ; %bb.3:3125; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x93126; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0003127; GFX7LESS-NEXT: s_mov_b32 s2, -13128; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3129; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 03130; GFX7LESS-NEXT: s_mov_b64 s[4:5], 03131; GFX7LESS-NEXT: .LBB5_4: ; %atomicrmw.start3132; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=13133; GFX7LESS-NEXT: s_waitcnt vmcnt(0)3134; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v23135; GFX7LESS-NEXT: s_waitcnt expcnt(0)3136; GFX7LESS-NEXT: v_mov_b32_e32 v4, v13137; GFX7LESS-NEXT: v_mov_b32_e32 v3, v03138; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc3139; GFX7LESS-NEXT: s_waitcnt vmcnt(0)3140; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v13141; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]3142; GFX7LESS-NEXT: v_mov_b32_e32 v1, v33143; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]3144; GFX7LESS-NEXT: s_cbranch_execnz .LBB5_43145; GFX7LESS-NEXT: .LBB5_5:3146; GFX7LESS-NEXT: s_endpgm3147;3148; GFX9-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3149; GFX9: ; %bb.0:3150; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03151; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13152; GFX9-NEXT: s_mov_b32 s38, -13153; GFX9-NEXT: s_mov_b32 s39, 0xe000003154; GFX9-NEXT: s_add_u32 s36, s36, s113155; GFX9-NEXT: s_addc_u32 s37, s37, 03156; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]3157; GFX9-NEXT: s_mov_b32 s12, s83158; GFX9-NEXT: s_add_u32 s8, s34, 443159; GFX9-NEXT: s_mov_b32 s13, s93160; GFX9-NEXT: s_addc_u32 s9, s35, 03161; GFX9-NEXT: s_getpc_b64 s[4:5]3162; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43163; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123164; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03165; GFX9-NEXT: s_mov_b32 s14, s103166; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]3167; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v23168; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v13169; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]3170; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]3171; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]3172; GFX9-NEXT: v_or3_b32 v31, v0, v1, v23173; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]3174; GFX9-NEXT: s_mov_b32 s32, 03175; GFX9-NEXT: s_waitcnt lgkmcnt(0)3176; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]3177; GFX9-NEXT: s_mov_b64 s[0:1], exec3178; GFX9-NEXT: v_bfrev_b32_e32 v2, 13179; GFX9-NEXT: .LBB5_1: ; %ComputeLoop3180; GFX9-NEXT: ; =>This Inner Loop Header: Depth=13181; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]3182; GFX9-NEXT: v_readlane_b32 s4, v0, s23183; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s23184; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3185; GFX9-NEXT: v_add_f32_e32 v2, s4, v23186; GFX9-NEXT: s_cbranch_scc1 .LBB5_13187; GFX9-NEXT: ; %bb.2: ; %ComputeEnd3188; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03189; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03190; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03191; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc3192; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3193; GFX9-NEXT: s_cbranch_execz .LBB5_53194; GFX9-NEXT: ; %bb.3:3195; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243196; GFX9-NEXT: v_mov_b32_e32 v3, 03197; GFX9-NEXT: s_mov_b64 s[2:3], 03198; GFX9-NEXT: s_waitcnt lgkmcnt(0)3199; GFX9-NEXT: global_load_dword v1, v3, s[0:1]3200; GFX9-NEXT: .LBB5_4: ; %atomicrmw.start3201; GFX9-NEXT: ; =>This Inner Loop Header: Depth=13202; GFX9-NEXT: s_waitcnt vmcnt(0)3203; GFX9-NEXT: v_sub_f32_e32 v0, v1, v23204; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3205; GFX9-NEXT: s_waitcnt vmcnt(0)3206; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13207; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3208; GFX9-NEXT: v_mov_b32_e32 v1, v03209; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]3210; GFX9-NEXT: s_cbranch_execnz .LBB5_43211; GFX9-NEXT: .LBB5_5:3212; GFX9-NEXT: s_endpgm3213;3214; GFX1064-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3215; GFX1064: ; %bb.0:3216; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03217; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13218; GFX1064-NEXT: s_mov_b32 s38, -13219; GFX1064-NEXT: s_mov_b32 s39, 0x31e160003220; GFX1064-NEXT: s_add_u32 s36, s36, s113221; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]3222; GFX1064-NEXT: s_addc_u32 s37, s37, 03223; GFX1064-NEXT: s_mov_b32 s12, s83224; GFX1064-NEXT: s_add_u32 s8, s34, 443225; GFX1064-NEXT: s_mov_b32 s13, s93226; GFX1064-NEXT: s_addc_u32 s9, s35, 03227; GFX1064-NEXT: s_getpc_b64 s[4:5]3228; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43229; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123230; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v23231; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03232; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v13233; GFX1064-NEXT: s_mov_b32 s14, s103234; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]3235; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]3236; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]3237; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v23238; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]3239; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]3240; GFX1064-NEXT: s_mov_b32 s32, 03241; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3242; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]3243; GFX1064-NEXT: v_bfrev_b32_e32 v2, 13244; GFX1064-NEXT: s_mov_b64 s[0:1], exec3245; GFX1064-NEXT: .LBB5_1: ; %ComputeLoop3246; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=13247; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]3248; GFX1064-NEXT: v_readlane_b32 s3, v0, s23249; GFX1064-NEXT: v_add_f32_e32 v2, s3, v23250; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s23251; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3252; GFX1064-NEXT: s_cbranch_scc1 .LBB5_13253; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd3254; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03255; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03256; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03257; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc3258; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3259; GFX1064-NEXT: s_cbranch_execz .LBB5_53260; GFX1064-NEXT: ; %bb.3:3261; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243262; GFX1064-NEXT: v_mov_b32_e32 v3, 03263; GFX1064-NEXT: s_mov_b64 s[2:3], 03264; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3265; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]3266; GFX1064-NEXT: .LBB5_4: ; %atomicrmw.start3267; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=13268; GFX1064-NEXT: s_waitcnt vmcnt(0)3269; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v23270; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3271; GFX1064-NEXT: s_waitcnt vmcnt(0)3272; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13273; GFX1064-NEXT: v_mov_b32_e32 v1, v03274; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3275; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]3276; GFX1064-NEXT: s_cbranch_execnz .LBB5_43277; GFX1064-NEXT: .LBB5_5:3278; GFX1064-NEXT: s_endpgm3279;3280; GFX1032-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3281; GFX1032: ; %bb.0:3282; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03283; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13284; GFX1032-NEXT: s_mov_b32 s38, -13285; GFX1032-NEXT: s_mov_b32 s39, 0x31c160003286; GFX1032-NEXT: s_add_u32 s36, s36, s113287; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]3288; GFX1032-NEXT: s_addc_u32 s37, s37, 03289; GFX1032-NEXT: s_mov_b32 s12, s83290; GFX1032-NEXT: s_add_u32 s8, s34, 443291; GFX1032-NEXT: s_mov_b32 s13, s93292; GFX1032-NEXT: s_addc_u32 s9, s35, 03293; GFX1032-NEXT: s_getpc_b64 s[4:5]3294; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43295; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123296; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v23297; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03298; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v13299; GFX1032-NEXT: s_mov_b32 s14, s103300; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]3301; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]3302; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]3303; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v23304; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]3305; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]3306; GFX1032-NEXT: s_mov_b32 s32, 03307; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3308; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]3309; GFX1032-NEXT: v_bfrev_b32_e32 v2, 13310; GFX1032-NEXT: s_mov_b32 s0, exec_lo3311; GFX1032-NEXT: .LBB5_1: ; %ComputeLoop3312; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=13313; GFX1032-NEXT: s_ff1_i32_b32 s1, s03314; GFX1032-NEXT: v_readlane_b32 s2, v0, s13315; GFX1032-NEXT: s_lshl_b32 s1, 1, s13316; GFX1032-NEXT: s_andn2_b32 s0, s0, s13317; GFX1032-NEXT: v_add_f32_e32 v2, s2, v23318; GFX1032-NEXT: s_cbranch_scc1 .LBB5_13319; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd3320; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03321; GFX1032-NEXT: s_mov_b32 s2, 03322; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03323; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo3324; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s03325; GFX1032-NEXT: s_cbranch_execz .LBB5_53326; GFX1032-NEXT: ; %bb.3:3327; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243328; GFX1032-NEXT: v_mov_b32_e32 v3, 03329; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3330; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]3331; GFX1032-NEXT: .LBB5_4: ; %atomicrmw.start3332; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=13333; GFX1032-NEXT: s_waitcnt vmcnt(0)3334; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v23335; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3336; GFX1032-NEXT: s_waitcnt vmcnt(0)3337; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13338; GFX1032-NEXT: v_mov_b32_e32 v1, v03339; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s23340; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s23341; GFX1032-NEXT: s_cbranch_execnz .LBB5_43342; GFX1032-NEXT: .LBB5_5:3343; GFX1032-NEXT: s_endpgm3344;3345; GFX1164-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3346; GFX1164: ; %bb.0:3347; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]3348; GFX1164-NEXT: s_mov_b32 s12, s83349; GFX1164-NEXT: s_add_u32 s8, s34, 443350; GFX1164-NEXT: s_mov_b32 s13, s93351; GFX1164-NEXT: s_addc_u32 s9, s35, 03352; GFX1164-NEXT: s_getpc_b64 s[4:5]3353; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43354; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123355; GFX1164-NEXT: v_mov_b32_e32 v31, v03356; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x03357; GFX1164-NEXT: s_mov_b32 s14, s103358; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]3359; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]3360; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]3361; GFX1164-NEXT: s_mov_b32 s32, 03362; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3363; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]3364; GFX1164-NEXT: v_bfrev_b32_e32 v2, 13365; GFX1164-NEXT: s_mov_b64 s[0:1], exec3366; GFX1164-NEXT: .LBB5_1: ; %ComputeLoop3367; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=13368; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3369; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]3370; GFX1164-NEXT: v_readlane_b32 s3, v0, s23371; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)3372; GFX1164-NEXT: v_add_f32_e32 v2, s3, v23373; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s23374; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]3375; GFX1164-NEXT: s_cbranch_scc1 .LBB5_13376; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd3377; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03378; GFX1164-NEXT: s_mov_b64 s[0:1], exec3379; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3380; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03381; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v03382; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3383; GFX1164-NEXT: s_cbranch_execz .LBB5_53384; GFX1164-NEXT: ; %bb.3:3385; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x243386; GFX1164-NEXT: v_mov_b32_e32 v3, 03387; GFX1164-NEXT: s_mov_b64 s[2:3], 03388; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3389; GFX1164-NEXT: global_load_b32 v1, v3, s[0:1]3390; GFX1164-NEXT: .LBB5_4: ; %atomicrmw.start3391; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=13392; GFX1164-NEXT: s_waitcnt vmcnt(0)3393; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v23394; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc3395; GFX1164-NEXT: s_waitcnt vmcnt(0)3396; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13397; GFX1164-NEXT: v_mov_b32_e32 v1, v03398; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3399; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3400; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]3401; GFX1164-NEXT: s_cbranch_execnz .LBB5_43402; GFX1164-NEXT: .LBB5_5:3403; GFX1164-NEXT: s_endpgm3404;3405; GFX1132-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3406; GFX1132: ; %bb.0:3407; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]3408; GFX1132-NEXT: v_mov_b32_e32 v31, v03409; GFX1132-NEXT: s_add_u32 s8, s34, 443410; GFX1132-NEXT: s_addc_u32 s9, s35, 03411; GFX1132-NEXT: s_getpc_b64 s[4:5]3412; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43413; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123414; GFX1132-NEXT: s_mov_b32 s12, s133415; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x03416; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]3417; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]3418; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]3419; GFX1132-NEXT: s_mov_b32 s13, s143420; GFX1132-NEXT: s_mov_b32 s14, s153421; GFX1132-NEXT: s_mov_b32 s32, 03422; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3423; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]3424; GFX1132-NEXT: v_bfrev_b32_e32 v2, 13425; GFX1132-NEXT: s_mov_b32 s0, exec_lo3426; GFX1132-NEXT: .LBB5_1: ; %ComputeLoop3427; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=13428; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3429; GFX1132-NEXT: s_ctz_i32_b32 s1, s03430; GFX1132-NEXT: v_readlane_b32 s2, v0, s13431; GFX1132-NEXT: s_lshl_b32 s1, 1, s13432; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3433; GFX1132-NEXT: s_and_not1_b32 s0, s0, s13434; GFX1132-NEXT: v_add_f32_e32 v2, s2, v23435; GFX1132-NEXT: s_cbranch_scc1 .LBB5_13436; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd3437; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03438; GFX1132-NEXT: s_mov_b32 s2, 03439; GFX1132-NEXT: s_mov_b32 s0, exec_lo3440; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)3441; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v03442; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s03443; GFX1132-NEXT: s_cbranch_execz .LBB5_53444; GFX1132-NEXT: ; %bb.3:3445; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x243446; GFX1132-NEXT: v_mov_b32_e32 v3, 03447; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3448; GFX1132-NEXT: global_load_b32 v1, v3, s[0:1]3449; GFX1132-NEXT: .LBB5_4: ; %atomicrmw.start3450; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=13451; GFX1132-NEXT: s_waitcnt vmcnt(0)3452; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v23453; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc3454; GFX1132-NEXT: s_waitcnt vmcnt(0)3455; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13456; GFX1132-NEXT: v_mov_b32_e32 v1, v03457; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s23458; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3459; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s23460; GFX1132-NEXT: s_cbranch_execnz .LBB5_43461; GFX1132-NEXT: .LBB5_5:3462; GFX1132-NEXT: s_endpgm3463;3464; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3465; GFX7LESS-DPP: ; %bb.0:3466; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 03467; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD03468; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD13469; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -13470; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0003471; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s113472; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 03473; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s103474; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s93475; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s83476; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3477; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x93478; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0003479; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -13480; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 443481; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 03482; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]3483; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43484; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123485; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03486; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23487; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13488; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v13489; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v23490; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3491; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3492; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]3493; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]3494; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)3495; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3496; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 03497; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 03498; GFX7LESS-DPP-NEXT: .LBB5_1: ; %atomicrmw.start3499; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=13500; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)3501; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v1, v2, v03502; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)3503; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v23504; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v13505; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc3506; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)3507; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v23508; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]3509; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v33510; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]3511; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB5_13512; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end3513; GFX7LESS-DPP-NEXT: s_endpgm3514;3515; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3516; GFX9-DPP: ; %bb.0:3517; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03518; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13519; GFX9-DPP-NEXT: s_mov_b32 s38, -13520; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000003521; GFX9-DPP-NEXT: s_add_u32 s36, s36, s113522; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 03523; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3524; GFX9-DPP-NEXT: s_mov_b32 s12, s83525; GFX9-DPP-NEXT: s_add_u32 s8, s34, 443526; GFX9-DPP-NEXT: s_mov_b32 s13, s93527; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 03528; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]3529; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43530; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123531; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03532; GFX9-DPP-NEXT: s_mov_b32 s14, s103533; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3534; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23535; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13536; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3537; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3538; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]3539; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v23540; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]3541; GFX9-DPP-NEXT: s_mov_b32 s32, 03542; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)3543; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3544; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 03545; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v13546; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13547; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 13548; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]3549; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13550; GFX9-DPP-NEXT: s_nop 13551; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf3552; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53553; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13554; GFX9-DPP-NEXT: s_nop 13555; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf3556; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53557; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13558; GFX9-DPP-NEXT: s_nop 13559; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf3560; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53561; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13562; GFX9-DPP-NEXT: s_nop 13563; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf3564; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53565; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13566; GFX9-DPP-NEXT: s_nop 13567; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf3568; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53569; GFX9-DPP-NEXT: s_nop 13570; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf3571; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v33572; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 633573; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]3574; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v13575; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc3576; GFX9-DPP-NEXT: s_cbranch_execz .LBB5_33577; GFX9-DPP-NEXT: ; %bb.1:3578; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243579; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 03580; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 03581; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)3582; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]3583; GFX9-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3584; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=13585; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)3586; GFX9-DPP-NEXT: v_subrev_f32_e32 v0, s4, v13587; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc3588; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)3589; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13590; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3591; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v03592; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]3593; GFX9-DPP-NEXT: s_cbranch_execnz .LBB5_23594; GFX9-DPP-NEXT: .LBB5_3:3595; GFX9-DPP-NEXT: s_endpgm3596;3597; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3598; GFX1064-DPP: ; %bb.0:3599; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03600; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13601; GFX1064-DPP-NEXT: s_mov_b32 s38, -13602; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160003603; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s113604; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3605; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 03606; GFX1064-DPP-NEXT: s_mov_b32 s12, s83607; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 443608; GFX1064-DPP-NEXT: s_mov_b32 s13, s93609; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 03610; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]3611; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43612; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123613; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23614; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03615; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13616; GFX1064-DPP-NEXT: s_mov_b32 s14, s103617; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3618; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3619; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3620; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v23621; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]3622; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]3623; GFX1064-DPP-NEXT: s_mov_b32 s32, 03624; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)3625; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3626; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13627; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 13628; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]3629; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 13630; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf3631; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v33632; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 13633; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf3634; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v53635; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 13636; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf3637; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v43638; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf3639; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v53640; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 03641; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v43642; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 03643; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 323644; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]3645; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03646; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13647; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s33648; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]3649; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03650; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v33651; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03652; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc3653; GFX1064-DPP-NEXT: s_cbranch_execz .LBB5_33654; GFX1064-DPP-NEXT: ; %bb.1:3655; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243656; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 03657; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 03658; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)3659; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]3660; GFX1064-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3661; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=13662; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)3663; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v23664; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc3665; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)3666; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13667; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v03668; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3669; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]3670; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB5_23671; GFX1064-DPP-NEXT: .LBB5_3:3672; GFX1064-DPP-NEXT: s_endpgm3673;3674; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3675; GFX1032-DPP: ; %bb.0:3676; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03677; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13678; GFX1032-DPP-NEXT: s_mov_b32 s38, -13679; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160003680; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s113681; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3682; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 03683; GFX1032-DPP-NEXT: s_mov_b32 s12, s83684; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 443685; GFX1032-DPP-NEXT: s_mov_b32 s13, s93686; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 03687; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]3688; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43689; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123690; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23691; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03692; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13693; GFX1032-DPP-NEXT: s_mov_b32 s14, s103694; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3695; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3696; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3697; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v23698; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]3699; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]3700; GFX1032-DPP-NEXT: s_mov_b32 s32, 03701; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)3702; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3703; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -13704; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 13705; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s03706; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 13707; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf3708; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v33709; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 13710; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf3711; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v53712; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 13713; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf3714; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v43715; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf3716; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v53717; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 03718; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v43719; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s03720; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03721; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v33722; GFX1032-DPP-NEXT: s_mov_b32 s2, 03723; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03724; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo3725; GFX1032-DPP-NEXT: s_cbranch_execz .LBB5_33726; GFX1032-DPP-NEXT: ; %bb.1:3727; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243728; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 03729; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)3730; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]3731; GFX1032-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3732; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=13733; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)3734; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v23735; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc3736; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)3737; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13738; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v03739; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s23740; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s23741; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB5_23742; GFX1032-DPP-NEXT: .LBB5_3:3743; GFX1032-DPP-NEXT: s_endpgm3744;3745; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3746; GFX1164-DPP: ; %bb.0:3747; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3748; GFX1164-DPP-NEXT: s_mov_b32 s12, s83749; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 443750; GFX1164-DPP-NEXT: s_mov_b32 s13, s93751; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 03752; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]3753; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43754; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123755; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v03756; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x03757; GFX1164-DPP-NEXT: s_mov_b32 s14, s103758; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3759; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3760; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3761; GFX1164-DPP-NEXT: s_mov_b32 s32, 03762; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)3763; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3764; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13765; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 13766; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]3767; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 13768; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3769; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf3770; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v13771; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 13772; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3773; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3774; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v33775; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 13776; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3777; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3778; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v23779; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3780; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3781; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v33782; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3783; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 03784; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v23785; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)3786; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v13787; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]3788; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03789; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13790; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)3791; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v23792; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]3793; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)3794; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v03795; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v13796; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec3797; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)3798; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v43799; GFX1164-DPP-NEXT: s_cbranch_execz .LBB5_33800; GFX1164-DPP-NEXT: ; %bb.1:3801; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x243802; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 03803; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 03804; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)3805; GFX1164-DPP-NEXT: global_load_b32 v5, v6, s[0:1]3806; GFX1164-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3807; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=13808; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)3809; GFX1164-DPP-NEXT: v_sub_f32_e32 v4, v5, v03810; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc3811; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)3812; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v53813; GFX1164-DPP-NEXT: v_mov_b32_e32 v5, v43814; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3815; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3816; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]3817; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB5_23818; GFX1164-DPP-NEXT: .LBB5_3:3819; GFX1164-DPP-NEXT: s_endpgm3820;3821; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe:3822; GFX1132-DPP: ; %bb.0:3823; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3824; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v03825; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 443826; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 03827; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]3828; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43829; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123830; GFX1132-DPP-NEXT: s_mov_b32 s12, s133831; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x03832; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3833; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3834; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3835; GFX1132-DPP-NEXT: s_mov_b32 s13, s143836; GFX1132-DPP-NEXT: s_mov_b32 s14, s153837; GFX1132-DPP-NEXT: s_mov_b32 s32, 03838; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)3839; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3840; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -13841; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 13842; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s03843; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 13844; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3845; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf3846; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v13847; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 13848; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3849; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3850; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v33851; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 13852; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3853; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3854; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v23855; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3856; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3857; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v33858; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3859; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 03860; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v23861; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s03862; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)3863; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 03864; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v13865; GFX1132-DPP-NEXT: s_mov_b32 s2, 03866; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo3867; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)3868; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v43869; GFX1132-DPP-NEXT: s_cbranch_execz .LBB5_33870; GFX1132-DPP-NEXT: ; %bb.1:3871; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x243872; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 03873; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)3874; GFX1132-DPP-NEXT: global_load_b32 v5, v6, s[0:1]3875; GFX1132-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3876; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=13877; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)3878; GFX1132-DPP-NEXT: v_sub_f32_e32 v4, v5, v03879; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc3880; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)3881; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v53882; GFX1132-DPP-NEXT: v_mov_b32_e32 v5, v43883; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s23884; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3885; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s23886; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB5_23887; GFX1132-DPP-NEXT: .LBB5_3:3888; GFX1132-DPP-NEXT: s_endpgm3889 %divValue = call float @div.float.value()3890 %result = atomicrmw fsub ptr addrspace(1) %ptr, float %divValue syncscope("agent") monotonic3891 ret void3892}3893 3894 3895define amdgpu_kernel void @global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {3896; GFX7LESS-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:3897; GFX7LESS: ; %bb.0:3898; GFX7LESS-NEXT: s_mov_b32 s32, 03899; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03900; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13901; GFX7LESS-NEXT: s_mov_b32 s38, -13902; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0003903; GFX7LESS-NEXT: s_add_u32 s36, s36, s113904; GFX7LESS-NEXT: s_addc_u32 s37, s37, 03905; GFX7LESS-NEXT: s_mov_b32 s14, s103906; GFX7LESS-NEXT: s_mov_b32 s13, s93907; GFX7LESS-NEXT: s_mov_b32 s12, s83908; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]3909; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]3910; GFX7LESS-NEXT: s_add_u32 s8, s34, 443911; GFX7LESS-NEXT: s_addc_u32 s9, s35, 03912; GFX7LESS-NEXT: s_getpc_b64 s[4:5]3913; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43914; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123915; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03916; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v23917; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v13918; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v13919; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v23920; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]3921; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]3922; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]3923; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]3924; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3925; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]3926; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec3927; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 13928; GFX7LESS-NEXT: .LBB6_1: ; %ComputeLoop3929; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=13930; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]3931; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s23932; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s23933; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3934; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 03935; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]3936; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v23937; GFX7LESS-NEXT: s_cbranch_vccnz .LBB6_13938; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd3939; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 03940; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v03941; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03942; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc3943; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3944; GFX7LESS-NEXT: s_cbranch_execz .LBB6_53945; GFX7LESS-NEXT: ; %bb.3:3946; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x93947; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0003948; GFX7LESS-NEXT: s_mov_b32 s2, -13949; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3950; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 03951; GFX7LESS-NEXT: s_mov_b64 s[4:5], 03952; GFX7LESS-NEXT: .LBB6_4: ; %atomicrmw.start3953; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=13954; GFX7LESS-NEXT: s_waitcnt vmcnt(0)3955; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v23956; GFX7LESS-NEXT: s_waitcnt expcnt(0)3957; GFX7LESS-NEXT: v_mov_b32_e32 v4, v13958; GFX7LESS-NEXT: v_mov_b32_e32 v3, v03959; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc3960; GFX7LESS-NEXT: s_waitcnt vmcnt(0)3961; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v13962; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]3963; GFX7LESS-NEXT: v_mov_b32_e32 v1, v33964; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]3965; GFX7LESS-NEXT: s_cbranch_execnz .LBB6_43966; GFX7LESS-NEXT: .LBB6_5:3967; GFX7LESS-NEXT: s_endpgm3968;3969; GFX9-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:3970; GFX9: ; %bb.0:3971; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03972; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13973; GFX9-NEXT: s_mov_b32 s38, -13974; GFX9-NEXT: s_mov_b32 s39, 0xe000003975; GFX9-NEXT: s_add_u32 s36, s36, s113976; GFX9-NEXT: s_addc_u32 s37, s37, 03977; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]3978; GFX9-NEXT: s_mov_b32 s12, s83979; GFX9-NEXT: s_add_u32 s8, s34, 443980; GFX9-NEXT: s_mov_b32 s13, s93981; GFX9-NEXT: s_addc_u32 s9, s35, 03982; GFX9-NEXT: s_getpc_b64 s[4:5]3983; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43984; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123985; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03986; GFX9-NEXT: s_mov_b32 s14, s103987; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]3988; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v23989; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v13990; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]3991; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]3992; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]3993; GFX9-NEXT: v_or3_b32 v31, v0, v1, v23994; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]3995; GFX9-NEXT: s_mov_b32 s32, 03996; GFX9-NEXT: s_waitcnt lgkmcnt(0)3997; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]3998; GFX9-NEXT: s_mov_b64 s[0:1], exec3999; GFX9-NEXT: v_bfrev_b32_e32 v2, 14000; GFX9-NEXT: .LBB6_1: ; %ComputeLoop4001; GFX9-NEXT: ; =>This Inner Loop Header: Depth=14002; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]4003; GFX9-NEXT: v_readlane_b32 s4, v0, s24004; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s24005; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]4006; GFX9-NEXT: v_add_f32_e32 v2, s4, v24007; GFX9-NEXT: s_cbranch_scc1 .LBB6_14008; GFX9-NEXT: ; %bb.2: ; %ComputeEnd4009; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04010; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04011; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04012; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc4013; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4014; GFX9-NEXT: s_cbranch_execz .LBB6_54015; GFX9-NEXT: ; %bb.3:4016; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244017; GFX9-NEXT: v_mov_b32_e32 v3, 04018; GFX9-NEXT: s_mov_b64 s[2:3], 04019; GFX9-NEXT: s_waitcnt lgkmcnt(0)4020; GFX9-NEXT: global_load_dword v1, v3, s[0:1]4021; GFX9-NEXT: .LBB6_4: ; %atomicrmw.start4022; GFX9-NEXT: ; =>This Inner Loop Header: Depth=14023; GFX9-NEXT: s_waitcnt vmcnt(0)4024; GFX9-NEXT: v_sub_f32_e32 v0, v1, v24025; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4026; GFX9-NEXT: s_waitcnt vmcnt(0)4027; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14028; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4029; GFX9-NEXT: v_mov_b32_e32 v1, v04030; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]4031; GFX9-NEXT: s_cbranch_execnz .LBB6_44032; GFX9-NEXT: .LBB6_5:4033; GFX9-NEXT: s_endpgm4034;4035; GFX1064-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4036; GFX1064: ; %bb.0:4037; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04038; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14039; GFX1064-NEXT: s_mov_b32 s38, -14040; GFX1064-NEXT: s_mov_b32 s39, 0x31e160004041; GFX1064-NEXT: s_add_u32 s36, s36, s114042; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]4043; GFX1064-NEXT: s_addc_u32 s37, s37, 04044; GFX1064-NEXT: s_mov_b32 s12, s84045; GFX1064-NEXT: s_add_u32 s8, s34, 444046; GFX1064-NEXT: s_mov_b32 s13, s94047; GFX1064-NEXT: s_addc_u32 s9, s35, 04048; GFX1064-NEXT: s_getpc_b64 s[4:5]4049; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44050; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124051; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v24052; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04053; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v14054; GFX1064-NEXT: s_mov_b32 s14, s104055; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]4056; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]4057; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]4058; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v24059; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]4060; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]4061; GFX1064-NEXT: s_mov_b32 s32, 04062; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4063; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]4064; GFX1064-NEXT: v_bfrev_b32_e32 v2, 14065; GFX1064-NEXT: s_mov_b64 s[0:1], exec4066; GFX1064-NEXT: .LBB6_1: ; %ComputeLoop4067; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=14068; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]4069; GFX1064-NEXT: v_readlane_b32 s3, v0, s24070; GFX1064-NEXT: v_add_f32_e32 v2, s3, v24071; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s24072; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]4073; GFX1064-NEXT: s_cbranch_scc1 .LBB6_14074; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd4075; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04076; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04077; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04078; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc4079; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4080; GFX1064-NEXT: s_cbranch_execz .LBB6_54081; GFX1064-NEXT: ; %bb.3:4082; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244083; GFX1064-NEXT: v_mov_b32_e32 v3, 04084; GFX1064-NEXT: s_mov_b64 s[2:3], 04085; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4086; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]4087; GFX1064-NEXT: .LBB6_4: ; %atomicrmw.start4088; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=14089; GFX1064-NEXT: s_waitcnt vmcnt(0)4090; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v24091; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4092; GFX1064-NEXT: s_waitcnt vmcnt(0)4093; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14094; GFX1064-NEXT: v_mov_b32_e32 v1, v04095; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4096; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]4097; GFX1064-NEXT: s_cbranch_execnz .LBB6_44098; GFX1064-NEXT: .LBB6_5:4099; GFX1064-NEXT: s_endpgm4100;4101; GFX1032-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4102; GFX1032: ; %bb.0:4103; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04104; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14105; GFX1032-NEXT: s_mov_b32 s38, -14106; GFX1032-NEXT: s_mov_b32 s39, 0x31c160004107; GFX1032-NEXT: s_add_u32 s36, s36, s114108; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]4109; GFX1032-NEXT: s_addc_u32 s37, s37, 04110; GFX1032-NEXT: s_mov_b32 s12, s84111; GFX1032-NEXT: s_add_u32 s8, s34, 444112; GFX1032-NEXT: s_mov_b32 s13, s94113; GFX1032-NEXT: s_addc_u32 s9, s35, 04114; GFX1032-NEXT: s_getpc_b64 s[4:5]4115; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44116; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124117; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v24118; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04119; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v14120; GFX1032-NEXT: s_mov_b32 s14, s104121; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]4122; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]4123; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]4124; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v24125; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]4126; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]4127; GFX1032-NEXT: s_mov_b32 s32, 04128; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4129; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]4130; GFX1032-NEXT: v_bfrev_b32_e32 v2, 14131; GFX1032-NEXT: s_mov_b32 s0, exec_lo4132; GFX1032-NEXT: .LBB6_1: ; %ComputeLoop4133; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=14134; GFX1032-NEXT: s_ff1_i32_b32 s1, s04135; GFX1032-NEXT: v_readlane_b32 s2, v0, s14136; GFX1032-NEXT: s_lshl_b32 s1, 1, s14137; GFX1032-NEXT: s_andn2_b32 s0, s0, s14138; GFX1032-NEXT: v_add_f32_e32 v2, s2, v24139; GFX1032-NEXT: s_cbranch_scc1 .LBB6_14140; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd4141; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04142; GFX1032-NEXT: s_mov_b32 s2, 04143; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04144; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo4145; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s04146; GFX1032-NEXT: s_cbranch_execz .LBB6_54147; GFX1032-NEXT: ; %bb.3:4148; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244149; GFX1032-NEXT: v_mov_b32_e32 v3, 04150; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4151; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]4152; GFX1032-NEXT: .LBB6_4: ; %atomicrmw.start4153; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=14154; GFX1032-NEXT: s_waitcnt vmcnt(0)4155; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v24156; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4157; GFX1032-NEXT: s_waitcnt vmcnt(0)4158; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14159; GFX1032-NEXT: v_mov_b32_e32 v1, v04160; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s24161; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s24162; GFX1032-NEXT: s_cbranch_execnz .LBB6_44163; GFX1032-NEXT: .LBB6_5:4164; GFX1032-NEXT: s_endpgm4165;4166; GFX1164-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4167; GFX1164: ; %bb.0:4168; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]4169; GFX1164-NEXT: s_mov_b32 s12, s84170; GFX1164-NEXT: s_add_u32 s8, s34, 444171; GFX1164-NEXT: s_mov_b32 s13, s94172; GFX1164-NEXT: s_addc_u32 s9, s35, 04173; GFX1164-NEXT: s_getpc_b64 s[4:5]4174; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44175; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124176; GFX1164-NEXT: v_mov_b32_e32 v31, v04177; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x04178; GFX1164-NEXT: s_mov_b32 s14, s104179; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]4180; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]4181; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]4182; GFX1164-NEXT: s_mov_b32 s32, 04183; GFX1164-NEXT: s_waitcnt lgkmcnt(0)4184; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]4185; GFX1164-NEXT: v_bfrev_b32_e32 v2, 14186; GFX1164-NEXT: s_mov_b64 s[0:1], exec4187; GFX1164-NEXT: .LBB6_1: ; %ComputeLoop4188; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=14189; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)4190; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]4191; GFX1164-NEXT: v_readlane_b32 s3, v0, s24192; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4193; GFX1164-NEXT: v_add_f32_e32 v2, s3, v24194; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s24195; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]4196; GFX1164-NEXT: s_cbranch_scc1 .LBB6_14197; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd4198; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04199; GFX1164-NEXT: s_mov_b64 s[0:1], exec4200; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4201; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04202; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v04203; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4204; GFX1164-NEXT: s_cbranch_execz .LBB6_54205; GFX1164-NEXT: ; %bb.3:4206; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x244207; GFX1164-NEXT: v_mov_b32_e32 v3, 04208; GFX1164-NEXT: s_mov_b64 s[2:3], 04209; GFX1164-NEXT: s_waitcnt lgkmcnt(0)4210; GFX1164-NEXT: global_load_b32 v1, v3, s[0:1]4211; GFX1164-NEXT: .LBB6_4: ; %atomicrmw.start4212; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=14213; GFX1164-NEXT: s_waitcnt vmcnt(0)4214; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v24215; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4216; GFX1164-NEXT: s_waitcnt vmcnt(0)4217; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14218; GFX1164-NEXT: v_mov_b32_e32 v1, v04219; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4220; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4221; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]4222; GFX1164-NEXT: s_cbranch_execnz .LBB6_44223; GFX1164-NEXT: .LBB6_5:4224; GFX1164-NEXT: s_endpgm4225;4226; GFX1132-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4227; GFX1132: ; %bb.0:4228; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]4229; GFX1132-NEXT: v_mov_b32_e32 v31, v04230; GFX1132-NEXT: s_add_u32 s8, s34, 444231; GFX1132-NEXT: s_addc_u32 s9, s35, 04232; GFX1132-NEXT: s_getpc_b64 s[4:5]4233; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44234; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124235; GFX1132-NEXT: s_mov_b32 s12, s134236; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x04237; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]4238; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]4239; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]4240; GFX1132-NEXT: s_mov_b32 s13, s144241; GFX1132-NEXT: s_mov_b32 s14, s154242; GFX1132-NEXT: s_mov_b32 s32, 04243; GFX1132-NEXT: s_waitcnt lgkmcnt(0)4244; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]4245; GFX1132-NEXT: v_bfrev_b32_e32 v2, 14246; GFX1132-NEXT: s_mov_b32 s0, exec_lo4247; GFX1132-NEXT: .LBB6_1: ; %ComputeLoop4248; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=14249; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)4250; GFX1132-NEXT: s_ctz_i32_b32 s1, s04251; GFX1132-NEXT: v_readlane_b32 s2, v0, s14252; GFX1132-NEXT: s_lshl_b32 s1, 1, s14253; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4254; GFX1132-NEXT: s_and_not1_b32 s0, s0, s14255; GFX1132-NEXT: v_add_f32_e32 v2, s2, v24256; GFX1132-NEXT: s_cbranch_scc1 .LBB6_14257; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd4258; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04259; GFX1132-NEXT: s_mov_b32 s2, 04260; GFX1132-NEXT: s_mov_b32 s0, exec_lo4261; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)4262; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v04263; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s04264; GFX1132-NEXT: s_cbranch_execz .LBB6_54265; GFX1132-NEXT: ; %bb.3:4266; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x244267; GFX1132-NEXT: v_mov_b32_e32 v3, 04268; GFX1132-NEXT: s_waitcnt lgkmcnt(0)4269; GFX1132-NEXT: global_load_b32 v1, v3, s[0:1]4270; GFX1132-NEXT: .LBB6_4: ; %atomicrmw.start4271; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=14272; GFX1132-NEXT: s_waitcnt vmcnt(0)4273; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v24274; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4275; GFX1132-NEXT: s_waitcnt vmcnt(0)4276; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14277; GFX1132-NEXT: v_mov_b32_e32 v1, v04278; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s24279; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4280; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s24281; GFX1132-NEXT: s_cbranch_execnz .LBB6_44282; GFX1132-NEXT: .LBB6_5:4283; GFX1132-NEXT: s_endpgm4284;4285; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4286; GFX7LESS-DPP: ; %bb.0:4287; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 04288; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD04289; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD14290; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -14291; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0004292; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s114293; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 04294; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s104295; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s94296; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s84297; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4298; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x94299; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0004300; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -14301; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 444302; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 04303; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]4304; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44305; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124306; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04307; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24308; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14309; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v14310; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v24311; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4312; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4313; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]4314; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]4315; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)4316; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4317; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 04318; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 04319; GFX7LESS-DPP-NEXT: .LBB6_1: ; %atomicrmw.start4320; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=14321; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)4322; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v1, v2, v04323; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)4324; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v24325; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v14326; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc4327; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)4328; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v24329; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]4330; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v34331; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]4332; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB6_14333; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end4334; GFX7LESS-DPP-NEXT: s_endpgm4335;4336; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4337; GFX9-DPP: ; %bb.0:4338; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04339; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14340; GFX9-DPP-NEXT: s_mov_b32 s38, -14341; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000004342; GFX9-DPP-NEXT: s_add_u32 s36, s36, s114343; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 04344; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4345; GFX9-DPP-NEXT: s_mov_b32 s12, s84346; GFX9-DPP-NEXT: s_add_u32 s8, s34, 444347; GFX9-DPP-NEXT: s_mov_b32 s13, s94348; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 04349; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]4350; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44351; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124352; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04353; GFX9-DPP-NEXT: s_mov_b32 s14, s104354; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4355; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24356; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14357; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4358; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4359; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]4360; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v24361; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]4362; GFX9-DPP-NEXT: s_mov_b32 s32, 04363; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)4364; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4365; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 04366; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v14367; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14368; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 14369; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]4370; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14371; GFX9-DPP-NEXT: s_nop 14372; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf4373; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54374; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14375; GFX9-DPP-NEXT: s_nop 14376; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf4377; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54378; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14379; GFX9-DPP-NEXT: s_nop 14380; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf4381; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54382; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14383; GFX9-DPP-NEXT: s_nop 14384; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf4385; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54386; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14387; GFX9-DPP-NEXT: s_nop 14388; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf4389; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54390; GFX9-DPP-NEXT: s_nop 14391; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf4392; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v34393; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 634394; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]4395; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v14396; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4397; GFX9-DPP-NEXT: s_cbranch_execz .LBB6_34398; GFX9-DPP-NEXT: ; %bb.1:4399; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244400; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 04401; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 04402; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)4403; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]4404; GFX9-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4405; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=14406; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)4407; GFX9-DPP-NEXT: v_subrev_f32_e32 v0, s4, v14408; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc4409; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)4410; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14411; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4412; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v04413; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]4414; GFX9-DPP-NEXT: s_cbranch_execnz .LBB6_24415; GFX9-DPP-NEXT: .LBB6_3:4416; GFX9-DPP-NEXT: s_endpgm4417;4418; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4419; GFX1064-DPP: ; %bb.0:4420; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04421; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14422; GFX1064-DPP-NEXT: s_mov_b32 s38, -14423; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160004424; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s114425; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4426; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 04427; GFX1064-DPP-NEXT: s_mov_b32 s12, s84428; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 444429; GFX1064-DPP-NEXT: s_mov_b32 s13, s94430; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 04431; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]4432; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44433; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124434; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24435; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04436; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14437; GFX1064-DPP-NEXT: s_mov_b32 s14, s104438; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4439; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4440; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4441; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v24442; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]4443; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]4444; GFX1064-DPP-NEXT: s_mov_b32 s32, 04445; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)4446; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4447; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14448; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 14449; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]4450; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 14451; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf4452; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v34453; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 14454; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf4455; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v54456; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 14457; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf4458; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v44459; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf4460; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v54461; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 04462; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v44463; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 04464; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 324465; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]4466; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04467; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14468; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s34469; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]4470; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04471; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v34472; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04473; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4474; GFX1064-DPP-NEXT: s_cbranch_execz .LBB6_34475; GFX1064-DPP-NEXT: ; %bb.1:4476; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244477; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 04478; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 04479; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)4480; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]4481; GFX1064-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4482; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=14483; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)4484; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v24485; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc4486; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)4487; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14488; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v04489; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4490; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]4491; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB6_24492; GFX1064-DPP-NEXT: .LBB6_3:4493; GFX1064-DPP-NEXT: s_endpgm4494;4495; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4496; GFX1032-DPP: ; %bb.0:4497; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04498; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14499; GFX1032-DPP-NEXT: s_mov_b32 s38, -14500; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160004501; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s114502; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4503; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 04504; GFX1032-DPP-NEXT: s_mov_b32 s12, s84505; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 444506; GFX1032-DPP-NEXT: s_mov_b32 s13, s94507; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 04508; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]4509; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44510; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124511; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24512; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04513; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14514; GFX1032-DPP-NEXT: s_mov_b32 s14, s104515; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4516; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4517; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4518; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v24519; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]4520; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]4521; GFX1032-DPP-NEXT: s_mov_b32 s32, 04522; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)4523; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4524; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -14525; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 14526; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s04527; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 14528; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf4529; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v34530; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 14531; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf4532; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v54533; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 14534; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf4535; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v44536; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf4537; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v54538; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 04539; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v44540; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s04541; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04542; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v34543; GFX1032-DPP-NEXT: s_mov_b32 s2, 04544; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04545; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo4546; GFX1032-DPP-NEXT: s_cbranch_execz .LBB6_34547; GFX1032-DPP-NEXT: ; %bb.1:4548; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244549; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 04550; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)4551; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]4552; GFX1032-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4553; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=14554; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)4555; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v24556; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc4557; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)4558; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14559; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v04560; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s24561; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s24562; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB6_24563; GFX1032-DPP-NEXT: .LBB6_3:4564; GFX1032-DPP-NEXT: s_endpgm4565;4566; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4567; GFX1164-DPP: ; %bb.0:4568; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4569; GFX1164-DPP-NEXT: s_mov_b32 s12, s84570; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 444571; GFX1164-DPP-NEXT: s_mov_b32 s13, s94572; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 04573; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]4574; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44575; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124576; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v04577; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x04578; GFX1164-DPP-NEXT: s_mov_b32 s14, s104579; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4580; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4581; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4582; GFX1164-DPP-NEXT: s_mov_b32 s32, 04583; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)4584; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4585; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14586; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 14587; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]4588; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 14589; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4590; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf4591; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v14592; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 14593; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4594; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf4595; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v34596; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 14597; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4598; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf4599; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v24600; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4601; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf4602; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v34603; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4604; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04605; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v24606; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4607; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v14608; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]4609; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04610; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14611; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)4612; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v24613; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]4614; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)4615; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v04616; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v14617; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec4618; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)4619; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v44620; GFX1164-DPP-NEXT: s_cbranch_execz .LBB6_34621; GFX1164-DPP-NEXT: ; %bb.1:4622; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x244623; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 04624; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 04625; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)4626; GFX1164-DPP-NEXT: global_load_b32 v5, v6, s[0:1]4627; GFX1164-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4628; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=14629; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)4630; GFX1164-DPP-NEXT: v_sub_f32_e32 v4, v5, v04631; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc4632; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)4633; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v54634; GFX1164-DPP-NEXT: v_mov_b32_e32 v5, v44635; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4636; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4637; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]4638; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB6_24639; GFX1164-DPP-NEXT: .LBB6_3:4640; GFX1164-DPP-NEXT: s_endpgm4641;4642; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_div_value_agent_scope_unsafe_structfp:4643; GFX1132-DPP: ; %bb.0:4644; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4645; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v04646; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 444647; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 04648; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]4649; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44650; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124651; GFX1132-DPP-NEXT: s_mov_b32 s12, s134652; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x04653; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4654; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4655; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4656; GFX1132-DPP-NEXT: s_mov_b32 s13, s144657; GFX1132-DPP-NEXT: s_mov_b32 s14, s154658; GFX1132-DPP-NEXT: s_mov_b32 s32, 04659; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)4660; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4661; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -14662; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 14663; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s04664; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 14665; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4666; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf4667; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v14668; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 14669; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4670; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf4671; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v34672; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 14673; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4674; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf4675; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v24676; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4677; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf4678; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v34679; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4680; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04681; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v24682; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s04683; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)4684; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 04685; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v14686; GFX1132-DPP-NEXT: s_mov_b32 s2, 04687; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo4688; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)4689; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v44690; GFX1132-DPP-NEXT: s_cbranch_execz .LBB6_34691; GFX1132-DPP-NEXT: ; %bb.1:4692; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x244693; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 04694; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)4695; GFX1132-DPP-NEXT: global_load_b32 v5, v6, s[0:1]4696; GFX1132-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4697; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=14698; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)4699; GFX1132-DPP-NEXT: v_sub_f32_e32 v4, v5, v04700; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc4701; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)4702; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v54703; GFX1132-DPP-NEXT: v_mov_b32_e32 v5, v44704; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s24705; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4706; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s24707; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB6_24708; GFX1132-DPP-NEXT: .LBB6_3:4709; GFX1132-DPP-NEXT: s_endpgm4710 %divValue = call float @div.float.value() strictfp4711 %result = atomicrmw fsub ptr addrspace(1) %ptr, float %divValue syncscope("agent") monotonic4712 ret void4713}4714 4715define amdgpu_kernel void @global_atomic_fsub_uni_address_uni_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {4716; GFX7LESS-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4717; GFX7LESS: ; %bb.0:4718; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04719; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14720; GFX7LESS-NEXT: s_mov_b32 s14, -14721; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0004722; GFX7LESS-NEXT: s_add_u32 s12, s12, s114723; GFX7LESS-NEXT: s_addc_u32 s13, s13, 04724; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec4725; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 04726; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v04727; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04728; GFX7LESS-NEXT: s_and_saveexec_b64 s[2:3], vcc4729; GFX7LESS-NEXT: s_cbranch_execz .LBB7_34730; GFX7LESS-NEXT: ; %bb.1:4731; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[0:1]4732; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x94733; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000004734; GFX7LESS-NEXT: v_mov_b32_e32 v0, 04735; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000004736; GFX7LESS-NEXT: s_mov_b64 s[4:5], 04737; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4738; GFX7LESS-NEXT: s_load_dword s2, s[0:1], 0x04739; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0004740; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]4741; GFX7LESS-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4742; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v04743; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4744; GFX7LESS-NEXT: v_mov_b32_e32 v1, s24745; GFX7LESS-NEXT: s_mov_b32 s2, -14746; GFX7LESS-NEXT: .LBB7_2: ; %atomicrmw.start4747; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=14748; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v24749; GFX7LESS-NEXT: s_waitcnt expcnt(0)4750; GFX7LESS-NEXT: v_mov_b32_e32 v4, v14751; GFX7LESS-NEXT: v_mov_b32_e32 v3, v04752; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc4753; GFX7LESS-NEXT: s_waitcnt vmcnt(0)4754; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v14755; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]4756; GFX7LESS-NEXT: v_mov_b32_e32 v1, v34757; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]4758; GFX7LESS-NEXT: s_cbranch_execnz .LBB7_24759; GFX7LESS-NEXT: .LBB7_3:4760; GFX7LESS-NEXT: s_endpgm4761;4762; GFX9-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4763; GFX9: ; %bb.0:4764; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04765; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14766; GFX9-NEXT: s_mov_b32 s14, -14767; GFX9-NEXT: s_mov_b64 s[0:1], exec4768; GFX9-NEXT: s_mov_b32 s15, 0xe000004769; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04770; GFX9-NEXT: s_add_u32 s12, s12, s114771; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v04772; GFX9-NEXT: s_addc_u32 s13, s13, 04773; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04774; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc4775; GFX9-NEXT: s_cbranch_execz .LBB7_34776; GFX9-NEXT: ; %bb.1:4777; GFX9-NEXT: v_mov_b32_e32 v0, 04778; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]4779; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000004780; GFX9-NEXT: s_mov_b32 s1, 0x433000004781; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]4782; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244783; GFX9-NEXT: s_mov_b64 s[2:3], 04784; GFX9-NEXT: v_mov_b32_e32 v3, 04785; GFX9-NEXT: s_waitcnt lgkmcnt(0)4786; GFX9-NEXT: s_load_dword s4, s[0:1], 0x04787; GFX9-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4788; GFX9-NEXT: s_waitcnt lgkmcnt(0)4789; GFX9-NEXT: v_mov_b32_e32 v1, s44790; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v04791; GFX9-NEXT: .LBB7_2: ; %atomicrmw.start4792; GFX9-NEXT: ; =>This Inner Loop Header: Depth=14793; GFX9-NEXT: v_sub_f32_e32 v0, v1, v24794; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4795; GFX9-NEXT: s_waitcnt vmcnt(0)4796; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14797; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4798; GFX9-NEXT: v_mov_b32_e32 v1, v04799; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]4800; GFX9-NEXT: s_cbranch_execnz .LBB7_24801; GFX9-NEXT: .LBB7_3:4802; GFX9-NEXT: s_endpgm4803;4804; GFX1064-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4805; GFX1064: ; %bb.0:4806; GFX1064-NEXT: s_mov_b64 s[0:1], exec4807; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04808; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04809; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14810; GFX1064-NEXT: s_mov_b32 s14, -14811; GFX1064-NEXT: s_mov_b32 s15, 0x31e160004812; GFX1064-NEXT: s_add_u32 s12, s12, s114813; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v04814; GFX1064-NEXT: s_addc_u32 s13, s13, 04815; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04816; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc4817; GFX1064-NEXT: s_cbranch_execz .LBB7_34818; GFX1064-NEXT: ; %bb.1:4819; GFX1064-NEXT: s_bcnt1_i32_b64 s0, s[0:1]4820; GFX1064-NEXT: s_mov_b32 s1, 0x433000004821; GFX1064-NEXT: v_mov_b32_e32 v3, 04822; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]4823; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244824; GFX1064-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4825; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4826; GFX1064-NEXT: s_load_dword s2, s[0:1], 0x04827; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4828; GFX1064-NEXT: v_mov_b32_e32 v1, s24829; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v04830; GFX1064-NEXT: s_mov_b64 s[2:3], 04831; GFX1064-NEXT: .LBB7_2: ; %atomicrmw.start4832; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=14833; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v24834; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4835; GFX1064-NEXT: s_waitcnt vmcnt(0)4836; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14837; GFX1064-NEXT: v_mov_b32_e32 v1, v04838; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4839; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]4840; GFX1064-NEXT: s_cbranch_execnz .LBB7_24841; GFX1064-NEXT: .LBB7_3:4842; GFX1064-NEXT: s_endpgm4843;4844; GFX1032-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4845; GFX1032: ; %bb.0:4846; GFX1032-NEXT: s_mov_b32 s0, exec_lo4847; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04848; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04849; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14850; GFX1032-NEXT: s_mov_b32 s14, -14851; GFX1032-NEXT: s_mov_b32 s15, 0x31c160004852; GFX1032-NEXT: s_add_u32 s12, s12, s114853; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04854; GFX1032-NEXT: s_addc_u32 s13, s13, 04855; GFX1032-NEXT: s_mov_b32 s2, 04856; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo4857; GFX1032-NEXT: s_cbranch_execz .LBB7_34858; GFX1032-NEXT: ; %bb.1:4859; GFX1032-NEXT: s_bcnt1_i32_b32 s0, s04860; GFX1032-NEXT: s_mov_b32 s1, 0x433000004861; GFX1032-NEXT: v_mov_b32_e32 v3, 04862; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]4863; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244864; GFX1032-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4865; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4866; GFX1032-NEXT: s_load_dword s3, s[0:1], 0x04867; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4868; GFX1032-NEXT: v_mov_b32_e32 v1, s34869; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v04870; GFX1032-NEXT: .LBB7_2: ; %atomicrmw.start4871; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=14872; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v24873; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4874; GFX1032-NEXT: s_waitcnt vmcnt(0)4875; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14876; GFX1032-NEXT: v_mov_b32_e32 v1, v04877; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s24878; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s24879; GFX1032-NEXT: s_cbranch_execnz .LBB7_24880; GFX1032-NEXT: .LBB7_3:4881; GFX1032-NEXT: s_endpgm4882;4883; GFX1164-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4884; GFX1164: ; %bb.0:4885; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec4886; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000004887; GFX1164-NEXT: v_mov_b32_e32 v1, s04888; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 04889; GFX1164-NEXT: s_mov_b64 s[0:1], exec4890; GFX1164-NEXT: s_clause 0x14891; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:44892; GFX1164-NEXT: scratch_store_b32 off, v1, off4893; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off4894; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v24895; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)4896; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v24897; GFX1164-NEXT: s_cbranch_execz .LBB7_34898; GFX1164-NEXT: ; %bb.1:4899; GFX1164-NEXT: s_waitcnt vmcnt(0)4900; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]4901; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x244902; GFX1164-NEXT: v_mov_b32_e32 v3, 04903; GFX1164-NEXT: s_waitcnt lgkmcnt(0)4904; GFX1164-NEXT: s_load_b32 s2, s[0:1], 0x04905; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4906; GFX1164-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4907; GFX1164-NEXT: s_waitcnt lgkmcnt(0)4908; GFX1164-NEXT: v_mov_b32_e32 v1, s24909; GFX1164-NEXT: s_mov_b64 s[2:3], 04910; GFX1164-NEXT: v_mul_f32_e32 v2, 4.0, v04911; GFX1164-NEXT: .LBB7_2: ; %atomicrmw.start4912; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=14913; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)4914; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v24915; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4916; GFX1164-NEXT: s_waitcnt vmcnt(0)4917; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14918; GFX1164-NEXT: v_mov_b32_e32 v1, v04919; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4920; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4921; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]4922; GFX1164-NEXT: s_cbranch_execnz .LBB7_24923; GFX1164-NEXT: .LBB7_3:4924; GFX1164-NEXT: s_endpgm4925;4926; GFX1132-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4927; GFX1132: ; %bb.0:4928; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo4929; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4930; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s04931; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 04932; GFX1132-NEXT: s_mov_b32 s2, 04933; GFX1132-NEXT: s_mov_b32 s0, exec_lo4934; GFX1132-NEXT: s_clause 0x14935; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:44936; GFX1132-NEXT: scratch_store_b32 off, v1, off4937; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off4938; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v24939; GFX1132-NEXT: s_cbranch_execz .LBB7_34940; GFX1132-NEXT: ; %bb.1:4941; GFX1132-NEXT: s_waitcnt vmcnt(0)4942; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]4943; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x244944; GFX1132-NEXT: v_mov_b32_e32 v3, 04945; GFX1132-NEXT: s_waitcnt lgkmcnt(0)4946; GFX1132-NEXT: s_load_b32 s3, s[0:1], 0x04947; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4948; GFX1132-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4949; GFX1132-NEXT: s_waitcnt lgkmcnt(0)4950; GFX1132-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v04951; GFX1132-NEXT: .LBB7_2: ; %atomicrmw.start4952; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=14953; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)4954; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v24955; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4956; GFX1132-NEXT: s_waitcnt vmcnt(0)4957; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14958; GFX1132-NEXT: v_mov_b32_e32 v1, v04959; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s24960; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4961; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s24962; GFX1132-NEXT: s_cbranch_execnz .LBB7_24963; GFX1132-NEXT: .LBB7_3:4964; GFX1132-NEXT: s_endpgm4965;4966; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:4967; GFX7LESS-DPP: ; %bb.0:4968; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04969; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14970; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -14971; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0004972; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s114973; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 04974; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], exec4975; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 04976; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v04977; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04978; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4979; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB7_34980; GFX7LESS-DPP-NEXT: ; %bb.1:4981; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[0:1]4982; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x94983; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000004984; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 04985; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000004986; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 04987; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)4988; GFX7LESS-DPP-NEXT: s_load_dword s2, s[0:1], 0x04989; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0004990; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]4991; GFX7LESS-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4992; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v04993; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)4994; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s24995; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -14996; GFX7LESS-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4997; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=14998; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v0, v1, v24999; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)5000; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v15001; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v05002; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc5003; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)5004; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v15005; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]5006; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v35007; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]5008; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB7_25009; GFX7LESS-DPP-NEXT: .LBB7_3:5010; GFX7LESS-DPP-NEXT: s_endpgm5011;5012; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:5013; GFX9-DPP: ; %bb.0:5014; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD05015; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD15016; GFX9-DPP-NEXT: s_mov_b32 s14, -15017; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec5018; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000005019; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 05020; GFX9-DPP-NEXT: s_add_u32 s12, s12, s115021; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v05022; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 05023; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05024; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc5025; GFX9-DPP-NEXT: s_cbranch_execz .LBB7_35026; GFX9-DPP-NEXT: ; %bb.1:5027; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 05028; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]5029; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000005030; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000005031; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]5032; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245033; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 05034; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 05035; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5036; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x05037; GFX9-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]5038; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5039; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s45040; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v05041; GFX9-DPP-NEXT: .LBB7_2: ; %atomicrmw.start5042; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=15043; GFX9-DPP-NEXT: v_sub_f32_e32 v0, v1, v25044; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5045; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)5046; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15047; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5048; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v05049; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5050; GFX9-DPP-NEXT: s_cbranch_execnz .LBB7_25051; GFX9-DPP-NEXT: .LBB7_3:5052; GFX9-DPP-NEXT: s_endpgm5053;5054; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:5055; GFX1064-DPP: ; %bb.0:5056; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec5057; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD05058; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 05059; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD15060; GFX1064-DPP-NEXT: s_mov_b32 s14, -15061; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160005062; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s115063; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v05064; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 05065; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05066; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc5067; GFX1064-DPP-NEXT: s_cbranch_execz .LBB7_35068; GFX1064-DPP-NEXT: ; %bb.1:5069; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]5070; GFX1064-DPP-NEXT: s_mov_b32 s1, 0x433000005071; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 05072; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]5073; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245074; GFX1064-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]5075; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)5076; GFX1064-DPP-NEXT: s_load_dword s2, s[0:1], 0x05077; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)5078; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s25079; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v05080; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 05081; GFX1064-DPP-NEXT: .LBB7_2: ; %atomicrmw.start5082; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=15083; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v25084; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5085; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)5086; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15087; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v05088; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5089; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5090; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB7_25091; GFX1064-DPP-NEXT: .LBB7_3:5092; GFX1064-DPP-NEXT: s_endpgm5093;5094; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:5095; GFX1032-DPP: ; %bb.0:5096; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo5097; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD05098; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 05099; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD15100; GFX1032-DPP-NEXT: s_mov_b32 s14, -15101; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160005102; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s115103; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05104; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 05105; GFX1032-DPP-NEXT: s_mov_b32 s2, 05106; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo5107; GFX1032-DPP-NEXT: s_cbranch_execz .LBB7_35108; GFX1032-DPP-NEXT: ; %bb.1:5109; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s0, s05110; GFX1032-DPP-NEXT: s_mov_b32 s1, 0x433000005111; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 05112; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]5113; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245114; GFX1032-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]5115; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)5116; GFX1032-DPP-NEXT: s_load_dword s3, s[0:1], 0x05117; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)5118; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s35119; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v05120; GFX1032-DPP-NEXT: .LBB7_2: ; %atomicrmw.start5121; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=15122; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v25123; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5124; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)5125; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15126; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v05127; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s25128; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s25129; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB7_25130; GFX1032-DPP-NEXT: .LBB7_3:5131; GFX1032-DPP-NEXT: s_endpgm5132;5133; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:5134; GFX1164-DPP: ; %bb.0:5135; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec5136; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000005137; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s05138; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 05139; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec5140; GFX1164-DPP-NEXT: s_clause 0x15141; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:45142; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off5143; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off5144; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v25145; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)5146; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v25147; GFX1164-DPP-NEXT: s_cbranch_execz .LBB7_35148; GFX1164-DPP-NEXT: ; %bb.1:5149; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)5150; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]5151; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x245152; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, 05153; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)5154; GFX1164-DPP-NEXT: s_load_b32 s2, s[0:1], 0x05155; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)5156; GFX1164-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]5157; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)5158; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s25159; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 05160; GFX1164-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v05161; GFX1164-DPP-NEXT: .LBB7_2: ; %atomicrmw.start5162; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=15163; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)5164; GFX1164-DPP-NEXT: v_sub_f32_e32 v0, v1, v25165; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc5166; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)5167; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15168; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v05169; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5170; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5171; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]5172; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB7_25173; GFX1164-DPP-NEXT: .LBB7_3:5174; GFX1164-DPP-NEXT: s_endpgm5175;5176; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_uni_value_default_scope_strictfp:5177; GFX1132-DPP: ; %bb.0:5178; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo5179; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5180; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s05181; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 05182; GFX1132-DPP-NEXT: s_mov_b32 s2, 05183; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo5184; GFX1132-DPP-NEXT: s_clause 0x15185; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:45186; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off5187; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off5188; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v25189; GFX1132-DPP-NEXT: s_cbranch_execz .LBB7_35190; GFX1132-DPP-NEXT: ; %bb.1:5191; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)5192; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]5193; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x245194; GFX1132-DPP-NEXT: v_mov_b32_e32 v3, 05195; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)5196; GFX1132-DPP-NEXT: s_load_b32 s3, s[0:1], 0x05197; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)5198; GFX1132-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]5199; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)5200; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v05201; GFX1132-DPP-NEXT: .LBB7_2: ; %atomicrmw.start5202; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=15203; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)5204; GFX1132-DPP-NEXT: v_sub_f32_e32 v0, v1, v25205; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc5206; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)5207; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15208; GFX1132-DPP-NEXT: v_mov_b32_e32 v1, v05209; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s25210; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5211; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s25212; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB7_25213; GFX1132-DPP-NEXT: .LBB7_3:5214; GFX1132-DPP-NEXT: s_endpgm5215 %result = atomicrmw fsub ptr addrspace(1) %ptr, float 4.0 monotonic, align 45216 ret void5217}5218 5219define amdgpu_kernel void @global_atomic_fsub_uni_address_div_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {5220; GFX7LESS-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5221; GFX7LESS: ; %bb.0:5222; GFX7LESS-NEXT: s_mov_b32 s32, 05223; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05224; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15225; GFX7LESS-NEXT: s_mov_b32 s38, -15226; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0005227; GFX7LESS-NEXT: s_add_u32 s36, s36, s115228; GFX7LESS-NEXT: s_addc_u32 s37, s37, 05229; GFX7LESS-NEXT: s_mov_b32 s14, s105230; GFX7LESS-NEXT: s_mov_b32 s13, s95231; GFX7LESS-NEXT: s_mov_b32 s12, s85232; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]5233; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]5234; GFX7LESS-NEXT: s_add_u32 s8, s34, 445235; GFX7LESS-NEXT: s_addc_u32 s9, s35, 05236; GFX7LESS-NEXT: s_getpc_b64 s[4:5]5237; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45238; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125239; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05240; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v25241; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v15242; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v15243; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v25244; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]5245; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]5246; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]5247; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]5248; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5249; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]5250; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec5251; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 15252; GFX7LESS-NEXT: .LBB8_1: ; %ComputeLoop5253; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=15254; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]5255; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s25256; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s25257; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]5258; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 05259; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]5260; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v25261; GFX7LESS-NEXT: s_cbranch_vccnz .LBB8_15262; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd5263; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 05264; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v05265; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05266; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc5267; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5268; GFX7LESS-NEXT: s_cbranch_execz .LBB8_55269; GFX7LESS-NEXT: ; %bb.3:5270; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x95271; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0005272; GFX7LESS-NEXT: s_mov_b32 s2, -15273; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5274; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 05275; GFX7LESS-NEXT: s_mov_b64 s[4:5], 05276; GFX7LESS-NEXT: .LBB8_4: ; %atomicrmw.start5277; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=15278; GFX7LESS-NEXT: s_waitcnt vmcnt(0)5279; GFX7LESS-NEXT: v_sub_f32_e32 v0, v1, v25280; GFX7LESS-NEXT: s_waitcnt expcnt(0)5281; GFX7LESS-NEXT: v_mov_b32_e32 v4, v15282; GFX7LESS-NEXT: v_mov_b32_e32 v3, v05283; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc5284; GFX7LESS-NEXT: s_waitcnt vmcnt(0)5285; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v15286; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]5287; GFX7LESS-NEXT: v_mov_b32_e32 v1, v35288; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]5289; GFX7LESS-NEXT: s_cbranch_execnz .LBB8_45290; GFX7LESS-NEXT: .LBB8_5:5291; GFX7LESS-NEXT: s_endpgm5292;5293; GFX9-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5294; GFX9: ; %bb.0:5295; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05296; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15297; GFX9-NEXT: s_mov_b32 s38, -15298; GFX9-NEXT: s_mov_b32 s39, 0xe000005299; GFX9-NEXT: s_add_u32 s36, s36, s115300; GFX9-NEXT: s_addc_u32 s37, s37, 05301; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]5302; GFX9-NEXT: s_mov_b32 s12, s85303; GFX9-NEXT: s_add_u32 s8, s34, 445304; GFX9-NEXT: s_mov_b32 s13, s95305; GFX9-NEXT: s_addc_u32 s9, s35, 05306; GFX9-NEXT: s_getpc_b64 s[4:5]5307; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45308; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125309; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05310; GFX9-NEXT: s_mov_b32 s14, s105311; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]5312; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v25313; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v15314; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]5315; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]5316; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]5317; GFX9-NEXT: v_or3_b32 v31, v0, v1, v25318; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]5319; GFX9-NEXT: s_mov_b32 s32, 05320; GFX9-NEXT: s_waitcnt lgkmcnt(0)5321; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]5322; GFX9-NEXT: s_mov_b64 s[0:1], exec5323; GFX9-NEXT: v_bfrev_b32_e32 v2, 15324; GFX9-NEXT: .LBB8_1: ; %ComputeLoop5325; GFX9-NEXT: ; =>This Inner Loop Header: Depth=15326; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]5327; GFX9-NEXT: v_readlane_b32 s4, v0, s25328; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s25329; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]5330; GFX9-NEXT: v_add_f32_e32 v2, s4, v25331; GFX9-NEXT: s_cbranch_scc1 .LBB8_15332; GFX9-NEXT: ; %bb.2: ; %ComputeEnd5333; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05334; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05335; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05336; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc5337; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5338; GFX9-NEXT: s_cbranch_execz .LBB8_55339; GFX9-NEXT: ; %bb.3:5340; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245341; GFX9-NEXT: v_mov_b32_e32 v3, 05342; GFX9-NEXT: s_mov_b64 s[2:3], 05343; GFX9-NEXT: s_waitcnt lgkmcnt(0)5344; GFX9-NEXT: global_load_dword v1, v3, s[0:1]5345; GFX9-NEXT: .LBB8_4: ; %atomicrmw.start5346; GFX9-NEXT: ; =>This Inner Loop Header: Depth=15347; GFX9-NEXT: s_waitcnt vmcnt(0)5348; GFX9-NEXT: v_sub_f32_e32 v0, v1, v25349; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5350; GFX9-NEXT: s_waitcnt vmcnt(0)5351; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15352; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5353; GFX9-NEXT: v_mov_b32_e32 v1, v05354; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]5355; GFX9-NEXT: s_cbranch_execnz .LBB8_45356; GFX9-NEXT: .LBB8_5:5357; GFX9-NEXT: s_endpgm5358;5359; GFX1064-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5360; GFX1064: ; %bb.0:5361; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05362; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15363; GFX1064-NEXT: s_mov_b32 s38, -15364; GFX1064-NEXT: s_mov_b32 s39, 0x31e160005365; GFX1064-NEXT: s_add_u32 s36, s36, s115366; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]5367; GFX1064-NEXT: s_addc_u32 s37, s37, 05368; GFX1064-NEXT: s_mov_b32 s12, s85369; GFX1064-NEXT: s_add_u32 s8, s34, 445370; GFX1064-NEXT: s_mov_b32 s13, s95371; GFX1064-NEXT: s_addc_u32 s9, s35, 05372; GFX1064-NEXT: s_getpc_b64 s[4:5]5373; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45374; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125375; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v25376; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05377; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v15378; GFX1064-NEXT: s_mov_b32 s14, s105379; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]5380; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]5381; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]5382; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v25383; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]5384; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]5385; GFX1064-NEXT: s_mov_b32 s32, 05386; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5387; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]5388; GFX1064-NEXT: v_bfrev_b32_e32 v2, 15389; GFX1064-NEXT: s_mov_b64 s[0:1], exec5390; GFX1064-NEXT: .LBB8_1: ; %ComputeLoop5391; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=15392; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]5393; GFX1064-NEXT: v_readlane_b32 s3, v0, s25394; GFX1064-NEXT: v_add_f32_e32 v2, s3, v25395; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s25396; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]5397; GFX1064-NEXT: s_cbranch_scc1 .LBB8_15398; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd5399; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05400; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05401; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05402; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc5403; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5404; GFX1064-NEXT: s_cbranch_execz .LBB8_55405; GFX1064-NEXT: ; %bb.3:5406; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245407; GFX1064-NEXT: v_mov_b32_e32 v3, 05408; GFX1064-NEXT: s_mov_b64 s[2:3], 05409; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5410; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]5411; GFX1064-NEXT: .LBB8_4: ; %atomicrmw.start5412; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=15413; GFX1064-NEXT: s_waitcnt vmcnt(0)5414; GFX1064-NEXT: v_sub_f32_e32 v0, v1, v25415; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5416; GFX1064-NEXT: s_waitcnt vmcnt(0)5417; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15418; GFX1064-NEXT: v_mov_b32_e32 v1, v05419; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5420; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]5421; GFX1064-NEXT: s_cbranch_execnz .LBB8_45422; GFX1064-NEXT: .LBB8_5:5423; GFX1064-NEXT: s_endpgm5424;5425; GFX1032-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5426; GFX1032: ; %bb.0:5427; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05428; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15429; GFX1032-NEXT: s_mov_b32 s38, -15430; GFX1032-NEXT: s_mov_b32 s39, 0x31c160005431; GFX1032-NEXT: s_add_u32 s36, s36, s115432; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]5433; GFX1032-NEXT: s_addc_u32 s37, s37, 05434; GFX1032-NEXT: s_mov_b32 s12, s85435; GFX1032-NEXT: s_add_u32 s8, s34, 445436; GFX1032-NEXT: s_mov_b32 s13, s95437; GFX1032-NEXT: s_addc_u32 s9, s35, 05438; GFX1032-NEXT: s_getpc_b64 s[4:5]5439; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45440; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125441; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v25442; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05443; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v15444; GFX1032-NEXT: s_mov_b32 s14, s105445; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]5446; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]5447; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]5448; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v25449; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]5450; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]5451; GFX1032-NEXT: s_mov_b32 s32, 05452; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5453; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]5454; GFX1032-NEXT: v_bfrev_b32_e32 v2, 15455; GFX1032-NEXT: s_mov_b32 s0, exec_lo5456; GFX1032-NEXT: .LBB8_1: ; %ComputeLoop5457; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=15458; GFX1032-NEXT: s_ff1_i32_b32 s1, s05459; GFX1032-NEXT: v_readlane_b32 s2, v0, s15460; GFX1032-NEXT: s_lshl_b32 s1, 1, s15461; GFX1032-NEXT: s_andn2_b32 s0, s0, s15462; GFX1032-NEXT: v_add_f32_e32 v2, s2, v25463; GFX1032-NEXT: s_cbranch_scc1 .LBB8_15464; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd5465; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05466; GFX1032-NEXT: s_mov_b32 s2, 05467; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05468; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo5469; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s05470; GFX1032-NEXT: s_cbranch_execz .LBB8_55471; GFX1032-NEXT: ; %bb.3:5472; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245473; GFX1032-NEXT: v_mov_b32_e32 v3, 05474; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5475; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]5476; GFX1032-NEXT: .LBB8_4: ; %atomicrmw.start5477; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=15478; GFX1032-NEXT: s_waitcnt vmcnt(0)5479; GFX1032-NEXT: v_sub_f32_e32 v0, v1, v25480; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5481; GFX1032-NEXT: s_waitcnt vmcnt(0)5482; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15483; GFX1032-NEXT: v_mov_b32_e32 v1, v05484; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s25485; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s25486; GFX1032-NEXT: s_cbranch_execnz .LBB8_45487; GFX1032-NEXT: .LBB8_5:5488; GFX1032-NEXT: s_endpgm5489;5490; GFX1164-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5491; GFX1164: ; %bb.0:5492; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]5493; GFX1164-NEXT: s_mov_b32 s12, s85494; GFX1164-NEXT: s_add_u32 s8, s34, 445495; GFX1164-NEXT: s_mov_b32 s13, s95496; GFX1164-NEXT: s_addc_u32 s9, s35, 05497; GFX1164-NEXT: s_getpc_b64 s[4:5]5498; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45499; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125500; GFX1164-NEXT: v_mov_b32_e32 v31, v05501; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x05502; GFX1164-NEXT: s_mov_b32 s14, s105503; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]5504; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]5505; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]5506; GFX1164-NEXT: s_mov_b32 s32, 05507; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5508; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]5509; GFX1164-NEXT: v_bfrev_b32_e32 v2, 15510; GFX1164-NEXT: s_mov_b64 s[0:1], exec5511; GFX1164-NEXT: .LBB8_1: ; %ComputeLoop5512; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=15513; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)5514; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]5515; GFX1164-NEXT: v_readlane_b32 s3, v0, s25516; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5517; GFX1164-NEXT: v_add_f32_e32 v2, s3, v25518; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s25519; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]5520; GFX1164-NEXT: s_cbranch_scc1 .LBB8_15521; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd5522; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05523; GFX1164-NEXT: s_mov_b64 s[0:1], exec5524; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5525; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05526; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v05527; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5528; GFX1164-NEXT: s_cbranch_execz .LBB8_55529; GFX1164-NEXT: ; %bb.3:5530; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x245531; GFX1164-NEXT: v_mov_b32_e32 v3, 05532; GFX1164-NEXT: s_mov_b64 s[2:3], 05533; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5534; GFX1164-NEXT: global_load_b32 v1, v3, s[0:1]5535; GFX1164-NEXT: .LBB8_4: ; %atomicrmw.start5536; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=15537; GFX1164-NEXT: s_waitcnt vmcnt(0)5538; GFX1164-NEXT: v_sub_f32_e32 v0, v1, v25539; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc5540; GFX1164-NEXT: s_waitcnt vmcnt(0)5541; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15542; GFX1164-NEXT: v_mov_b32_e32 v1, v05543; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5544; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5545; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]5546; GFX1164-NEXT: s_cbranch_execnz .LBB8_45547; GFX1164-NEXT: .LBB8_5:5548; GFX1164-NEXT: s_endpgm5549;5550; GFX1132-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5551; GFX1132: ; %bb.0:5552; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]5553; GFX1132-NEXT: v_mov_b32_e32 v31, v05554; GFX1132-NEXT: s_add_u32 s8, s34, 445555; GFX1132-NEXT: s_addc_u32 s9, s35, 05556; GFX1132-NEXT: s_getpc_b64 s[4:5]5557; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45558; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125559; GFX1132-NEXT: s_mov_b32 s12, s135560; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x05561; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]5562; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]5563; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]5564; GFX1132-NEXT: s_mov_b32 s13, s145565; GFX1132-NEXT: s_mov_b32 s14, s155566; GFX1132-NEXT: s_mov_b32 s32, 05567; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5568; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]5569; GFX1132-NEXT: v_bfrev_b32_e32 v2, 15570; GFX1132-NEXT: s_mov_b32 s0, exec_lo5571; GFX1132-NEXT: .LBB8_1: ; %ComputeLoop5572; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=15573; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)5574; GFX1132-NEXT: s_ctz_i32_b32 s1, s05575; GFX1132-NEXT: v_readlane_b32 s2, v0, s15576; GFX1132-NEXT: s_lshl_b32 s1, 1, s15577; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5578; GFX1132-NEXT: s_and_not1_b32 s0, s0, s15579; GFX1132-NEXT: v_add_f32_e32 v2, s2, v25580; GFX1132-NEXT: s_cbranch_scc1 .LBB8_15581; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd5582; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05583; GFX1132-NEXT: s_mov_b32 s2, 05584; GFX1132-NEXT: s_mov_b32 s0, exec_lo5585; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5586; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v05587; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s05588; GFX1132-NEXT: s_cbranch_execz .LBB8_55589; GFX1132-NEXT: ; %bb.3:5590; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x245591; GFX1132-NEXT: v_mov_b32_e32 v3, 05592; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5593; GFX1132-NEXT: global_load_b32 v1, v3, s[0:1]5594; GFX1132-NEXT: .LBB8_4: ; %atomicrmw.start5595; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=15596; GFX1132-NEXT: s_waitcnt vmcnt(0)5597; GFX1132-NEXT: v_sub_f32_e32 v0, v1, v25598; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc5599; GFX1132-NEXT: s_waitcnt vmcnt(0)5600; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15601; GFX1132-NEXT: v_mov_b32_e32 v1, v05602; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s25603; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5604; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s25605; GFX1132-NEXT: s_cbranch_execnz .LBB8_45606; GFX1132-NEXT: .LBB8_5:5607; GFX1132-NEXT: s_endpgm5608;5609; GFX7LESS-DPP-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5610; GFX7LESS-DPP: ; %bb.0:5611; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 05612; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD05613; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD15614; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -15615; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0005616; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s115617; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 05618; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s105619; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s95620; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s85621; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5622; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x95623; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0005624; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -15625; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 445626; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 05627; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]5628; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45629; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125630; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05631; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25632; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15633; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v15634; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v25635; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5636; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5637; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]5638; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]5639; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)5640; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5641; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 05642; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 05643; GFX7LESS-DPP-NEXT: .LBB8_1: ; %atomicrmw.start5644; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=15645; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)5646; GFX7LESS-DPP-NEXT: v_sub_f32_e32 v1, v2, v05647; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)5648; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v25649; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v15650; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc5651; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)5652; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v25653; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]5654; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v35655; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]5656; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB8_15657; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end5658; GFX7LESS-DPP-NEXT: s_endpgm5659;5660; GFX9-DPP-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5661; GFX9-DPP: ; %bb.0:5662; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05663; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15664; GFX9-DPP-NEXT: s_mov_b32 s38, -15665; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000005666; GFX9-DPP-NEXT: s_add_u32 s36, s36, s115667; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 05668; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5669; GFX9-DPP-NEXT: s_mov_b32 s12, s85670; GFX9-DPP-NEXT: s_add_u32 s8, s34, 445671; GFX9-DPP-NEXT: s_mov_b32 s13, s95672; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 05673; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]5674; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45675; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125676; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05677; GFX9-DPP-NEXT: s_mov_b32 s14, s105678; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5679; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25680; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15681; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5682; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5683; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]5684; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v25685; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]5686; GFX9-DPP-NEXT: s_mov_b32 s32, 05687; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5688; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5689; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 05690; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v15691; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15692; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 15693; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]5694; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15695; GFX9-DPP-NEXT: s_nop 15696; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf5697; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55698; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15699; GFX9-DPP-NEXT: s_nop 15700; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf5701; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55702; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15703; GFX9-DPP-NEXT: s_nop 15704; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf5705; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55706; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15707; GFX9-DPP-NEXT: s_nop 15708; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf5709; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55710; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15711; GFX9-DPP-NEXT: s_nop 15712; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf5713; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55714; GFX9-DPP-NEXT: s_nop 15715; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf5716; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v35717; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 635718; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]5719; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v15720; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5721; GFX9-DPP-NEXT: s_cbranch_execz .LBB8_35722; GFX9-DPP-NEXT: ; %bb.1:5723; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245724; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 05725; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 05726; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5727; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]5728; GFX9-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5729; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=15730; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)5731; GFX9-DPP-NEXT: v_subrev_f32_e32 v0, s4, v15732; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc5733; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)5734; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15735; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5736; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v05737; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5738; GFX9-DPP-NEXT: s_cbranch_execnz .LBB8_25739; GFX9-DPP-NEXT: .LBB8_3:5740; GFX9-DPP-NEXT: s_endpgm5741;5742; GFX1064-DPP-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5743; GFX1064-DPP: ; %bb.0:5744; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05745; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15746; GFX1064-DPP-NEXT: s_mov_b32 s38, -15747; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160005748; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s115749; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5750; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 05751; GFX1064-DPP-NEXT: s_mov_b32 s12, s85752; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 445753; GFX1064-DPP-NEXT: s_mov_b32 s13, s95754; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 05755; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]5756; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45757; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125758; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25759; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05760; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15761; GFX1064-DPP-NEXT: s_mov_b32 s14, s105762; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5763; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5764; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5765; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v25766; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]5767; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]5768; GFX1064-DPP-NEXT: s_mov_b32 s32, 05769; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)5770; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5771; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15772; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 15773; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]5774; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 15775; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf5776; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v35777; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 15778; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf5779; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v55780; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 15781; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf5782; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v45783; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf5784; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v55785; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 05786; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v45787; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 05788; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 325789; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]5790; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05791; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15792; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s35793; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]5794; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05795; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v35796; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05797; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5798; GFX1064-DPP-NEXT: s_cbranch_execz .LBB8_35799; GFX1064-DPP-NEXT: ; %bb.1:5800; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245801; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 05802; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 05803; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)5804; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]5805; GFX1064-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5806; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=15807; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)5808; GFX1064-DPP-NEXT: v_sub_f32_e32 v0, v1, v25809; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc5810; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)5811; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15812; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v05813; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5814; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5815; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB8_25816; GFX1064-DPP-NEXT: .LBB8_3:5817; GFX1064-DPP-NEXT: s_endpgm5818;5819; GFX1032-DPP-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5820; GFX1032-DPP: ; %bb.0:5821; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05822; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15823; GFX1032-DPP-NEXT: s_mov_b32 s38, -15824; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160005825; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s115826; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5827; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 05828; GFX1032-DPP-NEXT: s_mov_b32 s12, s85829; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 445830; GFX1032-DPP-NEXT: s_mov_b32 s13, s95831; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 05832; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]5833; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45834; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125835; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25836; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05837; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15838; GFX1032-DPP-NEXT: s_mov_b32 s14, s105839; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5840; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5841; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5842; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v25843; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]5844; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]5845; GFX1032-DPP-NEXT: s_mov_b32 s32, 05846; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)5847; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5848; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -15849; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 15850; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s05851; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 15852; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf5853; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v35854; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 15855; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf5856; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v55857; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 15858; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf5859; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v45860; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf5861; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v55862; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 05863; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v45864; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s05865; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05866; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v35867; GFX1032-DPP-NEXT: s_mov_b32 s2, 05868; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05869; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo5870; GFX1032-DPP-NEXT: s_cbranch_execz .LBB8_35871; GFX1032-DPP-NEXT: ; %bb.1:5872; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245873; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 05874; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)5875; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]5876; GFX1032-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5877; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=15878; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)5879; GFX1032-DPP-NEXT: v_sub_f32_e32 v0, v1, v25880; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc5881; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)5882; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15883; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v05884; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s25885; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s25886; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB8_25887; GFX1032-DPP-NEXT: .LBB8_3:5888; GFX1032-DPP-NEXT: s_endpgm5889;5890; GFX1164-DPP-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5891; GFX1164-DPP: ; %bb.0:5892; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5893; GFX1164-DPP-NEXT: s_mov_b32 s12, s85894; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 445895; GFX1164-DPP-NEXT: s_mov_b32 s13, s95896; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 05897; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]5898; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45899; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125900; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v05901; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x05902; GFX1164-DPP-NEXT: s_mov_b32 s14, s105903; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5904; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5905; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5906; GFX1164-DPP-NEXT: s_mov_b32 s32, 05907; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)5908; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5909; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15910; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 15911; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]5912; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 15913; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5914; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf5915; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v15916; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 15917; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5918; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf5919; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v35920; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 15921; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5922; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf5923; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v25924; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5925; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf5926; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v35927; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5928; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 05929; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v25930; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5931; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v15932; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]5933; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05934; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15935; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)5936; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v25937; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]5938; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)5939; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v05940; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v15941; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec5942; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)5943; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v45944; GFX1164-DPP-NEXT: s_cbranch_execz .LBB8_35945; GFX1164-DPP-NEXT: ; %bb.1:5946; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x245947; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 05948; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 05949; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)5950; GFX1164-DPP-NEXT: global_load_b32 v5, v6, s[0:1]5951; GFX1164-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5952; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=15953; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)5954; GFX1164-DPP-NEXT: v_sub_f32_e32 v4, v5, v05955; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc5956; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)5957; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v55958; GFX1164-DPP-NEXT: v_mov_b32_e32 v5, v45959; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5960; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5961; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]5962; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB8_25963; GFX1164-DPP-NEXT: .LBB8_3:5964; GFX1164-DPP-NEXT: s_endpgm5965;5966; GFX1132-DPP-LABEL: global_atomic_fsub_uni_address_div_value_default_scope_strictfp:5967; GFX1132-DPP: ; %bb.0:5968; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5969; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v05970; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 445971; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 05972; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]5973; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45974; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125975; GFX1132-DPP-NEXT: s_mov_b32 s12, s135976; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x05977; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5978; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5979; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5980; GFX1132-DPP-NEXT: s_mov_b32 s13, s145981; GFX1132-DPP-NEXT: s_mov_b32 s14, s155982; GFX1132-DPP-NEXT: s_mov_b32 s32, 05983; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)5984; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5985; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -15986; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 15987; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s05988; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 15989; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5990; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf5991; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v15992; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 15993; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5994; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf5995; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v35996; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 15997; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5998; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf5999; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v26000; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6001; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf6002; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v36003; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6004; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 06005; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v26006; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s06007; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)6008; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 06009; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v16010; GFX1132-DPP-NEXT: s_mov_b32 s2, 06011; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo6012; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)6013; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v46014; GFX1132-DPP-NEXT: s_cbranch_execz .LBB8_36015; GFX1132-DPP-NEXT: ; %bb.1:6016; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x246017; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 06018; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)6019; GFX1132-DPP-NEXT: global_load_b32 v5, v6, s[0:1]6020; GFX1132-DPP-NEXT: .LBB8_2: ; %atomicrmw.start6021; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=16022; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)6023; GFX1132-DPP-NEXT: v_sub_f32_e32 v4, v5, v06024; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc6025; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)6026; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v56027; GFX1132-DPP-NEXT: v_mov_b32_e32 v5, v46028; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s26029; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6030; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s26031; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB8_26032; GFX1132-DPP-NEXT: .LBB8_3:6033; GFX1132-DPP-NEXT: s_endpgm6034 %divValue = call float @div.float.value() strictfp6035 %result = atomicrmw fsub ptr addrspace(1) %ptr, float %divValue monotonic, align 46036 ret void6037}6038 6039define amdgpu_kernel void @global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {6040; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6041; GFX7LESS: ; %bb.0:6042; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec6043; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 06044; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v06045; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06046; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc6047; GFX7LESS-NEXT: s_cbranch_execz .LBB9_36048; GFX7LESS-NEXT: ; %bb.1:6049; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x96050; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6051; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)6052; GFX7LESS-NEXT: s_load_dwordx2 s[6:7], s[0:1], 0x06053; GFX7LESS-NEXT: s_mov_b64 s[4:5], 06054; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0006055; GFX7LESS-NEXT: v_cvt_f64_u32_e32 v[0:1], s26056; GFX7LESS-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06057; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)6058; GFX7LESS-NEXT: v_mov_b32_e32 v2, s66059; GFX7LESS-NEXT: v_mov_b32_e32 v3, s76060; GFX7LESS-NEXT: s_mov_b32 s2, -16061; GFX7LESS-NEXT: .LBB9_2: ; %atomicrmw.start6062; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=16063; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6064; GFX7LESS-NEXT: s_waitcnt expcnt(0)6065; GFX7LESS-NEXT: v_mov_b32_e32 v9, v36066; GFX7LESS-NEXT: v_mov_b32_e32 v8, v26067; GFX7LESS-NEXT: v_mov_b32_e32 v7, v16068; GFX7LESS-NEXT: v_mov_b32_e32 v6, v06069; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc6070; GFX7LESS-NEXT: s_waitcnt vmcnt(0)6071; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]6072; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]6073; GFX7LESS-NEXT: v_mov_b32_e32 v2, v66074; GFX7LESS-NEXT: v_mov_b32_e32 v3, v76075; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]6076; GFX7LESS-NEXT: s_cbranch_execnz .LBB9_26077; GFX7LESS-NEXT: .LBB9_3:6078; GFX7LESS-NEXT: s_endpgm6079;6080; GFX9-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6081; GFX9: ; %bb.0:6082; GFX9-NEXT: s_mov_b64 s[2:3], exec6083; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 06084; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v06085; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06086; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc6087; GFX9-NEXT: s_cbranch_execz .LBB9_36088; GFX9-NEXT: ; %bb.1:6089; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6090; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246091; GFX9-NEXT: v_cvt_f64_u32_e32 v[0:1], s26092; GFX9-NEXT: s_mov_b64 s[2:3], 06093; GFX9-NEXT: v_mov_b32_e32 v6, 06094; GFX9-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06095; GFX9-NEXT: s_waitcnt lgkmcnt(0)6096; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x06097; GFX9-NEXT: s_waitcnt lgkmcnt(0)6098; GFX9-NEXT: v_mov_b32_e32 v2, s46099; GFX9-NEXT: v_mov_b32_e32 v3, s56100; GFX9-NEXT: .LBB9_2: ; %atomicrmw.start6101; GFX9-NEXT: ; =>This Inner Loop Header: Depth=16102; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6103; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6104; GFX9-NEXT: s_waitcnt vmcnt(0)6105; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6106; GFX9-NEXT: v_mov_b32_e32 v3, v16107; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6108; GFX9-NEXT: v_mov_b32_e32 v2, v06109; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]6110; GFX9-NEXT: s_cbranch_execnz .LBB9_26111; GFX9-NEXT: .LBB9_3:6112; GFX9-NEXT: s_endpgm6113;6114; GFX1064-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6115; GFX1064: ; %bb.0:6116; GFX1064-NEXT: s_mov_b64 s[2:3], exec6117; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 06118; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v06119; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06120; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc6121; GFX1064-NEXT: s_cbranch_execz .LBB9_36122; GFX1064-NEXT: ; %bb.1:6123; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246124; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6125; GFX1064-NEXT: v_mov_b32_e32 v6, 06126; GFX1064-NEXT: v_cvt_f64_u32_e32 v[0:1], s26127; GFX1064-NEXT: s_waitcnt lgkmcnt(0)6128; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x06129; GFX1064-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06130; GFX1064-NEXT: s_waitcnt lgkmcnt(0)6131; GFX1064-NEXT: v_mov_b32_e32 v2, s26132; GFX1064-NEXT: v_mov_b32_e32 v3, s36133; GFX1064-NEXT: s_mov_b64 s[2:3], 06134; GFX1064-NEXT: .LBB9_2: ; %atomicrmw.start6135; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=16136; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6137; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6138; GFX1064-NEXT: s_waitcnt vmcnt(0)6139; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6140; GFX1064-NEXT: v_mov_b32_e32 v3, v16141; GFX1064-NEXT: v_mov_b32_e32 v2, v06142; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6143; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]6144; GFX1064-NEXT: s_cbranch_execnz .LBB9_26145; GFX1064-NEXT: .LBB9_3:6146; GFX1064-NEXT: s_endpgm6147;6148; GFX1032-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6149; GFX1032: ; %bb.0:6150; GFX1032-NEXT: s_mov_b32 s3, exec_lo6151; GFX1032-NEXT: s_mov_b32 s2, 06152; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 06153; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06154; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo6155; GFX1032-NEXT: s_cbranch_execz .LBB9_36156; GFX1032-NEXT: ; %bb.1:6157; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246158; GFX1032-NEXT: s_bcnt1_i32_b32 s3, s36159; GFX1032-NEXT: v_mov_b32_e32 v6, 06160; GFX1032-NEXT: v_cvt_f64_u32_e32 v[0:1], s36161; GFX1032-NEXT: s_waitcnt lgkmcnt(0)6162; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x06163; GFX1032-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06164; GFX1032-NEXT: s_waitcnt lgkmcnt(0)6165; GFX1032-NEXT: v_mov_b32_e32 v2, s46166; GFX1032-NEXT: v_mov_b32_e32 v3, s56167; GFX1032-NEXT: .LBB9_2: ; %atomicrmw.start6168; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=16169; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6170; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6171; GFX1032-NEXT: s_waitcnt vmcnt(0)6172; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6173; GFX1032-NEXT: v_mov_b32_e32 v3, v16174; GFX1032-NEXT: v_mov_b32_e32 v2, v06175; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s26176; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s26177; GFX1032-NEXT: s_cbranch_execnz .LBB9_26178; GFX1032-NEXT: .LBB9_3:6179; GFX1032-NEXT: s_endpgm6180;6181; GFX1164-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6182; GFX1164: ; %bb.0:6183; GFX1164-NEXT: s_mov_b64 s[0:1], exec6184; GFX1164-NEXT: s_mov_b64 s[2:3], exec6185; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 06186; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6187; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v06188; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v06189; GFX1164-NEXT: s_cbranch_execz .LBB9_36190; GFX1164-NEXT: ; %bb.1:6191; GFX1164-NEXT: s_bcnt1_i32_b64 s0, s[0:1]6192; GFX1164-NEXT: v_mov_b32_e32 v6, 06193; GFX1164-NEXT: v_cvt_f64_u32_e32 v[0:1], s06194; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x246195; GFX1164-NEXT: s_waitcnt lgkmcnt(0)6196; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x06197; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)6198; GFX1164-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06199; GFX1164-NEXT: s_waitcnt lgkmcnt(0)6200; GFX1164-NEXT: v_mov_b32_e32 v2, s26201; GFX1164-NEXT: v_mov_b32_e32 v3, s36202; GFX1164-NEXT: s_mov_b64 s[2:3], 06203; GFX1164-NEXT: .LBB9_2: ; %atomicrmw.start6204; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=16205; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)6206; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6207; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6208; GFX1164-NEXT: s_waitcnt vmcnt(0)6209; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6210; GFX1164-NEXT: v_mov_b32_e32 v3, v16211; GFX1164-NEXT: v_mov_b32_e32 v2, v06212; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6213; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6214; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]6215; GFX1164-NEXT: s_cbranch_execnz .LBB9_26216; GFX1164-NEXT: .LBB9_3:6217; GFX1164-NEXT: s_endpgm6218;6219; GFX1132-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6220; GFX1132: ; %bb.0:6221; GFX1132-NEXT: s_mov_b32 s0, exec_lo6222; GFX1132-NEXT: s_mov_b32 s2, 06223; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 06224; GFX1132-NEXT: s_mov_b32 s1, exec_lo6225; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)6226; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v06227; GFX1132-NEXT: s_cbranch_execz .LBB9_36228; GFX1132-NEXT: ; %bb.1:6229; GFX1132-NEXT: s_bcnt1_i32_b32 s0, s06230; GFX1132-NEXT: v_mov_b32_e32 v6, 06231; GFX1132-NEXT: v_cvt_f64_u32_e32 v[0:1], s06232; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x246233; GFX1132-NEXT: s_waitcnt lgkmcnt(0)6234; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x06235; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)6236; GFX1132-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06237; GFX1132-NEXT: s_waitcnt lgkmcnt(0)6238; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s56239; GFX1132-NEXT: .LBB9_2: ; %atomicrmw.start6240; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=16241; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)6242; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6243; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6244; GFX1132-NEXT: s_waitcnt vmcnt(0)6245; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6246; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v06247; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s26248; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6249; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s26250; GFX1132-NEXT: s_cbranch_execnz .LBB9_26251; GFX1132-NEXT: .LBB9_3:6252; GFX1132-NEXT: s_endpgm6253;6254; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6255; GFX7LESS-DPP: ; %bb.0:6256; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec6257; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 06258; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v06259; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06260; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6261; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB9_36262; GFX7LESS-DPP-NEXT: ; %bb.1:6263; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x96264; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6265; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)6266; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[6:7], s[0:1], 0x06267; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 06268; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0006269; GFX7LESS-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s26270; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06271; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)6272; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s66273; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s76274; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -16275; GFX7LESS-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6276; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=16277; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6278; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)6279; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v36280; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v26281; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v16282; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v06283; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc6284; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)6285; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]6286; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]6287; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v66288; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v76289; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]6290; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB9_26291; GFX7LESS-DPP-NEXT: .LBB9_3:6292; GFX7LESS-DPP-NEXT: s_endpgm6293;6294; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6295; GFX9-DPP: ; %bb.0:6296; GFX9-DPP-NEXT: s_mov_b64 s[2:3], exec6297; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 06298; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v06299; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06300; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6301; GFX9-DPP-NEXT: s_cbranch_execz .LBB9_36302; GFX9-DPP-NEXT: ; %bb.1:6303; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6304; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246305; GFX9-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s26306; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 06307; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 06308; GFX9-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06309; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)6310; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x06311; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)6312; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s46313; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s56314; GFX9-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6315; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=16316; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6317; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6318; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)6319; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6320; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v16321; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6322; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v06323; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]6324; GFX9-DPP-NEXT: s_cbranch_execnz .LBB9_26325; GFX9-DPP-NEXT: .LBB9_3:6326; GFX9-DPP-NEXT: s_endpgm6327;6328; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6329; GFX1064-DPP: ; %bb.0:6330; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], exec6331; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 06332; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v06333; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06334; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6335; GFX1064-DPP-NEXT: s_cbranch_execz .LBB9_36336; GFX1064-DPP-NEXT: ; %bb.1:6337; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246338; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6339; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 06340; GFX1064-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s26341; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)6342; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x06343; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06344; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)6345; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s26346; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s36347; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 06348; GFX1064-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6349; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=16350; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6351; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6352; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)6353; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6354; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v16355; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v06356; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6357; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]6358; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB9_26359; GFX1064-DPP-NEXT: .LBB9_3:6360; GFX1064-DPP-NEXT: s_endpgm6361;6362; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6363; GFX1032-DPP: ; %bb.0:6364; GFX1032-DPP-NEXT: s_mov_b32 s3, exec_lo6365; GFX1032-DPP-NEXT: s_mov_b32 s2, 06366; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 06367; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06368; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo6369; GFX1032-DPP-NEXT: s_cbranch_execz .LBB9_36370; GFX1032-DPP-NEXT: ; %bb.1:6371; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246372; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s3, s36373; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 06374; GFX1032-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s36375; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)6376; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x06377; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06378; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)6379; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s46380; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s56381; GFX1032-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6382; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=16383; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6384; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6385; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)6386; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6387; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v16388; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v06389; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s26390; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s26391; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB9_26392; GFX1032-DPP-NEXT: .LBB9_3:6393; GFX1032-DPP-NEXT: s_endpgm6394;6395; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6396; GFX1164-DPP: ; %bb.0:6397; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec6398; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], exec6399; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 06400; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6401; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v06402; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v06403; GFX1164-DPP-NEXT: s_cbranch_execz .LBB9_36404; GFX1164-DPP-NEXT: ; %bb.1:6405; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]6406; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 06407; GFX1164-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s06408; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246409; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)6410; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x06411; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6412; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06413; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)6414; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s26415; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s36416; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 06417; GFX1164-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6418; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=16419; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6420; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6421; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6422; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)6423; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6424; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v16425; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v06426; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6427; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6428; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]6429; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB9_26430; GFX1164-DPP-NEXT: .LBB9_3:6431; GFX1164-DPP-NEXT: s_endpgm6432;6433; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_unsafe:6434; GFX1132-DPP: ; %bb.0:6435; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo6436; GFX1132-DPP-NEXT: s_mov_b32 s2, 06437; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 06438; GFX1132-DPP-NEXT: s_mov_b32 s1, exec_lo6439; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6440; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v06441; GFX1132-DPP-NEXT: s_cbranch_execz .LBB9_36442; GFX1132-DPP-NEXT: ; %bb.1:6443; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, s06444; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 06445; GFX1132-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s06446; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246447; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)6448; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x06449; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6450; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06451; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)6452; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s56453; GFX1132-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6454; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=16455; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6456; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6457; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6458; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)6459; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6460; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v06461; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s26462; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6463; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s26464; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB9_26465; GFX1132-DPP-NEXT: .LBB9_3:6466; GFX1132-DPP-NEXT: s_endpgm6467 %result = atomicrmw fsub ptr addrspace(1) %ptr, double 4.0 syncscope("agent") monotonic, align 86468 ret void6469}6470 6471define amdgpu_kernel void @global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe(ptr addrspace(1) %ptr) #0 {6472; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6473; GFX7LESS: ; %bb.0:6474; GFX7LESS-NEXT: s_mov_b32 s32, 06475; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06476; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16477; GFX7LESS-NEXT: s_mov_b32 s38, -16478; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0006479; GFX7LESS-NEXT: s_add_u32 s36, s36, s116480; GFX7LESS-NEXT: s_addc_u32 s37, s37, 06481; GFX7LESS-NEXT: s_mov_b32 s14, s106482; GFX7LESS-NEXT: s_mov_b32 s13, s96483; GFX7LESS-NEXT: s_mov_b32 s12, s86484; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]6485; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]6486; GFX7LESS-NEXT: s_add_u32 s8, s34, 446487; GFX7LESS-NEXT: s_addc_u32 s9, s35, 06488; GFX7LESS-NEXT: s_getpc_b64 s[4:5]6489; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46490; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126491; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06492; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v26493; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v16494; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v16495; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v26496; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]6497; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]6498; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]6499; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]6500; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)6501; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]6502; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec6503; GFX7LESS-NEXT: v_mov_b32_e32 v4, 06504; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 16505; GFX7LESS-NEXT: .LBB10_1: ; %ComputeLoop6506; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=16507; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]6508; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s46509; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s46510; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s46511; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]6512; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 06513; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]6514; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6515; GFX7LESS-NEXT: s_cbranch_vccnz .LBB10_16516; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd6517; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 06518; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v06519; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06520; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc6521; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6522; GFX7LESS-NEXT: s_cbranch_execz .LBB10_56523; GFX7LESS-NEXT: ; %bb.3:6524; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x96525; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0006526; GFX7LESS-NEXT: s_mov_b32 s2, -16527; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)6528; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 06529; GFX7LESS-NEXT: s_mov_b64 s[4:5], 06530; GFX7LESS-NEXT: .LBB10_4: ; %atomicrmw.start6531; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=16532; GFX7LESS-NEXT: s_waitcnt vmcnt(0)6533; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6534; GFX7LESS-NEXT: s_waitcnt expcnt(0)6535; GFX7LESS-NEXT: v_mov_b32_e32 v9, v36536; GFX7LESS-NEXT: v_mov_b32_e32 v8, v26537; GFX7LESS-NEXT: v_mov_b32_e32 v7, v16538; GFX7LESS-NEXT: v_mov_b32_e32 v6, v06539; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc6540; GFX7LESS-NEXT: s_waitcnt vmcnt(0)6541; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]6542; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]6543; GFX7LESS-NEXT: v_mov_b32_e32 v2, v66544; GFX7LESS-NEXT: v_mov_b32_e32 v3, v76545; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]6546; GFX7LESS-NEXT: s_cbranch_execnz .LBB10_46547; GFX7LESS-NEXT: .LBB10_5:6548; GFX7LESS-NEXT: s_endpgm6549;6550; GFX9-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6551; GFX9: ; %bb.0:6552; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06553; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16554; GFX9-NEXT: s_mov_b32 s38, -16555; GFX9-NEXT: s_mov_b32 s39, 0xe000006556; GFX9-NEXT: s_add_u32 s36, s36, s116557; GFX9-NEXT: s_addc_u32 s37, s37, 06558; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]6559; GFX9-NEXT: s_mov_b32 s12, s86560; GFX9-NEXT: s_add_u32 s8, s34, 446561; GFX9-NEXT: s_mov_b32 s13, s96562; GFX9-NEXT: s_addc_u32 s9, s35, 06563; GFX9-NEXT: s_getpc_b64 s[4:5]6564; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46565; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126566; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06567; GFX9-NEXT: s_mov_b32 s14, s106568; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]6569; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v26570; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v16571; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]6572; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]6573; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]6574; GFX9-NEXT: v_or3_b32 v31, v0, v1, v26575; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]6576; GFX9-NEXT: s_mov_b32 s32, 06577; GFX9-NEXT: s_waitcnt lgkmcnt(0)6578; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]6579; GFX9-NEXT: v_mov_b32_e32 v4, 06580; GFX9-NEXT: s_mov_b64 s[0:1], exec6581; GFX9-NEXT: v_bfrev_b32_e32 v5, 16582; GFX9-NEXT: .LBB10_1: ; %ComputeLoop6583; GFX9-NEXT: ; =>This Inner Loop Header: Depth=16584; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]6585; GFX9-NEXT: v_readlane_b32 s3, v1, s46586; GFX9-NEXT: v_readlane_b32 s2, v0, s46587; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6588; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s46589; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]6590; GFX9-NEXT: s_cbranch_scc1 .LBB10_16591; GFX9-NEXT: ; %bb.2: ; %ComputeEnd6592; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06593; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06594; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06595; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc6596; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6597; GFX9-NEXT: s_cbranch_execz .LBB10_56598; GFX9-NEXT: ; %bb.3:6599; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246600; GFX9-NEXT: v_mov_b32_e32 v6, 06601; GFX9-NEXT: s_mov_b64 s[2:3], 06602; GFX9-NEXT: s_waitcnt lgkmcnt(0)6603; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]6604; GFX9-NEXT: .LBB10_4: ; %atomicrmw.start6605; GFX9-NEXT: ; =>This Inner Loop Header: Depth=16606; GFX9-NEXT: s_waitcnt vmcnt(0)6607; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6608; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6609; GFX9-NEXT: s_waitcnt vmcnt(0)6610; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6611; GFX9-NEXT: v_mov_b32_e32 v3, v16612; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6613; GFX9-NEXT: v_mov_b32_e32 v2, v06614; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]6615; GFX9-NEXT: s_cbranch_execnz .LBB10_46616; GFX9-NEXT: .LBB10_5:6617; GFX9-NEXT: s_endpgm6618;6619; GFX1064-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6620; GFX1064: ; %bb.0:6621; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06622; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16623; GFX1064-NEXT: s_mov_b32 s38, -16624; GFX1064-NEXT: s_mov_b32 s39, 0x31e160006625; GFX1064-NEXT: s_add_u32 s36, s36, s116626; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]6627; GFX1064-NEXT: s_addc_u32 s37, s37, 06628; GFX1064-NEXT: s_mov_b32 s12, s86629; GFX1064-NEXT: s_add_u32 s8, s34, 446630; GFX1064-NEXT: s_mov_b32 s13, s96631; GFX1064-NEXT: s_addc_u32 s9, s35, 06632; GFX1064-NEXT: s_getpc_b64 s[4:5]6633; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46634; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126635; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v26636; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06637; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v16638; GFX1064-NEXT: s_mov_b32 s14, s106639; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]6640; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]6641; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]6642; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v26643; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]6644; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]6645; GFX1064-NEXT: s_mov_b32 s32, 06646; GFX1064-NEXT: s_waitcnt lgkmcnt(0)6647; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]6648; GFX1064-NEXT: v_mov_b32_e32 v4, 06649; GFX1064-NEXT: v_bfrev_b32_e32 v5, 16650; GFX1064-NEXT: s_mov_b64 s[0:1], exec6651; GFX1064-NEXT: .LBB10_1: ; %ComputeLoop6652; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=16653; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]6654; GFX1064-NEXT: v_readlane_b32 s3, v1, s46655; GFX1064-NEXT: v_readlane_b32 s2, v0, s46656; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6657; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s46658; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]6659; GFX1064-NEXT: s_cbranch_scc1 .LBB10_16660; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd6661; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06662; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06663; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06664; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc6665; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6666; GFX1064-NEXT: s_cbranch_execz .LBB10_56667; GFX1064-NEXT: ; %bb.3:6668; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246669; GFX1064-NEXT: v_mov_b32_e32 v6, 06670; GFX1064-NEXT: s_mov_b64 s[2:3], 06671; GFX1064-NEXT: s_waitcnt lgkmcnt(0)6672; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]6673; GFX1064-NEXT: .LBB10_4: ; %atomicrmw.start6674; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=16675; GFX1064-NEXT: s_waitcnt vmcnt(0)6676; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6677; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6678; GFX1064-NEXT: s_waitcnt vmcnt(0)6679; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6680; GFX1064-NEXT: v_mov_b32_e32 v3, v16681; GFX1064-NEXT: v_mov_b32_e32 v2, v06682; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6683; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]6684; GFX1064-NEXT: s_cbranch_execnz .LBB10_46685; GFX1064-NEXT: .LBB10_5:6686; GFX1064-NEXT: s_endpgm6687;6688; GFX1032-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6689; GFX1032: ; %bb.0:6690; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06691; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16692; GFX1032-NEXT: s_mov_b32 s38, -16693; GFX1032-NEXT: s_mov_b32 s39, 0x31c160006694; GFX1032-NEXT: s_add_u32 s36, s36, s116695; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]6696; GFX1032-NEXT: s_addc_u32 s37, s37, 06697; GFX1032-NEXT: s_mov_b32 s12, s86698; GFX1032-NEXT: s_add_u32 s8, s34, 446699; GFX1032-NEXT: s_mov_b32 s13, s96700; GFX1032-NEXT: s_addc_u32 s9, s35, 06701; GFX1032-NEXT: s_getpc_b64 s[4:5]6702; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46703; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126704; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v26705; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06706; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v16707; GFX1032-NEXT: s_mov_b32 s14, s106708; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]6709; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]6710; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]6711; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v26712; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]6713; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]6714; GFX1032-NEXT: s_mov_b32 s32, 06715; GFX1032-NEXT: s_waitcnt lgkmcnt(0)6716; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]6717; GFX1032-NEXT: v_mov_b32_e32 v4, 06718; GFX1032-NEXT: v_bfrev_b32_e32 v5, 16719; GFX1032-NEXT: s_mov_b32 s0, exec_lo6720; GFX1032-NEXT: .LBB10_1: ; %ComputeLoop6721; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=16722; GFX1032-NEXT: s_ff1_i32_b32 s1, s06723; GFX1032-NEXT: v_readlane_b32 s3, v1, s16724; GFX1032-NEXT: v_readlane_b32 s2, v0, s16725; GFX1032-NEXT: s_lshl_b32 s1, 1, s16726; GFX1032-NEXT: s_andn2_b32 s0, s0, s16727; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6728; GFX1032-NEXT: s_cbranch_scc1 .LBB10_16729; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd6730; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06731; GFX1032-NEXT: s_mov_b32 s2, 06732; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06733; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo6734; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s06735; GFX1032-NEXT: s_cbranch_execz .LBB10_56736; GFX1032-NEXT: ; %bb.3:6737; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246738; GFX1032-NEXT: v_mov_b32_e32 v6, 06739; GFX1032-NEXT: s_waitcnt lgkmcnt(0)6740; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]6741; GFX1032-NEXT: .LBB10_4: ; %atomicrmw.start6742; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=16743; GFX1032-NEXT: s_waitcnt vmcnt(0)6744; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6745; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6746; GFX1032-NEXT: s_waitcnt vmcnt(0)6747; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6748; GFX1032-NEXT: v_mov_b32_e32 v3, v16749; GFX1032-NEXT: v_mov_b32_e32 v2, v06750; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s26751; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s26752; GFX1032-NEXT: s_cbranch_execnz .LBB10_46753; GFX1032-NEXT: .LBB10_5:6754; GFX1032-NEXT: s_endpgm6755;6756; GFX1164-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6757; GFX1164: ; %bb.0:6758; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]6759; GFX1164-NEXT: s_mov_b32 s12, s86760; GFX1164-NEXT: s_add_u32 s8, s34, 446761; GFX1164-NEXT: s_mov_b32 s13, s96762; GFX1164-NEXT: s_addc_u32 s9, s35, 06763; GFX1164-NEXT: s_getpc_b64 s[4:5]6764; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46765; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126766; GFX1164-NEXT: v_mov_b32_e32 v31, v06767; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x06768; GFX1164-NEXT: s_mov_b32 s14, s106769; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]6770; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]6771; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]6772; GFX1164-NEXT: s_mov_b32 s32, 06773; GFX1164-NEXT: s_waitcnt lgkmcnt(0)6774; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]6775; GFX1164-NEXT: v_mov_b32_e32 v4, 06776; GFX1164-NEXT: v_bfrev_b32_e32 v5, 16777; GFX1164-NEXT: s_mov_b64 s[0:1], exec6778; GFX1164-NEXT: .LBB10_1: ; %ComputeLoop6779; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=16780; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)6781; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]6782; GFX1164-NEXT: v_readlane_b32 s3, v1, s46783; GFX1164-NEXT: v_readlane_b32 s2, v0, s46784; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6785; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6786; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s46787; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]6788; GFX1164-NEXT: s_cbranch_scc1 .LBB10_16789; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd6790; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06791; GFX1164-NEXT: s_mov_b64 s[0:1], exec6792; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6793; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06794; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v06795; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6796; GFX1164-NEXT: s_cbranch_execz .LBB10_56797; GFX1164-NEXT: ; %bb.3:6798; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x246799; GFX1164-NEXT: v_mov_b32_e32 v6, 06800; GFX1164-NEXT: s_mov_b64 s[2:3], 06801; GFX1164-NEXT: s_waitcnt lgkmcnt(0)6802; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]6803; GFX1164-NEXT: .LBB10_4: ; %atomicrmw.start6804; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=16805; GFX1164-NEXT: s_waitcnt vmcnt(0)6806; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6807; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6808; GFX1164-NEXT: s_waitcnt vmcnt(0)6809; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6810; GFX1164-NEXT: v_mov_b32_e32 v3, v16811; GFX1164-NEXT: v_mov_b32_e32 v2, v06812; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6813; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6814; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]6815; GFX1164-NEXT: s_cbranch_execnz .LBB10_46816; GFX1164-NEXT: .LBB10_5:6817; GFX1164-NEXT: s_endpgm6818;6819; GFX1132-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6820; GFX1132: ; %bb.0:6821; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]6822; GFX1132-NEXT: v_mov_b32_e32 v31, v06823; GFX1132-NEXT: s_add_u32 s8, s34, 446824; GFX1132-NEXT: s_addc_u32 s9, s35, 06825; GFX1132-NEXT: s_getpc_b64 s[4:5]6826; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46827; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126828; GFX1132-NEXT: s_mov_b32 s12, s136829; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x06830; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]6831; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]6832; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]6833; GFX1132-NEXT: s_mov_b32 s13, s146834; GFX1132-NEXT: s_mov_b32 s14, s156835; GFX1132-NEXT: s_mov_b32 s32, 06836; GFX1132-NEXT: s_waitcnt lgkmcnt(0)6837; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]6838; GFX1132-NEXT: v_mov_b32_e32 v4, 06839; GFX1132-NEXT: v_bfrev_b32_e32 v5, 16840; GFX1132-NEXT: s_mov_b32 s0, exec_lo6841; GFX1132-NEXT: .LBB10_1: ; %ComputeLoop6842; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=16843; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)6844; GFX1132-NEXT: s_ctz_i32_b32 s1, s06845; GFX1132-NEXT: v_readlane_b32 s3, v1, s16846; GFX1132-NEXT: v_readlane_b32 s2, v0, s16847; GFX1132-NEXT: s_lshl_b32 s1, 1, s16848; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6849; GFX1132-NEXT: s_and_not1_b32 s0, s0, s16850; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6851; GFX1132-NEXT: s_cbranch_scc1 .LBB10_16852; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd6853; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06854; GFX1132-NEXT: s_mov_b32 s2, 06855; GFX1132-NEXT: s_mov_b32 s0, exec_lo6856; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)6857; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v06858; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s06859; GFX1132-NEXT: s_cbranch_execz .LBB10_56860; GFX1132-NEXT: ; %bb.3:6861; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x246862; GFX1132-NEXT: v_mov_b32_e32 v6, 06863; GFX1132-NEXT: s_waitcnt lgkmcnt(0)6864; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]6865; GFX1132-NEXT: .LBB10_4: ; %atomicrmw.start6866; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=16867; GFX1132-NEXT: s_waitcnt vmcnt(0)6868; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]6869; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6870; GFX1132-NEXT: s_waitcnt vmcnt(0)6871; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6872; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v06873; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s26874; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6875; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s26876; GFX1132-NEXT: s_cbranch_execnz .LBB10_46877; GFX1132-NEXT: .LBB10_5:6878; GFX1132-NEXT: s_endpgm6879;6880; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6881; GFX7LESS-DPP: ; %bb.0:6882; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 06883; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD06884; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD16885; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -16886; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0006887; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s116888; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 06889; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s106890; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s96891; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s86892; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6893; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x96894; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0006895; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -16896; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 446897; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 06898; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]6899; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46900; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126901; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06902; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v26903; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v16904; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v16905; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v26906; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6907; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6908; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]6909; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]6910; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)6911; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6912; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 06913; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 06914; GFX7LESS-DPP-NEXT: .LBB10_1: ; %atomicrmw.start6915; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=16916; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)6917; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], -v[0:1]6918; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)6919; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v56920; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v46921; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v36922; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v26923; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc6924; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)6925; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]6926; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]6927; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v66928; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v76929; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]6930; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB10_16931; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end6932; GFX7LESS-DPP-NEXT: s_endpgm6933;6934; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:6935; GFX9-DPP: ; %bb.0:6936; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06937; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16938; GFX9-DPP-NEXT: s_mov_b32 s38, -16939; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000006940; GFX9-DPP-NEXT: s_add_u32 s36, s36, s116941; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 06942; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]6943; GFX9-DPP-NEXT: s_mov_b32 s12, s86944; GFX9-DPP-NEXT: s_add_u32 s8, s34, 446945; GFX9-DPP-NEXT: s_mov_b32 s13, s96946; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 06947; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]6948; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46949; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126950; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06951; GFX9-DPP-NEXT: s_mov_b32 s14, s106952; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6953; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v26954; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v16955; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6956; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6957; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]6958; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v26959; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]6960; GFX9-DPP-NEXT: s_mov_b32 s32, 06961; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)6962; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6963; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -16964; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 16965; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]6966; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]6967; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16968; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06969; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 06970; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf6971; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf6972; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6973; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16974; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06975; GFX9-DPP-NEXT: s_nop 06976; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf6977; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf6978; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6979; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16980; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06981; GFX9-DPP-NEXT: s_nop 06982; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf6983; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf6984; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6985; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16986; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06987; GFX9-DPP-NEXT: s_nop 06988; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf6989; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf6990; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6991; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16992; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06993; GFX9-DPP-NEXT: s_nop 06994; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf6995; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf6996; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6997; GFX9-DPP-NEXT: s_nop 16998; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf6999; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf7000; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]7001; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]7002; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 07003; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 07004; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v17005; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -17006; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 637007; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 637008; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]7009; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]7010; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v17011; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc7012; GFX9-DPP-NEXT: s_cbranch_execz .LBB10_37013; GFX9-DPP-NEXT: ; %bb.1:7014; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x247015; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 07016; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)7017; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]7018; GFX9-DPP-NEXT: .LBB10_2: ; %atomicrmw.start7019; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=17020; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)7021; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], -s[0:1]7022; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc7023; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)7024; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]7025; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v27026; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7027; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v17028; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]7029; GFX9-DPP-NEXT: s_cbranch_execnz .LBB10_27030; GFX9-DPP-NEXT: .LBB10_3:7031; GFX9-DPP-NEXT: s_endpgm7032;7033; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:7034; GFX1064-DPP: ; %bb.0:7035; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07036; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17037; GFX1064-DPP-NEXT: s_mov_b32 s38, -17038; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160007039; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s117040; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]7041; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 07042; GFX1064-DPP-NEXT: s_mov_b32 s12, s87043; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 447044; GFX1064-DPP-NEXT: s_mov_b32 s13, s97045; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 07046; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]7047; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+47048; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+127049; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v27050; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07051; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v17052; GFX1064-DPP-NEXT: s_mov_b32 s14, s107053; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]7054; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]7055; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]7056; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v27057; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]7058; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]7059; GFX1064-DPP-NEXT: s_mov_b32 s32, 07060; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)7061; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]7062; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -17063; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 17064; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 07065; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]7066; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]7067; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf7068; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf7069; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]7070; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 17071; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 07072; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf7073; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf7074; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7075; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 17076; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 07077; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf7078; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf7079; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7080; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 17081; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 07082; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf7083; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf7084; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7085; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 07086; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 07087; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7088; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 07089; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 07090; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 327091; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 327092; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]7093; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]7094; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07095; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 07096; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v07097; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v37098; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v47099; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v77100; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7101; GFX1064-DPP-NEXT: s_cbranch_execz .LBB10_37102; GFX1064-DPP-NEXT: ; %bb.1:7103; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x247104; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 07105; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)7106; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]7107; GFX1064-DPP-NEXT: .LBB10_2: ; %atomicrmw.start7108; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=17109; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)7110; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]7111; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc7112; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)7113; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]7114; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v87115; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v77116; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7117; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]7118; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB10_27119; GFX1064-DPP-NEXT: .LBB10_3:7120; GFX1064-DPP-NEXT: s_endpgm7121;7122; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:7123; GFX1032-DPP: ; %bb.0:7124; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07125; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17126; GFX1032-DPP-NEXT: s_mov_b32 s38, -17127; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160007128; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s117129; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]7130; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 07131; GFX1032-DPP-NEXT: s_mov_b32 s12, s87132; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 447133; GFX1032-DPP-NEXT: s_mov_b32 s13, s97134; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 07135; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]7136; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+47137; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+127138; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v27139; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07140; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v17141; GFX1032-DPP-NEXT: s_mov_b32 s14, s107142; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]7143; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]7144; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]7145; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v27146; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]7147; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]7148; GFX1032-DPP-NEXT: s_mov_b32 s32, 07149; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)7150; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]7151; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -17152; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 17153; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 07154; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s07155; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s07156; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf7157; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf7158; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]7159; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 17160; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 07161; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf7162; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf7163; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7164; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 17165; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 07166; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf7167; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf7168; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7169; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 17170; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 07171; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf7172; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf7173; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7174; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 07175; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 07176; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]7177; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s07178; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 07179; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v37180; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 07181; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v47182; GFX1032-DPP-NEXT: s_mov_b32 s2, 07183; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v77184; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo7185; GFX1032-DPP-NEXT: s_cbranch_execz .LBB10_37186; GFX1032-DPP-NEXT: ; %bb.1:7187; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x247188; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)7189; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]7190; GFX1032-DPP-NEXT: .LBB10_2: ; %atomicrmw.start7191; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=17192; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)7193; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]7194; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc7195; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)7196; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]7197; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v87198; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v77199; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s27200; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s27201; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB10_27202; GFX1032-DPP-NEXT: .LBB10_3:7203; GFX1032-DPP-NEXT: s_endpgm7204;7205; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:7206; GFX1164-DPP: ; %bb.0:7207; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]7208; GFX1164-DPP-NEXT: s_mov_b32 s12, s87209; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 447210; GFX1164-DPP-NEXT: s_mov_b32 s13, s97211; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 07212; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]7213; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+47214; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+127215; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v07216; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x07217; GFX1164-DPP-NEXT: s_mov_b32 s14, s107218; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]7219; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]7220; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]7221; GFX1164-DPP-NEXT: s_mov_b32 s32, 07222; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)7223; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]7224; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -17225; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 17226; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 07227; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]7228; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]7229; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7230; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf7231; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf7232; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)7233; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]7234; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 17235; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 07236; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf7237; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7238; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf7239; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7240; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 17241; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 07242; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7243; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf7244; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf7245; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)7246; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7247; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 17248; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 07249; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf7250; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7251; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf7252; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7253; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)7254; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 07255; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 07256; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7257; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7258; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v37259; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7260; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v27261; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7262; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]7263; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)7264; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07265; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 07266; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec7267; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)7268; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v07269; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)7270; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v27271; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v37272; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v67273; GFX1164-DPP-NEXT: s_cbranch_execz .LBB10_37274; GFX1164-DPP-NEXT: ; %bb.1:7275; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x247276; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 07277; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)7278; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]7279; GFX1164-DPP-NEXT: .LBB10_2: ; %atomicrmw.start7280; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=17281; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)7282; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]7283; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc7284; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)7285; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]7286; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v77287; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v67288; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7289; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7290; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]7291; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB10_27292; GFX1164-DPP-NEXT: .LBB10_3:7293; GFX1164-DPP-NEXT: s_endpgm7294;7295; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_align4_unsafe:7296; GFX1132-DPP: ; %bb.0:7297; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]7298; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v07299; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 447300; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 07301; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]7302; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+47303; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+127304; GFX1132-DPP-NEXT: s_mov_b32 s12, s137305; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x07306; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]7307; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]7308; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]7309; GFX1132-DPP-NEXT: s_mov_b32 s13, s147310; GFX1132-DPP-NEXT: s_mov_b32 s14, s157311; GFX1132-DPP-NEXT: s_mov_b32 s32, 07312; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7313; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]7314; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -17315; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 17316; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 07317; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s07318; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s07319; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7320; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf7321; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf7322; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)7323; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]7324; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 17325; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 07326; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf7327; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7328; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf7329; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7330; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 17331; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 07332; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7333; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf7334; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf7335; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)7336; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7337; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 17338; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 07339; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf7340; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7341; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf7342; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7343; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)7344; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 07345; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 07346; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)7347; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7348; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s07349; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v27350; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 07351; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)7352; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v37353; GFX1132-DPP-NEXT: s_mov_b32 s2, 07354; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo7355; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v67356; GFX1132-DPP-NEXT: s_cbranch_execz .LBB10_37357; GFX1132-DPP-NEXT: ; %bb.1:7358; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x247359; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7360; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]7361; GFX1132-DPP-NEXT: .LBB10_2: ; %atomicrmw.start7362; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=17363; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7364; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]7365; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc7366; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7367; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]7368; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v67369; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s27370; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7371; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27372; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB10_27373; GFX1132-DPP-NEXT: .LBB10_3:7374; GFX1132-DPP-NEXT: s_endpgm7375 %divValue = call double @div.float.value()7376 %result = atomicrmw fsub ptr addrspace(1) %ptr, double %divValue syncscope("agent") monotonic, align 87377 ret void7378}7379 7380define amdgpu_kernel void @global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {7381; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7382; GFX7LESS: ; %bb.0:7383; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07384; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17385; GFX7LESS-NEXT: s_mov_b32 s14, -17386; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0007387; GFX7LESS-NEXT: s_add_u32 s12, s12, s117388; GFX7LESS-NEXT: s_addc_u32 s13, s13, 07389; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec7390; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 07391; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v07392; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07393; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc7394; GFX7LESS-NEXT: s_cbranch_execz .LBB11_37395; GFX7LESS-NEXT: ; %bb.1:7396; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97397; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[2:3]7398; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000007399; GFX7LESS-NEXT: v_mov_b32_e32 v0, 07400; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000007401; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7402; GFX7LESS-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x07403; GFX7LESS-NEXT: s_mov_b64 s[4:5], 07404; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0007405; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]7406; GFX7LESS-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7407; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7408; GFX7LESS-NEXT: v_mov_b32_e32 v2, s87409; GFX7LESS-NEXT: v_mov_b32_e32 v3, s97410; GFX7LESS-NEXT: s_mov_b32 s2, -17411; GFX7LESS-NEXT: .LBB11_2: ; %atomicrmw.start7412; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=17413; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7414; GFX7LESS-NEXT: s_waitcnt expcnt(0)7415; GFX7LESS-NEXT: v_mov_b32_e32 v9, v37416; GFX7LESS-NEXT: v_mov_b32_e32 v8, v27417; GFX7LESS-NEXT: v_mov_b32_e32 v7, v17418; GFX7LESS-NEXT: v_mov_b32_e32 v6, v07419; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc7420; GFX7LESS-NEXT: s_waitcnt vmcnt(0)7421; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]7422; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7423; GFX7LESS-NEXT: v_mov_b32_e32 v2, v67424; GFX7LESS-NEXT: v_mov_b32_e32 v3, v77425; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]7426; GFX7LESS-NEXT: s_cbranch_execnz .LBB11_27427; GFX7LESS-NEXT: .LBB11_3:7428; GFX7LESS-NEXT: s_endpgm7429;7430; GFX9-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7431; GFX9: ; %bb.0:7432; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07433; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17434; GFX9-NEXT: s_mov_b32 s14, -17435; GFX9-NEXT: s_mov_b64 s[0:1], exec7436; GFX9-NEXT: s_mov_b32 s15, 0xe000007437; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07438; GFX9-NEXT: s_add_u32 s12, s12, s117439; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07440; GFX9-NEXT: s_addc_u32 s13, s13, 07441; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07442; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc7443; GFX9-NEXT: s_cbranch_execz .LBB11_37444; GFX9-NEXT: ; %bb.1:7445; GFX9-NEXT: v_mov_b32_e32 v0, 07446; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]7447; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000007448; GFX9-NEXT: s_mov_b32 s1, 0x433000007449; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]7450; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247451; GFX9-NEXT: s_mov_b64 s[2:3], 07452; GFX9-NEXT: v_mov_b32_e32 v6, 07453; GFX9-NEXT: s_waitcnt lgkmcnt(0)7454; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07455; GFX9-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7456; GFX9-NEXT: s_waitcnt lgkmcnt(0)7457; GFX9-NEXT: v_mov_b32_e32 v2, s47458; GFX9-NEXT: v_mov_b32_e32 v3, s57459; GFX9-NEXT: .LBB11_2: ; %atomicrmw.start7460; GFX9-NEXT: ; =>This Inner Loop Header: Depth=17461; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7462; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7463; GFX9-NEXT: s_waitcnt vmcnt(0)7464; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7465; GFX9-NEXT: v_mov_b32_e32 v3, v17466; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7467; GFX9-NEXT: v_mov_b32_e32 v2, v07468; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]7469; GFX9-NEXT: s_cbranch_execnz .LBB11_27470; GFX9-NEXT: .LBB11_3:7471; GFX9-NEXT: s_endpgm7472;7473; GFX1064-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7474; GFX1064: ; %bb.0:7475; GFX1064-NEXT: s_mov_b64 s[0:1], exec7476; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07477; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07478; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17479; GFX1064-NEXT: s_mov_b32 s14, -17480; GFX1064-NEXT: s_mov_b32 s15, 0x31e160007481; GFX1064-NEXT: s_add_u32 s12, s12, s117482; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07483; GFX1064-NEXT: s_addc_u32 s13, s13, 07484; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07485; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc7486; GFX1064-NEXT: s_cbranch_execz .LBB11_37487; GFX1064-NEXT: ; %bb.1:7488; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[0:1]7489; GFX1064-NEXT: s_mov_b32 s3, 0x433000007490; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247491; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]7492; GFX1064-NEXT: v_mov_b32_e32 v6, 07493; GFX1064-NEXT: s_waitcnt lgkmcnt(0)7494; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x07495; GFX1064-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7496; GFX1064-NEXT: s_waitcnt lgkmcnt(0)7497; GFX1064-NEXT: v_mov_b32_e32 v2, s27498; GFX1064-NEXT: v_mov_b32_e32 v3, s37499; GFX1064-NEXT: s_mov_b64 s[2:3], 07500; GFX1064-NEXT: .LBB11_2: ; %atomicrmw.start7501; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=17502; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7503; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7504; GFX1064-NEXT: s_waitcnt vmcnt(0)7505; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7506; GFX1064-NEXT: v_mov_b32_e32 v3, v17507; GFX1064-NEXT: v_mov_b32_e32 v2, v07508; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7509; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]7510; GFX1064-NEXT: s_cbranch_execnz .LBB11_27511; GFX1064-NEXT: .LBB11_3:7512; GFX1064-NEXT: s_endpgm7513;7514; GFX1032-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7515; GFX1032: ; %bb.0:7516; GFX1032-NEXT: s_mov_b32 s0, exec_lo7517; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07518; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07519; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17520; GFX1032-NEXT: s_mov_b32 s14, -17521; GFX1032-NEXT: s_mov_b32 s15, 0x31c160007522; GFX1032-NEXT: s_add_u32 s12, s12, s117523; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07524; GFX1032-NEXT: s_addc_u32 s13, s13, 07525; GFX1032-NEXT: s_mov_b32 s2, 07526; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo7527; GFX1032-NEXT: s_cbranch_execz .LBB11_37528; GFX1032-NEXT: ; %bb.1:7529; GFX1032-NEXT: s_bcnt1_i32_b32 s6, s07530; GFX1032-NEXT: s_mov_b32 s7, 0x433000007531; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247532; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]7533; GFX1032-NEXT: v_mov_b32_e32 v6, 07534; GFX1032-NEXT: s_waitcnt lgkmcnt(0)7535; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07536; GFX1032-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7537; GFX1032-NEXT: s_waitcnt lgkmcnt(0)7538; GFX1032-NEXT: v_mov_b32_e32 v2, s47539; GFX1032-NEXT: v_mov_b32_e32 v3, s57540; GFX1032-NEXT: .LBB11_2: ; %atomicrmw.start7541; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=17542; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7543; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7544; GFX1032-NEXT: s_waitcnt vmcnt(0)7545; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7546; GFX1032-NEXT: v_mov_b32_e32 v3, v17547; GFX1032-NEXT: v_mov_b32_e32 v2, v07548; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s27549; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s27550; GFX1032-NEXT: s_cbranch_execnz .LBB11_27551; GFX1032-NEXT: .LBB11_3:7552; GFX1032-NEXT: s_endpgm7553;7554; GFX1164-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7555; GFX1164: ; %bb.0:7556; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec7557; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000007558; GFX1164-NEXT: v_mov_b32_e32 v1, s07559; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07560; GFX1164-NEXT: s_mov_b64 s[0:1], exec7561; GFX1164-NEXT: s_clause 0x17562; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:47563; GFX1164-NEXT: scratch_store_b32 off, v1, off7564; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off7565; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v27566; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)7567; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v27568; GFX1164-NEXT: s_cbranch_execz .LBB11_37569; GFX1164-NEXT: ; %bb.1:7570; GFX1164-NEXT: s_waitcnt vmcnt(0)7571; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7572; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x247573; GFX1164-NEXT: v_mov_b32_e32 v6, 07574; GFX1164-NEXT: s_waitcnt lgkmcnt(0)7575; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x07576; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2)7577; GFX1164-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7578; GFX1164-NEXT: s_waitcnt lgkmcnt(0)7579; GFX1164-NEXT: v_mov_b32_e32 v2, s27580; GFX1164-NEXT: v_mov_b32_e32 v3, s37581; GFX1164-NEXT: s_mov_b64 s[2:3], 07582; GFX1164-NEXT: .LBB11_2: ; %atomicrmw.start7583; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=17584; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)7585; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7586; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7587; GFX1164-NEXT: s_waitcnt vmcnt(0)7588; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7589; GFX1164-NEXT: v_mov_b32_e32 v3, v17590; GFX1164-NEXT: v_mov_b32_e32 v2, v07591; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7592; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7593; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]7594; GFX1164-NEXT: s_cbranch_execnz .LBB11_27595; GFX1164-NEXT: .LBB11_3:7596; GFX1164-NEXT: s_endpgm7597;7598; GFX1132-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7599; GFX1132: ; %bb.0:7600; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo7601; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7602; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s07603; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07604; GFX1132-NEXT: s_mov_b32 s2, 07605; GFX1132-NEXT: s_mov_b32 s0, exec_lo7606; GFX1132-NEXT: s_clause 0x17607; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:47608; GFX1132-NEXT: scratch_store_b32 off, v1, off7609; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off7610; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v27611; GFX1132-NEXT: s_cbranch_execz .LBB11_37612; GFX1132-NEXT: ; %bb.1:7613; GFX1132-NEXT: s_waitcnt vmcnt(0)7614; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7615; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x247616; GFX1132-NEXT: v_mov_b32_e32 v6, 07617; GFX1132-NEXT: s_waitcnt lgkmcnt(0)7618; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x07619; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2)7620; GFX1132-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7621; GFX1132-NEXT: s_waitcnt lgkmcnt(0)7622; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s57623; GFX1132-NEXT: .LBB11_2: ; %atomicrmw.start7624; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=17625; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)7626; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7627; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7628; GFX1132-NEXT: s_waitcnt vmcnt(0)7629; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7630; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v07631; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s27632; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7633; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27634; GFX1132-NEXT: s_cbranch_execnz .LBB11_27635; GFX1132-NEXT: .LBB11_3:7636; GFX1132-NEXT: s_endpgm7637;7638; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7639; GFX7LESS-DPP: ; %bb.0:7640; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07641; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17642; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -17643; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0007644; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s117645; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 07646; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec7647; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 07648; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v07649; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07650; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7651; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB11_37652; GFX7LESS-DPP-NEXT: ; %bb.1:7653; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97654; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[2:3]7655; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000007656; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 07657; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000007658; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)7659; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x07660; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 07661; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0007662; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]7663; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7664; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)7665; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s87666; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s97667; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -17668; GFX7LESS-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7669; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=17670; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7671; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)7672; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v37673; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v27674; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v17675; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v07676; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc7677; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)7678; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]7679; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7680; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v67681; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v77682; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]7683; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB11_27684; GFX7LESS-DPP-NEXT: .LBB11_3:7685; GFX7LESS-DPP-NEXT: s_endpgm7686;7687; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7688; GFX9-DPP: ; %bb.0:7689; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07690; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17691; GFX9-DPP-NEXT: s_mov_b32 s14, -17692; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec7693; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000007694; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07695; GFX9-DPP-NEXT: s_add_u32 s12, s12, s117696; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07697; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 07698; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07699; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc7700; GFX9-DPP-NEXT: s_cbranch_execz .LBB11_37701; GFX9-DPP-NEXT: ; %bb.1:7702; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 07703; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]7704; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000007705; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000007706; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]7707; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247708; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 07709; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 07710; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)7711; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07712; GFX9-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7713; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)7714; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s47715; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s57716; GFX9-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7717; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=17718; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7719; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7720; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)7721; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7722; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v17723; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7724; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v07725; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]7726; GFX9-DPP-NEXT: s_cbranch_execnz .LBB11_27727; GFX9-DPP-NEXT: .LBB11_3:7728; GFX9-DPP-NEXT: s_endpgm7729;7730; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7731; GFX1064-DPP: ; %bb.0:7732; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec7733; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07734; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07735; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17736; GFX1064-DPP-NEXT: s_mov_b32 s14, -17737; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160007738; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s117739; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07740; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 07741; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07742; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc7743; GFX1064-DPP-NEXT: s_cbranch_execz .LBB11_37744; GFX1064-DPP-NEXT: ; %bb.1:7745; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[0:1]7746; GFX1064-DPP-NEXT: s_mov_b32 s3, 0x433000007747; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247748; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]7749; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 07750; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)7751; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x07752; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7753; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)7754; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s27755; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s37756; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 07757; GFX1064-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7758; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=17759; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7760; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7761; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)7762; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7763; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v17764; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v07765; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7766; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]7767; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB11_27768; GFX1064-DPP-NEXT: .LBB11_3:7769; GFX1064-DPP-NEXT: s_endpgm7770;7771; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7772; GFX1032-DPP: ; %bb.0:7773; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo7774; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07775; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07776; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17777; GFX1032-DPP-NEXT: s_mov_b32 s14, -17778; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160007779; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s117780; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07781; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 07782; GFX1032-DPP-NEXT: s_mov_b32 s2, 07783; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo7784; GFX1032-DPP-NEXT: s_cbranch_execz .LBB11_37785; GFX1032-DPP-NEXT: ; %bb.1:7786; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s6, s07787; GFX1032-DPP-NEXT: s_mov_b32 s7, 0x433000007788; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247789; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]7790; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 07791; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)7792; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07793; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7794; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)7795; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s47796; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s57797; GFX1032-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7798; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=17799; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7800; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7801; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)7802; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7803; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v17804; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v07805; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s27806; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s27807; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB11_27808; GFX1032-DPP-NEXT: .LBB11_3:7809; GFX1032-DPP-NEXT: s_endpgm7810;7811; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7812; GFX1164-DPP: ; %bb.0:7813; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec7814; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000007815; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s07816; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07817; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec7818; GFX1164-DPP-NEXT: s_clause 0x17819; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:47820; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off7821; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off7822; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v27823; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)7824; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v27825; GFX1164-DPP-NEXT: s_cbranch_execz .LBB11_37826; GFX1164-DPP-NEXT: ; %bb.1:7827; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)7828; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7829; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x247830; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 07831; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)7832; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x07833; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)7834; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7835; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)7836; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s27837; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s37838; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 07839; GFX1164-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7840; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=17841; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)7842; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7843; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7844; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)7845; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7846; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v17847; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v07848; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7849; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7850; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]7851; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB11_27852; GFX1164-DPP-NEXT: .LBB11_3:7853; GFX1164-DPP-NEXT: s_endpgm7854;7855; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7856; GFX1132-DPP: ; %bb.0:7857; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo7858; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7859; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s07860; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07861; GFX1132-DPP-NEXT: s_mov_b32 s2, 07862; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo7863; GFX1132-DPP-NEXT: s_clause 0x17864; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:47865; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off7866; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off7867; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v27868; GFX1132-DPP-NEXT: s_cbranch_execz .LBB11_37869; GFX1132-DPP-NEXT: ; %bb.1:7870; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7871; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7872; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x247873; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 07874; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7875; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x07876; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)7877; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7878; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7879; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s57880; GFX1132-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7881; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=17882; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)7883; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7884; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7885; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7886; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7887; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v07888; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s27889; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7890; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27891; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB11_27892; GFX1132-DPP-NEXT: .LBB11_3:7893; GFX1132-DPP-NEXT: s_endpgm7894 %result = atomicrmw fsub ptr addrspace(1) %ptr, double 4.0 syncscope("one-as") monotonic7895 ret void7896}7897define amdgpu_kernel void @global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {7898; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:7899; GFX7LESS: ; %bb.0:7900; GFX7LESS-NEXT: s_mov_b32 s32, 07901; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07902; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17903; GFX7LESS-NEXT: s_mov_b32 s38, -17904; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0007905; GFX7LESS-NEXT: s_add_u32 s36, s36, s117906; GFX7LESS-NEXT: s_addc_u32 s37, s37, 07907; GFX7LESS-NEXT: s_mov_b32 s14, s107908; GFX7LESS-NEXT: s_mov_b32 s13, s97909; GFX7LESS-NEXT: s_mov_b32 s12, s87910; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]7911; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]7912; GFX7LESS-NEXT: s_add_u32 s8, s34, 447913; GFX7LESS-NEXT: s_addc_u32 s9, s35, 07914; GFX7LESS-NEXT: s_getpc_b64 s[4:5]7915; GFX7LESS-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47916; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127917; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07918; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v27919; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v17920; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v17921; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v27922; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]7923; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]7924; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]7925; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]7926; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7927; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]7928; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec7929; GFX7LESS-NEXT: v_mov_b32_e32 v4, 07930; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 17931; GFX7LESS-NEXT: .LBB12_1: ; %ComputeLoop7932; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=17933; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]7934; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s47935; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s47936; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s47937; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]7938; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 07939; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]7940; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7941; GFX7LESS-NEXT: s_cbranch_vccnz .LBB12_17942; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd7943; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 07944; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v07945; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07946; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc7947; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7948; GFX7LESS-NEXT: s_cbranch_execz .LBB12_57949; GFX7LESS-NEXT: ; %bb.3:7950; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x97951; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0007952; GFX7LESS-NEXT: s_mov_b32 s2, -17953; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7954; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 07955; GFX7LESS-NEXT: s_mov_b64 s[4:5], 07956; GFX7LESS-NEXT: .LBB12_4: ; %atomicrmw.start7957; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=17958; GFX7LESS-NEXT: s_waitcnt vmcnt(0)7959; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]7960; GFX7LESS-NEXT: s_waitcnt expcnt(0)7961; GFX7LESS-NEXT: v_mov_b32_e32 v9, v37962; GFX7LESS-NEXT: v_mov_b32_e32 v8, v27963; GFX7LESS-NEXT: v_mov_b32_e32 v7, v17964; GFX7LESS-NEXT: v_mov_b32_e32 v6, v07965; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc7966; GFX7LESS-NEXT: s_waitcnt vmcnt(0)7967; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]7968; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7969; GFX7LESS-NEXT: v_mov_b32_e32 v2, v67970; GFX7LESS-NEXT: v_mov_b32_e32 v3, v77971; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]7972; GFX7LESS-NEXT: s_cbranch_execnz .LBB12_47973; GFX7LESS-NEXT: .LBB12_5:7974; GFX7LESS-NEXT: s_endpgm7975;7976; GFX9-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:7977; GFX9: ; %bb.0:7978; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07979; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17980; GFX9-NEXT: s_mov_b32 s38, -17981; GFX9-NEXT: s_mov_b32 s39, 0xe000007982; GFX9-NEXT: s_add_u32 s36, s36, s117983; GFX9-NEXT: s_addc_u32 s37, s37, 07984; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]7985; GFX9-NEXT: s_mov_b32 s12, s87986; GFX9-NEXT: s_add_u32 s8, s34, 447987; GFX9-NEXT: s_mov_b32 s13, s97988; GFX9-NEXT: s_addc_u32 s9, s35, 07989; GFX9-NEXT: s_getpc_b64 s[4:5]7990; GFX9-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47991; GFX9-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127992; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07993; GFX9-NEXT: s_mov_b32 s14, s107994; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]7995; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v27996; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v17997; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]7998; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]7999; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]8000; GFX9-NEXT: v_or3_b32 v31, v0, v1, v28001; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]8002; GFX9-NEXT: s_mov_b32 s32, 08003; GFX9-NEXT: s_waitcnt lgkmcnt(0)8004; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]8005; GFX9-NEXT: v_mov_b32_e32 v4, 08006; GFX9-NEXT: s_mov_b64 s[0:1], exec8007; GFX9-NEXT: v_bfrev_b32_e32 v5, 18008; GFX9-NEXT: .LBB12_1: ; %ComputeLoop8009; GFX9-NEXT: ; =>This Inner Loop Header: Depth=18010; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]8011; GFX9-NEXT: v_readlane_b32 s3, v1, s48012; GFX9-NEXT: v_readlane_b32 s2, v0, s48013; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]8014; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s48015; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]8016; GFX9-NEXT: s_cbranch_scc1 .LBB12_18017; GFX9-NEXT: ; %bb.2: ; %ComputeEnd8018; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08019; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08020; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08021; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc8022; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]8023; GFX9-NEXT: s_cbranch_execz .LBB12_58024; GFX9-NEXT: ; %bb.3:8025; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248026; GFX9-NEXT: v_mov_b32_e32 v6, 08027; GFX9-NEXT: s_mov_b64 s[2:3], 08028; GFX9-NEXT: s_waitcnt lgkmcnt(0)8029; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]8030; GFX9-NEXT: .LBB12_4: ; %atomicrmw.start8031; GFX9-NEXT: ; =>This Inner Loop Header: Depth=18032; GFX9-NEXT: s_waitcnt vmcnt(0)8033; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8034; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8035; GFX9-NEXT: s_waitcnt vmcnt(0)8036; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8037; GFX9-NEXT: v_mov_b32_e32 v3, v18038; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8039; GFX9-NEXT: v_mov_b32_e32 v2, v08040; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]8041; GFX9-NEXT: s_cbranch_execnz .LBB12_48042; GFX9-NEXT: .LBB12_5:8043; GFX9-NEXT: s_endpgm8044;8045; GFX1064-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8046; GFX1064: ; %bb.0:8047; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08048; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18049; GFX1064-NEXT: s_mov_b32 s38, -18050; GFX1064-NEXT: s_mov_b32 s39, 0x31e160008051; GFX1064-NEXT: s_add_u32 s36, s36, s118052; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]8053; GFX1064-NEXT: s_addc_u32 s37, s37, 08054; GFX1064-NEXT: s_mov_b32 s12, s88055; GFX1064-NEXT: s_add_u32 s8, s34, 448056; GFX1064-NEXT: s_mov_b32 s13, s98057; GFX1064-NEXT: s_addc_u32 s9, s35, 08058; GFX1064-NEXT: s_getpc_b64 s[4:5]8059; GFX1064-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48060; GFX1064-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128061; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v28062; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08063; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v18064; GFX1064-NEXT: s_mov_b32 s14, s108065; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]8066; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]8067; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]8068; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v28069; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]8070; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]8071; GFX1064-NEXT: s_mov_b32 s32, 08072; GFX1064-NEXT: s_waitcnt lgkmcnt(0)8073; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]8074; GFX1064-NEXT: v_mov_b32_e32 v4, 08075; GFX1064-NEXT: v_bfrev_b32_e32 v5, 18076; GFX1064-NEXT: s_mov_b64 s[0:1], exec8077; GFX1064-NEXT: .LBB12_1: ; %ComputeLoop8078; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=18079; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]8080; GFX1064-NEXT: v_readlane_b32 s3, v1, s48081; GFX1064-NEXT: v_readlane_b32 s2, v0, s48082; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]8083; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s48084; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]8085; GFX1064-NEXT: s_cbranch_scc1 .LBB12_18086; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd8087; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08088; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08089; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08090; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc8091; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]8092; GFX1064-NEXT: s_cbranch_execz .LBB12_58093; GFX1064-NEXT: ; %bb.3:8094; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248095; GFX1064-NEXT: v_mov_b32_e32 v6, 08096; GFX1064-NEXT: s_mov_b64 s[2:3], 08097; GFX1064-NEXT: s_waitcnt lgkmcnt(0)8098; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]8099; GFX1064-NEXT: .LBB12_4: ; %atomicrmw.start8100; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=18101; GFX1064-NEXT: s_waitcnt vmcnt(0)8102; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8103; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8104; GFX1064-NEXT: s_waitcnt vmcnt(0)8105; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8106; GFX1064-NEXT: v_mov_b32_e32 v3, v18107; GFX1064-NEXT: v_mov_b32_e32 v2, v08108; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8109; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]8110; GFX1064-NEXT: s_cbranch_execnz .LBB12_48111; GFX1064-NEXT: .LBB12_5:8112; GFX1064-NEXT: s_endpgm8113;8114; GFX1032-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8115; GFX1032: ; %bb.0:8116; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08117; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18118; GFX1032-NEXT: s_mov_b32 s38, -18119; GFX1032-NEXT: s_mov_b32 s39, 0x31c160008120; GFX1032-NEXT: s_add_u32 s36, s36, s118121; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]8122; GFX1032-NEXT: s_addc_u32 s37, s37, 08123; GFX1032-NEXT: s_mov_b32 s12, s88124; GFX1032-NEXT: s_add_u32 s8, s34, 448125; GFX1032-NEXT: s_mov_b32 s13, s98126; GFX1032-NEXT: s_addc_u32 s9, s35, 08127; GFX1032-NEXT: s_getpc_b64 s[4:5]8128; GFX1032-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48129; GFX1032-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128130; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v28131; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08132; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v18133; GFX1032-NEXT: s_mov_b32 s14, s108134; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]8135; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]8136; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]8137; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v28138; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]8139; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]8140; GFX1032-NEXT: s_mov_b32 s32, 08141; GFX1032-NEXT: s_waitcnt lgkmcnt(0)8142; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]8143; GFX1032-NEXT: v_mov_b32_e32 v4, 08144; GFX1032-NEXT: v_bfrev_b32_e32 v5, 18145; GFX1032-NEXT: s_mov_b32 s0, exec_lo8146; GFX1032-NEXT: .LBB12_1: ; %ComputeLoop8147; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=18148; GFX1032-NEXT: s_ff1_i32_b32 s1, s08149; GFX1032-NEXT: v_readlane_b32 s3, v1, s18150; GFX1032-NEXT: v_readlane_b32 s2, v0, s18151; GFX1032-NEXT: s_lshl_b32 s1, 1, s18152; GFX1032-NEXT: s_andn2_b32 s0, s0, s18153; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]8154; GFX1032-NEXT: s_cbranch_scc1 .LBB12_18155; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd8156; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08157; GFX1032-NEXT: s_mov_b32 s2, 08158; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08159; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo8160; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s08161; GFX1032-NEXT: s_cbranch_execz .LBB12_58162; GFX1032-NEXT: ; %bb.3:8163; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248164; GFX1032-NEXT: v_mov_b32_e32 v6, 08165; GFX1032-NEXT: s_waitcnt lgkmcnt(0)8166; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]8167; GFX1032-NEXT: .LBB12_4: ; %atomicrmw.start8168; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=18169; GFX1032-NEXT: s_waitcnt vmcnt(0)8170; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8171; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8172; GFX1032-NEXT: s_waitcnt vmcnt(0)8173; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8174; GFX1032-NEXT: v_mov_b32_e32 v3, v18175; GFX1032-NEXT: v_mov_b32_e32 v2, v08176; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s28177; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s28178; GFX1032-NEXT: s_cbranch_execnz .LBB12_48179; GFX1032-NEXT: .LBB12_5:8180; GFX1032-NEXT: s_endpgm8181;8182; GFX1164-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8183; GFX1164: ; %bb.0:8184; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]8185; GFX1164-NEXT: s_mov_b32 s12, s88186; GFX1164-NEXT: s_add_u32 s8, s34, 448187; GFX1164-NEXT: s_mov_b32 s13, s98188; GFX1164-NEXT: s_addc_u32 s9, s35, 08189; GFX1164-NEXT: s_getpc_b64 s[4:5]8190; GFX1164-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48191; GFX1164-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128192; GFX1164-NEXT: v_mov_b32_e32 v31, v08193; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x08194; GFX1164-NEXT: s_mov_b32 s14, s108195; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]8196; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]8197; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]8198; GFX1164-NEXT: s_mov_b32 s32, 08199; GFX1164-NEXT: s_waitcnt lgkmcnt(0)8200; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]8201; GFX1164-NEXT: v_mov_b32_e32 v4, 08202; GFX1164-NEXT: v_bfrev_b32_e32 v5, 18203; GFX1164-NEXT: s_mov_b64 s[0:1], exec8204; GFX1164-NEXT: .LBB12_1: ; %ComputeLoop8205; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=18206; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)8207; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]8208; GFX1164-NEXT: v_readlane_b32 s3, v1, s48209; GFX1164-NEXT: v_readlane_b32 s2, v0, s48210; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)8211; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]8212; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s48213; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]8214; GFX1164-NEXT: s_cbranch_scc1 .LBB12_18215; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd8216; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08217; GFX1164-NEXT: s_mov_b64 s[0:1], exec8218; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8219; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v08220; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v08221; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]8222; GFX1164-NEXT: s_cbranch_execz .LBB12_58223; GFX1164-NEXT: ; %bb.3:8224; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x248225; GFX1164-NEXT: v_mov_b32_e32 v6, 08226; GFX1164-NEXT: s_mov_b64 s[2:3], 08227; GFX1164-NEXT: s_waitcnt lgkmcnt(0)8228; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]8229; GFX1164-NEXT: .LBB12_4: ; %atomicrmw.start8230; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=18231; GFX1164-NEXT: s_waitcnt vmcnt(0)8232; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8233; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc8234; GFX1164-NEXT: s_waitcnt vmcnt(0)8235; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8236; GFX1164-NEXT: v_mov_b32_e32 v3, v18237; GFX1164-NEXT: v_mov_b32_e32 v2, v08238; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8239; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8240; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]8241; GFX1164-NEXT: s_cbranch_execnz .LBB12_48242; GFX1164-NEXT: .LBB12_5:8243; GFX1164-NEXT: s_endpgm8244;8245; GFX1132-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8246; GFX1132: ; %bb.0:8247; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]8248; GFX1132-NEXT: v_mov_b32_e32 v31, v08249; GFX1132-NEXT: s_add_u32 s8, s34, 448250; GFX1132-NEXT: s_addc_u32 s9, s35, 08251; GFX1132-NEXT: s_getpc_b64 s[4:5]8252; GFX1132-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48253; GFX1132-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128254; GFX1132-NEXT: s_mov_b32 s12, s138255; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x08256; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]8257; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]8258; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]8259; GFX1132-NEXT: s_mov_b32 s13, s148260; GFX1132-NEXT: s_mov_b32 s14, s158261; GFX1132-NEXT: s_mov_b32 s32, 08262; GFX1132-NEXT: s_waitcnt lgkmcnt(0)8263; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]8264; GFX1132-NEXT: v_mov_b32_e32 v4, 08265; GFX1132-NEXT: v_bfrev_b32_e32 v5, 18266; GFX1132-NEXT: s_mov_b32 s0, exec_lo8267; GFX1132-NEXT: .LBB12_1: ; %ComputeLoop8268; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=18269; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)8270; GFX1132-NEXT: s_ctz_i32_b32 s1, s08271; GFX1132-NEXT: v_readlane_b32 s3, v1, s18272; GFX1132-NEXT: v_readlane_b32 s2, v0, s18273; GFX1132-NEXT: s_lshl_b32 s1, 1, s18274; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8275; GFX1132-NEXT: s_and_not1_b32 s0, s0, s18276; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]8277; GFX1132-NEXT: s_cbranch_scc1 .LBB12_18278; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd8279; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08280; GFX1132-NEXT: s_mov_b32 s2, 08281; GFX1132-NEXT: s_mov_b32 s0, exec_lo8282; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)8283; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v08284; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s08285; GFX1132-NEXT: s_cbranch_execz .LBB12_58286; GFX1132-NEXT: ; %bb.3:8287; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x248288; GFX1132-NEXT: v_mov_b32_e32 v6, 08289; GFX1132-NEXT: s_waitcnt lgkmcnt(0)8290; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]8291; GFX1132-NEXT: .LBB12_4: ; %atomicrmw.start8292; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=18293; GFX1132-NEXT: s_waitcnt vmcnt(0)8294; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8295; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc8296; GFX1132-NEXT: s_waitcnt vmcnt(0)8297; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8298; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v08299; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s28300; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8301; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s28302; GFX1132-NEXT: s_cbranch_execnz .LBB12_48303; GFX1132-NEXT: .LBB12_5:8304; GFX1132-NEXT: s_endpgm8305;8306; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8307; GFX7LESS-DPP: ; %bb.0:8308; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 08309; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD08310; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD18311; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -18312; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0008313; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s118314; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 08315; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s108316; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s98317; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s88318; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8319; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x98320; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0008321; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -18322; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 448323; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 08324; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]8325; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48326; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128327; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08328; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28329; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18330; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v18331; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v28332; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8333; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8334; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]8335; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]8336; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)8337; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8338; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 08339; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 08340; GFX7LESS-DPP-NEXT: .LBB12_1: ; %atomicrmw.start8341; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=18342; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)8343; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], -v[0:1]8344; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)8345; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v58346; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v48347; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v38348; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v28349; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc8350; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)8351; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]8352; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]8353; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v68354; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v78355; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]8356; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB12_18357; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end8358; GFX7LESS-DPP-NEXT: s_endpgm8359;8360; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8361; GFX9-DPP: ; %bb.0:8362; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08363; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18364; GFX9-DPP-NEXT: s_mov_b32 s38, -18365; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000008366; GFX9-DPP-NEXT: s_add_u32 s36, s36, s118367; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 08368; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8369; GFX9-DPP-NEXT: s_mov_b32 s12, s88370; GFX9-DPP-NEXT: s_add_u32 s8, s34, 448371; GFX9-DPP-NEXT: s_mov_b32 s13, s98372; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 08373; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]8374; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48375; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128376; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08377; GFX9-DPP-NEXT: s_mov_b32 s14, s108378; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8379; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28380; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18381; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8382; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8383; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]8384; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v28385; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]8386; GFX9-DPP-NEXT: s_mov_b32 s32, 08387; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)8388; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8389; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18390; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 18391; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]8392; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]8393; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18394; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08395; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 08396; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf8397; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf8398; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8399; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18400; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08401; GFX9-DPP-NEXT: s_nop 08402; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf8403; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf8404; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8405; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18406; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08407; GFX9-DPP-NEXT: s_nop 08408; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf8409; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf8410; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8411; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18412; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08413; GFX9-DPP-NEXT: s_nop 08414; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf8415; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf8416; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8417; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18418; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08419; GFX9-DPP-NEXT: s_nop 08420; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf8421; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf8422; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8423; GFX9-DPP-NEXT: s_nop 18424; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf8425; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf8426; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]8427; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]8428; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 08429; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 08430; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v18431; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18432; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 638433; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 638434; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]8435; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]8436; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v18437; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc8438; GFX9-DPP-NEXT: s_cbranch_execz .LBB12_38439; GFX9-DPP-NEXT: ; %bb.1:8440; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x248441; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 08442; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)8443; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]8444; GFX9-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8445; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=18446; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)8447; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], -s[0:1]8448; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc8449; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)8450; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]8451; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v28452; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]8453; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v18454; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]8455; GFX9-DPP-NEXT: s_cbranch_execnz .LBB12_28456; GFX9-DPP-NEXT: .LBB12_3:8457; GFX9-DPP-NEXT: s_endpgm8458;8459; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8460; GFX1064-DPP: ; %bb.0:8461; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08462; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18463; GFX1064-DPP-NEXT: s_mov_b32 s38, -18464; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160008465; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s118466; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8467; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 08468; GFX1064-DPP-NEXT: s_mov_b32 s12, s88469; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 448470; GFX1064-DPP-NEXT: s_mov_b32 s13, s98471; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 08472; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]8473; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48474; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128475; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28476; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08477; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18478; GFX1064-DPP-NEXT: s_mov_b32 s14, s108479; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8480; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8481; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8482; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v28483; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]8484; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]8485; GFX1064-DPP-NEXT: s_mov_b32 s32, 08486; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)8487; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8488; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18489; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 18490; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 08491; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]8492; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]8493; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf8494; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8495; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]8496; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 18497; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 08498; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf8499; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8500; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8501; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 18502; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 08503; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf8504; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8505; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8506; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 18507; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 08508; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf8509; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8510; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8511; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 08512; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08513; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8514; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 08515; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 08516; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 328517; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 328518; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]8519; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]8520; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08521; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 08522; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v08523; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v38524; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v48525; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v78526; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8527; GFX1064-DPP-NEXT: s_cbranch_execz .LBB12_38528; GFX1064-DPP-NEXT: ; %bb.1:8529; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248530; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 08531; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)8532; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]8533; GFX1064-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8534; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=18535; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)8536; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]8537; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc8538; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)8539; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]8540; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v88541; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v78542; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8543; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]8544; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB12_28545; GFX1064-DPP-NEXT: .LBB12_3:8546; GFX1064-DPP-NEXT: s_endpgm8547;8548; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8549; GFX1032-DPP: ; %bb.0:8550; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08551; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18552; GFX1032-DPP-NEXT: s_mov_b32 s38, -18553; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160008554; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s118555; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8556; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 08557; GFX1032-DPP-NEXT: s_mov_b32 s12, s88558; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 448559; GFX1032-DPP-NEXT: s_mov_b32 s13, s98560; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 08561; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]8562; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48563; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128564; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28565; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08566; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18567; GFX1032-DPP-NEXT: s_mov_b32 s14, s108568; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8569; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8570; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8571; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v28572; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]8573; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]8574; GFX1032-DPP-NEXT: s_mov_b32 s32, 08575; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)8576; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8577; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -18578; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 18579; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 08580; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s08581; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s08582; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf8583; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8584; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]8585; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 18586; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 08587; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf8588; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8589; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8590; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 18591; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 08592; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf8593; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8594; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8595; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 18596; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 08597; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf8598; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8599; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8600; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 08601; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08602; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8603; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s08604; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 08605; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v38606; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 08607; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v48608; GFX1032-DPP-NEXT: s_mov_b32 s2, 08609; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v78610; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo8611; GFX1032-DPP-NEXT: s_cbranch_execz .LBB12_38612; GFX1032-DPP-NEXT: ; %bb.1:8613; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248614; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)8615; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]8616; GFX1032-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8617; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=18618; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)8619; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]8620; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc8621; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)8622; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]8623; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v88624; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v78625; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s28626; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s28627; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB12_28628; GFX1032-DPP-NEXT: .LBB12_3:8629; GFX1032-DPP-NEXT: s_endpgm8630;8631; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8632; GFX1164-DPP: ; %bb.0:8633; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8634; GFX1164-DPP-NEXT: s_mov_b32 s12, s88635; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 448636; GFX1164-DPP-NEXT: s_mov_b32 s13, s98637; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 08638; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]8639; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48640; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128641; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v08642; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x08643; GFX1164-DPP-NEXT: s_mov_b32 s14, s108644; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8645; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8646; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8647; GFX1164-DPP-NEXT: s_mov_b32 s32, 08648; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)8649; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8650; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18651; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 18652; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 08653; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]8654; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]8655; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8656; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8657; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf8658; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8659; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]8660; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 18661; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 08662; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8663; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8664; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf8665; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8666; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 18667; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 08668; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8669; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8670; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf8671; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8672; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8673; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 18674; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 08675; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8676; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8677; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf8678; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8679; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)8680; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08681; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 08682; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8683; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8684; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v38685; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8686; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v28687; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8688; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]8689; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)8690; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08691; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 08692; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec8693; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)8694; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v08695; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)8696; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v28697; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v38698; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v68699; GFX1164-DPP-NEXT: s_cbranch_execz .LBB12_38700; GFX1164-DPP-NEXT: ; %bb.1:8701; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x248702; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 08703; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)8704; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]8705; GFX1164-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8706; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=18707; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)8708; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]8709; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc8710; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)8711; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]8712; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v78713; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v68714; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8715; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8716; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]8717; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB12_28718; GFX1164-DPP-NEXT: .LBB12_3:8719; GFX1164-DPP-NEXT: s_endpgm8720;8721; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_one_as_scope_unsafe_structfp:8722; GFX1132-DPP: ; %bb.0:8723; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8724; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v08725; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 448726; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 08727; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]8728; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48729; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128730; GFX1132-DPP-NEXT: s_mov_b32 s12, s138731; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x08732; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8733; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8734; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8735; GFX1132-DPP-NEXT: s_mov_b32 s13, s148736; GFX1132-DPP-NEXT: s_mov_b32 s14, s158737; GFX1132-DPP-NEXT: s_mov_b32 s32, 08738; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)8739; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8740; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -18741; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 18742; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 08743; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s08744; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s08745; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8746; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8747; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf8748; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8749; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]8750; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 18751; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 08752; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8753; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8754; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf8755; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8756; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 18757; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 08758; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8759; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8760; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf8761; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8762; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8763; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 18764; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 08765; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8766; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8767; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf8768; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8769; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)8770; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08771; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 08772; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)8773; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8774; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s08775; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v28776; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 08777; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)8778; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v38779; GFX1132-DPP-NEXT: s_mov_b32 s2, 08780; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo8781; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v68782; GFX1132-DPP-NEXT: s_cbranch_execz .LBB12_38783; GFX1132-DPP-NEXT: ; %bb.1:8784; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x248785; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)8786; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]8787; GFX1132-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8788; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=18789; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)8790; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]8791; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc8792; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)8793; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]8794; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v68795; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s28796; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8797; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s28798; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB12_28799; GFX1132-DPP-NEXT: .LBB12_3:8800; GFX1132-DPP-NEXT: s_endpgm8801 %divValue = call double @div.double.value() strictfp8802 %result = atomicrmw fsub ptr addrspace(1) %ptr, double %divValue syncscope("one-as") monotonic8803 ret void8804}8805 8806define amdgpu_kernel void @global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp(ptr addrspace(1) %ptr) #2{8807; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:8808; GFX7LESS: ; %bb.0:8809; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08810; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18811; GFX7LESS-NEXT: s_mov_b32 s14, -18812; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0008813; GFX7LESS-NEXT: s_add_u32 s12, s12, s118814; GFX7LESS-NEXT: s_addc_u32 s13, s13, 08815; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec8816; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 08817; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v08818; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08819; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc8820; GFX7LESS-NEXT: s_cbranch_execz .LBB13_38821; GFX7LESS-NEXT: ; %bb.1:8822; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x98823; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[2:3]8824; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000008825; GFX7LESS-NEXT: v_mov_b32_e32 v0, 08826; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000008827; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)8828; GFX7LESS-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x08829; GFX7LESS-NEXT: s_mov_b64 s[4:5], 08830; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0008831; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]8832; GFX7LESS-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8833; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)8834; GFX7LESS-NEXT: v_mov_b32_e32 v2, s88835; GFX7LESS-NEXT: v_mov_b32_e32 v3, s98836; GFX7LESS-NEXT: s_mov_b32 s2, -18837; GFX7LESS-NEXT: .LBB13_2: ; %atomicrmw.start8838; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=18839; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8840; GFX7LESS-NEXT: s_waitcnt expcnt(0)8841; GFX7LESS-NEXT: v_mov_b32_e32 v9, v38842; GFX7LESS-NEXT: v_mov_b32_e32 v8, v28843; GFX7LESS-NEXT: v_mov_b32_e32 v7, v18844; GFX7LESS-NEXT: v_mov_b32_e32 v6, v08845; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc8846; GFX7LESS-NEXT: s_waitcnt vmcnt(0)8847; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]8848; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]8849; GFX7LESS-NEXT: v_mov_b32_e32 v2, v68850; GFX7LESS-NEXT: v_mov_b32_e32 v3, v78851; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]8852; GFX7LESS-NEXT: s_cbranch_execnz .LBB13_28853; GFX7LESS-NEXT: .LBB13_3:8854; GFX7LESS-NEXT: s_endpgm8855;8856; GFX9-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:8857; GFX9: ; %bb.0:8858; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08859; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18860; GFX9-NEXT: s_mov_b32 s14, -18861; GFX9-NEXT: s_mov_b64 s[0:1], exec8862; GFX9-NEXT: s_mov_b32 s15, 0xe000008863; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08864; GFX9-NEXT: s_add_u32 s12, s12, s118865; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v08866; GFX9-NEXT: s_addc_u32 s13, s13, 08867; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08868; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc8869; GFX9-NEXT: s_cbranch_execz .LBB13_38870; GFX9-NEXT: ; %bb.1:8871; GFX9-NEXT: v_mov_b32_e32 v0, 08872; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]8873; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000008874; GFX9-NEXT: s_mov_b32 s1, 0x433000008875; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]8876; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248877; GFX9-NEXT: s_mov_b64 s[2:3], 08878; GFX9-NEXT: v_mov_b32_e32 v6, 08879; GFX9-NEXT: s_waitcnt lgkmcnt(0)8880; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x08881; GFX9-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8882; GFX9-NEXT: s_waitcnt lgkmcnt(0)8883; GFX9-NEXT: v_mov_b32_e32 v2, s48884; GFX9-NEXT: v_mov_b32_e32 v3, s58885; GFX9-NEXT: .LBB13_2: ; %atomicrmw.start8886; GFX9-NEXT: ; =>This Inner Loop Header: Depth=18887; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8888; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8889; GFX9-NEXT: s_waitcnt vmcnt(0)8890; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8891; GFX9-NEXT: v_mov_b32_e32 v3, v18892; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8893; GFX9-NEXT: v_mov_b32_e32 v2, v08894; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]8895; GFX9-NEXT: s_cbranch_execnz .LBB13_28896; GFX9-NEXT: .LBB13_3:8897; GFX9-NEXT: s_endpgm8898;8899; GFX1064-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:8900; GFX1064: ; %bb.0:8901; GFX1064-NEXT: s_mov_b64 s[0:1], exec8902; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08903; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08904; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18905; GFX1064-NEXT: s_mov_b32 s14, -18906; GFX1064-NEXT: s_mov_b32 s15, 0x31e160008907; GFX1064-NEXT: s_add_u32 s12, s12, s118908; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v08909; GFX1064-NEXT: s_addc_u32 s13, s13, 08910; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08911; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc8912; GFX1064-NEXT: s_cbranch_execz .LBB13_38913; GFX1064-NEXT: ; %bb.1:8914; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[0:1]8915; GFX1064-NEXT: s_mov_b32 s3, 0x433000008916; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248917; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]8918; GFX1064-NEXT: v_mov_b32_e32 v6, 08919; GFX1064-NEXT: s_waitcnt lgkmcnt(0)8920; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x08921; GFX1064-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8922; GFX1064-NEXT: s_waitcnt lgkmcnt(0)8923; GFX1064-NEXT: v_mov_b32_e32 v2, s28924; GFX1064-NEXT: v_mov_b32_e32 v3, s38925; GFX1064-NEXT: s_mov_b64 s[2:3], 08926; GFX1064-NEXT: .LBB13_2: ; %atomicrmw.start8927; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=18928; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8929; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8930; GFX1064-NEXT: s_waitcnt vmcnt(0)8931; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8932; GFX1064-NEXT: v_mov_b32_e32 v3, v18933; GFX1064-NEXT: v_mov_b32_e32 v2, v08934; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8935; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]8936; GFX1064-NEXT: s_cbranch_execnz .LBB13_28937; GFX1064-NEXT: .LBB13_3:8938; GFX1064-NEXT: s_endpgm8939;8940; GFX1032-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:8941; GFX1032: ; %bb.0:8942; GFX1032-NEXT: s_mov_b32 s0, exec_lo8943; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08944; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08945; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18946; GFX1032-NEXT: s_mov_b32 s14, -18947; GFX1032-NEXT: s_mov_b32 s15, 0x31c160008948; GFX1032-NEXT: s_add_u32 s12, s12, s118949; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08950; GFX1032-NEXT: s_addc_u32 s13, s13, 08951; GFX1032-NEXT: s_mov_b32 s2, 08952; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo8953; GFX1032-NEXT: s_cbranch_execz .LBB13_38954; GFX1032-NEXT: ; %bb.1:8955; GFX1032-NEXT: s_bcnt1_i32_b32 s6, s08956; GFX1032-NEXT: s_mov_b32 s7, 0x433000008957; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248958; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]8959; GFX1032-NEXT: v_mov_b32_e32 v6, 08960; GFX1032-NEXT: s_waitcnt lgkmcnt(0)8961; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x08962; GFX1032-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8963; GFX1032-NEXT: s_waitcnt lgkmcnt(0)8964; GFX1032-NEXT: v_mov_b32_e32 v2, s48965; GFX1032-NEXT: v_mov_b32_e32 v3, s58966; GFX1032-NEXT: .LBB13_2: ; %atomicrmw.start8967; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=18968; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]8969; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8970; GFX1032-NEXT: s_waitcnt vmcnt(0)8971; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8972; GFX1032-NEXT: v_mov_b32_e32 v3, v18973; GFX1032-NEXT: v_mov_b32_e32 v2, v08974; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s28975; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s28976; GFX1032-NEXT: s_cbranch_execnz .LBB13_28977; GFX1032-NEXT: .LBB13_3:8978; GFX1032-NEXT: s_endpgm8979;8980; GFX1164-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:8981; GFX1164: ; %bb.0:8982; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec8983; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000008984; GFX1164-NEXT: v_mov_b32_e32 v1, s08985; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08986; GFX1164-NEXT: s_mov_b64 s[0:1], exec8987; GFX1164-NEXT: s_clause 0x18988; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:48989; GFX1164-NEXT: scratch_store_b32 off, v1, off8990; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off8991; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v28992; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)8993; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v28994; GFX1164-NEXT: s_cbranch_execz .LBB13_38995; GFX1164-NEXT: ; %bb.1:8996; GFX1164-NEXT: s_waitcnt vmcnt(0)8997; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]8998; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x248999; GFX1164-NEXT: v_mov_b32_e32 v6, 09000; GFX1164-NEXT: s_waitcnt lgkmcnt(0)9001; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x09002; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2)9003; GFX1164-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9004; GFX1164-NEXT: s_waitcnt lgkmcnt(0)9005; GFX1164-NEXT: v_mov_b32_e32 v2, s29006; GFX1164-NEXT: v_mov_b32_e32 v3, s39007; GFX1164-NEXT: s_mov_b64 s[2:3], 09008; GFX1164-NEXT: .LBB13_2: ; %atomicrmw.start9009; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=19010; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)9011; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9012; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9013; GFX1164-NEXT: s_waitcnt vmcnt(0)9014; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9015; GFX1164-NEXT: v_mov_b32_e32 v3, v19016; GFX1164-NEXT: v_mov_b32_e32 v2, v09017; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9018; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9019; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]9020; GFX1164-NEXT: s_cbranch_execnz .LBB13_29021; GFX1164-NEXT: .LBB13_3:9022; GFX1164-NEXT: s_endpgm9023;9024; GFX1132-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9025; GFX1132: ; %bb.0:9026; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo9027; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9028; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s09029; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 09030; GFX1132-NEXT: s_mov_b32 s2, 09031; GFX1132-NEXT: s_mov_b32 s0, exec_lo9032; GFX1132-NEXT: s_clause 0x19033; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:49034; GFX1132-NEXT: scratch_store_b32 off, v1, off9035; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off9036; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v29037; GFX1132-NEXT: s_cbranch_execz .LBB13_39038; GFX1132-NEXT: ; %bb.1:9039; GFX1132-NEXT: s_waitcnt vmcnt(0)9040; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]9041; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x249042; GFX1132-NEXT: v_mov_b32_e32 v6, 09043; GFX1132-NEXT: s_waitcnt lgkmcnt(0)9044; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x09045; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2)9046; GFX1132-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9047; GFX1132-NEXT: s_waitcnt lgkmcnt(0)9048; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s59049; GFX1132-NEXT: .LBB13_2: ; %atomicrmw.start9050; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=19051; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)9052; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9053; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9054; GFX1132-NEXT: s_waitcnt vmcnt(0)9055; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9056; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v09057; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s29058; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9059; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s29060; GFX1132-NEXT: s_cbranch_execnz .LBB13_29061; GFX1132-NEXT: .LBB13_3:9062; GFX1132-NEXT: s_endpgm9063;9064; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9065; GFX7LESS-DPP: ; %bb.0:9066; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD09067; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD19068; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -19069; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0009070; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s119071; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 09072; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec9073; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 09074; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v09075; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09076; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9077; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB13_39078; GFX7LESS-DPP-NEXT: ; %bb.1:9079; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x99080; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[2:3]9081; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000009082; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 09083; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000009084; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)9085; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x09086; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 09087; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0009088; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]9089; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9090; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)9091; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s89092; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s99093; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -19094; GFX7LESS-DPP-NEXT: .LBB13_2: ; %atomicrmw.start9095; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=19096; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9097; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)9098; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v39099; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v29100; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v19101; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v09102; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc9103; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)9104; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]9105; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]9106; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v69107; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v79108; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]9109; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB13_29110; GFX7LESS-DPP-NEXT: .LBB13_3:9111; GFX7LESS-DPP-NEXT: s_endpgm9112;9113; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9114; GFX9-DPP: ; %bb.0:9115; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD09116; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD19117; GFX9-DPP-NEXT: s_mov_b32 s14, -19118; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec9119; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000009120; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 09121; GFX9-DPP-NEXT: s_add_u32 s12, s12, s119122; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v09123; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 09124; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09125; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc9126; GFX9-DPP-NEXT: s_cbranch_execz .LBB13_39127; GFX9-DPP-NEXT: ; %bb.1:9128; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 09129; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]9130; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000009131; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000009132; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]9133; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249134; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 09135; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 09136; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)9137; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x09138; GFX9-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9139; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)9140; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s49141; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s59142; GFX9-DPP-NEXT: .LBB13_2: ; %atomicrmw.start9143; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=19144; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9145; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9146; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)9147; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9148; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v19149; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9150; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v09151; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]9152; GFX9-DPP-NEXT: s_cbranch_execnz .LBB13_29153; GFX9-DPP-NEXT: .LBB13_3:9154; GFX9-DPP-NEXT: s_endpgm9155;9156; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9157; GFX1064-DPP: ; %bb.0:9158; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec9159; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD09160; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 09161; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD19162; GFX1064-DPP-NEXT: s_mov_b32 s14, -19163; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160009164; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s119165; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v09166; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 09167; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09168; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc9169; GFX1064-DPP-NEXT: s_cbranch_execz .LBB13_39170; GFX1064-DPP-NEXT: ; %bb.1:9171; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[0:1]9172; GFX1064-DPP-NEXT: s_mov_b32 s3, 0x433000009173; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249174; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]9175; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 09176; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)9177; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x09178; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9179; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)9180; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s29181; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s39182; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 09183; GFX1064-DPP-NEXT: .LBB13_2: ; %atomicrmw.start9184; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=19185; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9186; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9187; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)9188; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9189; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v19190; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v09191; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9192; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]9193; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB13_29194; GFX1064-DPP-NEXT: .LBB13_3:9195; GFX1064-DPP-NEXT: s_endpgm9196;9197; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9198; GFX1032-DPP: ; %bb.0:9199; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo9200; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD09201; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 09202; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD19203; GFX1032-DPP-NEXT: s_mov_b32 s14, -19204; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160009205; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s119206; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09207; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 09208; GFX1032-DPP-NEXT: s_mov_b32 s2, 09209; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo9210; GFX1032-DPP-NEXT: s_cbranch_execz .LBB13_39211; GFX1032-DPP-NEXT: ; %bb.1:9212; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s6, s09213; GFX1032-DPP-NEXT: s_mov_b32 s7, 0x433000009214; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x249215; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]9216; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 09217; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)9218; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x09219; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9220; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)9221; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s49222; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s59223; GFX1032-DPP-NEXT: .LBB13_2: ; %atomicrmw.start9224; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=19225; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9226; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9227; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)9228; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9229; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v19230; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v09231; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s29232; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s29233; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB13_29234; GFX1032-DPP-NEXT: .LBB13_3:9235; GFX1032-DPP-NEXT: s_endpgm9236;9237; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9238; GFX1164-DPP: ; %bb.0:9239; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec9240; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000009241; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s09242; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 09243; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec9244; GFX1164-DPP-NEXT: s_clause 0x19245; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:49246; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off9247; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off9248; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v29249; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)9250; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v29251; GFX1164-DPP-NEXT: s_cbranch_execz .LBB13_39252; GFX1164-DPP-NEXT: ; %bb.1:9253; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)9254; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]9255; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x249256; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 09257; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)9258; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x09259; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)9260; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9261; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)9262; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s29263; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s39264; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 09265; GFX1164-DPP-NEXT: .LBB13_2: ; %atomicrmw.start9266; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=19267; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)9268; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9269; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9270; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)9271; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9272; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v19273; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v09274; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9275; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9276; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]9277; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB13_29278; GFX1164-DPP-NEXT: .LBB13_3:9279; GFX1164-DPP-NEXT: s_endpgm9280;9281; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_agent_scope_strictfp:9282; GFX1132-DPP: ; %bb.0:9283; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo9284; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9285; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s09286; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 09287; GFX1132-DPP-NEXT: s_mov_b32 s2, 09288; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo9289; GFX1132-DPP-NEXT: s_clause 0x19290; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:49291; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off9292; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off9293; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v29294; GFX1132-DPP-NEXT: s_cbranch_execz .LBB13_39295; GFX1132-DPP-NEXT: ; %bb.1:9296; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)9297; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]9298; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x249299; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 09300; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)9301; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x09302; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)9303; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]9304; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)9305; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s59306; GFX1132-DPP-NEXT: .LBB13_2: ; %atomicrmw.start9307; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=19308; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)9309; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9310; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9311; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)9312; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9313; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v09314; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s29315; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9316; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s29317; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB13_29318; GFX1132-DPP-NEXT: .LBB13_3:9319; GFX1132-DPP-NEXT: s_endpgm9320 %result = atomicrmw fsub ptr addrspace(1) %ptr, double 4.0 syncscope("agent") monotonic9321 ret void9322}9323 9324define amdgpu_kernel void @global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {9325; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9326; GFX7LESS: ; %bb.0:9327; GFX7LESS-NEXT: s_mov_b32 s32, 09328; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09329; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19330; GFX7LESS-NEXT: s_mov_b32 s38, -19331; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0009332; GFX7LESS-NEXT: s_add_u32 s36, s36, s119333; GFX7LESS-NEXT: s_addc_u32 s37, s37, 09334; GFX7LESS-NEXT: s_mov_b32 s14, s109335; GFX7LESS-NEXT: s_mov_b32 s13, s99336; GFX7LESS-NEXT: s_mov_b32 s12, s89337; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]9338; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]9339; GFX7LESS-NEXT: s_add_u32 s8, s34, 449340; GFX7LESS-NEXT: s_addc_u32 s9, s35, 09341; GFX7LESS-NEXT: s_getpc_b64 s[4:5]9342; GFX7LESS-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49343; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129344; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09345; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v29346; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v19347; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v19348; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v29349; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]9350; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]9351; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]9352; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]9353; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)9354; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]9355; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec9356; GFX7LESS-NEXT: v_mov_b32_e32 v4, 09357; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 19358; GFX7LESS-NEXT: .LBB14_1: ; %ComputeLoop9359; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=19360; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]9361; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s49362; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s49363; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s49364; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]9365; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 09366; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]9367; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9368; GFX7LESS-NEXT: s_cbranch_vccnz .LBB14_19369; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd9370; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 09371; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v09372; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09373; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc9374; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9375; GFX7LESS-NEXT: s_cbranch_execz .LBB14_59376; GFX7LESS-NEXT: ; %bb.3:9377; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x99378; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0009379; GFX7LESS-NEXT: s_mov_b32 s2, -19380; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)9381; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 09382; GFX7LESS-NEXT: s_mov_b64 s[4:5], 09383; GFX7LESS-NEXT: .LBB14_4: ; %atomicrmw.start9384; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=19385; GFX7LESS-NEXT: s_waitcnt vmcnt(0)9386; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9387; GFX7LESS-NEXT: s_waitcnt expcnt(0)9388; GFX7LESS-NEXT: v_mov_b32_e32 v9, v39389; GFX7LESS-NEXT: v_mov_b32_e32 v8, v29390; GFX7LESS-NEXT: v_mov_b32_e32 v7, v19391; GFX7LESS-NEXT: v_mov_b32_e32 v6, v09392; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc9393; GFX7LESS-NEXT: s_waitcnt vmcnt(0)9394; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]9395; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]9396; GFX7LESS-NEXT: v_mov_b32_e32 v2, v69397; GFX7LESS-NEXT: v_mov_b32_e32 v3, v79398; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]9399; GFX7LESS-NEXT: s_cbranch_execnz .LBB14_49400; GFX7LESS-NEXT: .LBB14_5:9401; GFX7LESS-NEXT: s_endpgm9402;9403; GFX9-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9404; GFX9: ; %bb.0:9405; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09406; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19407; GFX9-NEXT: s_mov_b32 s38, -19408; GFX9-NEXT: s_mov_b32 s39, 0xe000009409; GFX9-NEXT: s_add_u32 s36, s36, s119410; GFX9-NEXT: s_addc_u32 s37, s37, 09411; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]9412; GFX9-NEXT: s_mov_b32 s12, s89413; GFX9-NEXT: s_add_u32 s8, s34, 449414; GFX9-NEXT: s_mov_b32 s13, s99415; GFX9-NEXT: s_addc_u32 s9, s35, 09416; GFX9-NEXT: s_getpc_b64 s[4:5]9417; GFX9-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49418; GFX9-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129419; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09420; GFX9-NEXT: s_mov_b32 s14, s109421; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]9422; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v29423; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v19424; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]9425; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]9426; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]9427; GFX9-NEXT: v_or3_b32 v31, v0, v1, v29428; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]9429; GFX9-NEXT: s_mov_b32 s32, 09430; GFX9-NEXT: s_waitcnt lgkmcnt(0)9431; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]9432; GFX9-NEXT: v_mov_b32_e32 v4, 09433; GFX9-NEXT: s_mov_b64 s[0:1], exec9434; GFX9-NEXT: v_bfrev_b32_e32 v5, 19435; GFX9-NEXT: .LBB14_1: ; %ComputeLoop9436; GFX9-NEXT: ; =>This Inner Loop Header: Depth=19437; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]9438; GFX9-NEXT: v_readlane_b32 s3, v1, s49439; GFX9-NEXT: v_readlane_b32 s2, v0, s49440; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9441; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s49442; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]9443; GFX9-NEXT: s_cbranch_scc1 .LBB14_19444; GFX9-NEXT: ; %bb.2: ; %ComputeEnd9445; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09446; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09447; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09448; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc9449; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9450; GFX9-NEXT: s_cbranch_execz .LBB14_59451; GFX9-NEXT: ; %bb.3:9452; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249453; GFX9-NEXT: v_mov_b32_e32 v6, 09454; GFX9-NEXT: s_mov_b64 s[2:3], 09455; GFX9-NEXT: s_waitcnt lgkmcnt(0)9456; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]9457; GFX9-NEXT: .LBB14_4: ; %atomicrmw.start9458; GFX9-NEXT: ; =>This Inner Loop Header: Depth=19459; GFX9-NEXT: s_waitcnt vmcnt(0)9460; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9461; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9462; GFX9-NEXT: s_waitcnt vmcnt(0)9463; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9464; GFX9-NEXT: v_mov_b32_e32 v3, v19465; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9466; GFX9-NEXT: v_mov_b32_e32 v2, v09467; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]9468; GFX9-NEXT: s_cbranch_execnz .LBB14_49469; GFX9-NEXT: .LBB14_5:9470; GFX9-NEXT: s_endpgm9471;9472; GFX1064-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9473; GFX1064: ; %bb.0:9474; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09475; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19476; GFX1064-NEXT: s_mov_b32 s38, -19477; GFX1064-NEXT: s_mov_b32 s39, 0x31e160009478; GFX1064-NEXT: s_add_u32 s36, s36, s119479; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]9480; GFX1064-NEXT: s_addc_u32 s37, s37, 09481; GFX1064-NEXT: s_mov_b32 s12, s89482; GFX1064-NEXT: s_add_u32 s8, s34, 449483; GFX1064-NEXT: s_mov_b32 s13, s99484; GFX1064-NEXT: s_addc_u32 s9, s35, 09485; GFX1064-NEXT: s_getpc_b64 s[4:5]9486; GFX1064-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49487; GFX1064-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129488; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v29489; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09490; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v19491; GFX1064-NEXT: s_mov_b32 s14, s109492; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]9493; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]9494; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]9495; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v29496; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]9497; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]9498; GFX1064-NEXT: s_mov_b32 s32, 09499; GFX1064-NEXT: s_waitcnt lgkmcnt(0)9500; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]9501; GFX1064-NEXT: v_mov_b32_e32 v4, 09502; GFX1064-NEXT: v_bfrev_b32_e32 v5, 19503; GFX1064-NEXT: s_mov_b64 s[0:1], exec9504; GFX1064-NEXT: .LBB14_1: ; %ComputeLoop9505; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=19506; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]9507; GFX1064-NEXT: v_readlane_b32 s3, v1, s49508; GFX1064-NEXT: v_readlane_b32 s2, v0, s49509; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9510; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s49511; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]9512; GFX1064-NEXT: s_cbranch_scc1 .LBB14_19513; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd9514; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09515; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09516; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09517; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc9518; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9519; GFX1064-NEXT: s_cbranch_execz .LBB14_59520; GFX1064-NEXT: ; %bb.3:9521; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249522; GFX1064-NEXT: v_mov_b32_e32 v6, 09523; GFX1064-NEXT: s_mov_b64 s[2:3], 09524; GFX1064-NEXT: s_waitcnt lgkmcnt(0)9525; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]9526; GFX1064-NEXT: .LBB14_4: ; %atomicrmw.start9527; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=19528; GFX1064-NEXT: s_waitcnt vmcnt(0)9529; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9530; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9531; GFX1064-NEXT: s_waitcnt vmcnt(0)9532; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9533; GFX1064-NEXT: v_mov_b32_e32 v3, v19534; GFX1064-NEXT: v_mov_b32_e32 v2, v09535; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9536; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]9537; GFX1064-NEXT: s_cbranch_execnz .LBB14_49538; GFX1064-NEXT: .LBB14_5:9539; GFX1064-NEXT: s_endpgm9540;9541; GFX1032-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9542; GFX1032: ; %bb.0:9543; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09544; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19545; GFX1032-NEXT: s_mov_b32 s38, -19546; GFX1032-NEXT: s_mov_b32 s39, 0x31c160009547; GFX1032-NEXT: s_add_u32 s36, s36, s119548; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]9549; GFX1032-NEXT: s_addc_u32 s37, s37, 09550; GFX1032-NEXT: s_mov_b32 s12, s89551; GFX1032-NEXT: s_add_u32 s8, s34, 449552; GFX1032-NEXT: s_mov_b32 s13, s99553; GFX1032-NEXT: s_addc_u32 s9, s35, 09554; GFX1032-NEXT: s_getpc_b64 s[4:5]9555; GFX1032-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49556; GFX1032-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129557; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v29558; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09559; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v19560; GFX1032-NEXT: s_mov_b32 s14, s109561; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]9562; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]9563; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]9564; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v29565; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]9566; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]9567; GFX1032-NEXT: s_mov_b32 s32, 09568; GFX1032-NEXT: s_waitcnt lgkmcnt(0)9569; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]9570; GFX1032-NEXT: v_mov_b32_e32 v4, 09571; GFX1032-NEXT: v_bfrev_b32_e32 v5, 19572; GFX1032-NEXT: s_mov_b32 s0, exec_lo9573; GFX1032-NEXT: .LBB14_1: ; %ComputeLoop9574; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=19575; GFX1032-NEXT: s_ff1_i32_b32 s1, s09576; GFX1032-NEXT: v_readlane_b32 s3, v1, s19577; GFX1032-NEXT: v_readlane_b32 s2, v0, s19578; GFX1032-NEXT: s_lshl_b32 s1, 1, s19579; GFX1032-NEXT: s_andn2_b32 s0, s0, s19580; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9581; GFX1032-NEXT: s_cbranch_scc1 .LBB14_19582; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd9583; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09584; GFX1032-NEXT: s_mov_b32 s2, 09585; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09586; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo9587; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s09588; GFX1032-NEXT: s_cbranch_execz .LBB14_59589; GFX1032-NEXT: ; %bb.3:9590; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249591; GFX1032-NEXT: v_mov_b32_e32 v6, 09592; GFX1032-NEXT: s_waitcnt lgkmcnt(0)9593; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]9594; GFX1032-NEXT: .LBB14_4: ; %atomicrmw.start9595; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=19596; GFX1032-NEXT: s_waitcnt vmcnt(0)9597; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9598; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9599; GFX1032-NEXT: s_waitcnt vmcnt(0)9600; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9601; GFX1032-NEXT: v_mov_b32_e32 v3, v19602; GFX1032-NEXT: v_mov_b32_e32 v2, v09603; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s29604; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s29605; GFX1032-NEXT: s_cbranch_execnz .LBB14_49606; GFX1032-NEXT: .LBB14_5:9607; GFX1032-NEXT: s_endpgm9608;9609; GFX1164-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9610; GFX1164: ; %bb.0:9611; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]9612; GFX1164-NEXT: s_mov_b32 s12, s89613; GFX1164-NEXT: s_add_u32 s8, s34, 449614; GFX1164-NEXT: s_mov_b32 s13, s99615; GFX1164-NEXT: s_addc_u32 s9, s35, 09616; GFX1164-NEXT: s_getpc_b64 s[4:5]9617; GFX1164-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49618; GFX1164-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129619; GFX1164-NEXT: v_mov_b32_e32 v31, v09620; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x09621; GFX1164-NEXT: s_mov_b32 s14, s109622; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]9623; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]9624; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]9625; GFX1164-NEXT: s_mov_b32 s32, 09626; GFX1164-NEXT: s_waitcnt lgkmcnt(0)9627; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]9628; GFX1164-NEXT: v_mov_b32_e32 v4, 09629; GFX1164-NEXT: v_bfrev_b32_e32 v5, 19630; GFX1164-NEXT: s_mov_b64 s[0:1], exec9631; GFX1164-NEXT: .LBB14_1: ; %ComputeLoop9632; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=19633; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)9634; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]9635; GFX1164-NEXT: v_readlane_b32 s3, v1, s49636; GFX1164-NEXT: v_readlane_b32 s2, v0, s49637; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9638; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9639; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s49640; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]9641; GFX1164-NEXT: s_cbranch_scc1 .LBB14_19642; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd9643; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09644; GFX1164-NEXT: s_mov_b64 s[0:1], exec9645; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9646; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09647; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v09648; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9649; GFX1164-NEXT: s_cbranch_execz .LBB14_59650; GFX1164-NEXT: ; %bb.3:9651; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x249652; GFX1164-NEXT: v_mov_b32_e32 v6, 09653; GFX1164-NEXT: s_mov_b64 s[2:3], 09654; GFX1164-NEXT: s_waitcnt lgkmcnt(0)9655; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]9656; GFX1164-NEXT: .LBB14_4: ; %atomicrmw.start9657; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=19658; GFX1164-NEXT: s_waitcnt vmcnt(0)9659; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9660; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9661; GFX1164-NEXT: s_waitcnt vmcnt(0)9662; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9663; GFX1164-NEXT: v_mov_b32_e32 v3, v19664; GFX1164-NEXT: v_mov_b32_e32 v2, v09665; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9666; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9667; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]9668; GFX1164-NEXT: s_cbranch_execnz .LBB14_49669; GFX1164-NEXT: .LBB14_5:9670; GFX1164-NEXT: s_endpgm9671;9672; GFX1132-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9673; GFX1132: ; %bb.0:9674; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]9675; GFX1132-NEXT: v_mov_b32_e32 v31, v09676; GFX1132-NEXT: s_add_u32 s8, s34, 449677; GFX1132-NEXT: s_addc_u32 s9, s35, 09678; GFX1132-NEXT: s_getpc_b64 s[4:5]9679; GFX1132-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49680; GFX1132-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129681; GFX1132-NEXT: s_mov_b32 s12, s139682; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x09683; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]9684; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]9685; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]9686; GFX1132-NEXT: s_mov_b32 s13, s149687; GFX1132-NEXT: s_mov_b32 s14, s159688; GFX1132-NEXT: s_mov_b32 s32, 09689; GFX1132-NEXT: s_waitcnt lgkmcnt(0)9690; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]9691; GFX1132-NEXT: v_mov_b32_e32 v4, 09692; GFX1132-NEXT: v_bfrev_b32_e32 v5, 19693; GFX1132-NEXT: s_mov_b32 s0, exec_lo9694; GFX1132-NEXT: .LBB14_1: ; %ComputeLoop9695; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=19696; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)9697; GFX1132-NEXT: s_ctz_i32_b32 s1, s09698; GFX1132-NEXT: v_readlane_b32 s3, v1, s19699; GFX1132-NEXT: v_readlane_b32 s2, v0, s19700; GFX1132-NEXT: s_lshl_b32 s1, 1, s19701; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9702; GFX1132-NEXT: s_and_not1_b32 s0, s0, s19703; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9704; GFX1132-NEXT: s_cbranch_scc1 .LBB14_19705; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd9706; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09707; GFX1132-NEXT: s_mov_b32 s2, 09708; GFX1132-NEXT: s_mov_b32 s0, exec_lo9709; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)9710; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v09711; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s09712; GFX1132-NEXT: s_cbranch_execz .LBB14_59713; GFX1132-NEXT: ; %bb.3:9714; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x249715; GFX1132-NEXT: v_mov_b32_e32 v6, 09716; GFX1132-NEXT: s_waitcnt lgkmcnt(0)9717; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]9718; GFX1132-NEXT: .LBB14_4: ; %atomicrmw.start9719; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=19720; GFX1132-NEXT: s_waitcnt vmcnt(0)9721; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]9722; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9723; GFX1132-NEXT: s_waitcnt vmcnt(0)9724; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9725; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v09726; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s29727; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9728; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s29729; GFX1132-NEXT: s_cbranch_execnz .LBB14_49730; GFX1132-NEXT: .LBB14_5:9731; GFX1132-NEXT: s_endpgm9732;9733; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9734; GFX7LESS-DPP: ; %bb.0:9735; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 09736; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD09737; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD19738; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -19739; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0009740; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s119741; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 09742; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s109743; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s99744; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s89745; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9746; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x99747; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0009748; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -19749; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 449750; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 09751; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]9752; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49753; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129754; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09755; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29756; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19757; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v19758; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v29759; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9760; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9761; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]9762; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]9763; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)9764; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9765; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 09766; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 09767; GFX7LESS-DPP-NEXT: .LBB14_1: ; %atomicrmw.start9768; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=19769; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)9770; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], -v[0:1]9771; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)9772; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v59773; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v49774; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v39775; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v29776; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc9777; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)9778; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]9779; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]9780; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v69781; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v79782; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]9783; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB14_19784; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end9785; GFX7LESS-DPP-NEXT: s_endpgm9786;9787; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9788; GFX9-DPP: ; %bb.0:9789; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09790; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19791; GFX9-DPP-NEXT: s_mov_b32 s38, -19792; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000009793; GFX9-DPP-NEXT: s_add_u32 s36, s36, s119794; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 09795; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9796; GFX9-DPP-NEXT: s_mov_b32 s12, s89797; GFX9-DPP-NEXT: s_add_u32 s8, s34, 449798; GFX9-DPP-NEXT: s_mov_b32 s13, s99799; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 09800; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]9801; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49802; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129803; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09804; GFX9-DPP-NEXT: s_mov_b32 s14, s109805; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9806; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29807; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19808; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9809; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9810; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]9811; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v29812; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]9813; GFX9-DPP-NEXT: s_mov_b32 s32, 09814; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)9815; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9816; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19817; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 19818; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]9819; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]9820; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19821; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09822; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 09823; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf9824; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf9825; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9826; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19827; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09828; GFX9-DPP-NEXT: s_nop 09829; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf9830; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf9831; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9832; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19833; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09834; GFX9-DPP-NEXT: s_nop 09835; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf9836; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf9837; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9838; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19839; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09840; GFX9-DPP-NEXT: s_nop 09841; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf9842; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf9843; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9844; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19845; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09846; GFX9-DPP-NEXT: s_nop 09847; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf9848; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf9849; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9850; GFX9-DPP-NEXT: s_nop 19851; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf9852; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf9853; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]9854; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]9855; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 09856; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 09857; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v19858; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19859; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 639860; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 639861; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]9862; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]9863; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v19864; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc9865; GFX9-DPP-NEXT: s_cbranch_execz .LBB14_39866; GFX9-DPP-NEXT: ; %bb.1:9867; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x249868; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 09869; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)9870; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]9871; GFX9-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9872; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=19873; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)9874; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], -s[0:1]9875; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc9876; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)9877; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]9878; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v29879; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]9880; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v19881; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]9882; GFX9-DPP-NEXT: s_cbranch_execnz .LBB14_29883; GFX9-DPP-NEXT: .LBB14_3:9884; GFX9-DPP-NEXT: s_endpgm9885;9886; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9887; GFX1064-DPP: ; %bb.0:9888; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09889; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19890; GFX1064-DPP-NEXT: s_mov_b32 s38, -19891; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160009892; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s119893; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9894; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 09895; GFX1064-DPP-NEXT: s_mov_b32 s12, s89896; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 449897; GFX1064-DPP-NEXT: s_mov_b32 s13, s99898; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 09899; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]9900; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49901; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129902; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29903; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09904; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19905; GFX1064-DPP-NEXT: s_mov_b32 s14, s109906; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9907; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9908; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9909; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v29910; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]9911; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]9912; GFX1064-DPP-NEXT: s_mov_b32 s32, 09913; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)9914; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9915; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19916; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 19917; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 09918; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]9919; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]9920; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf9921; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf9922; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]9923; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 19924; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 09925; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf9926; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf9927; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9928; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 19929; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 09930; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf9931; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf9932; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9933; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 19934; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 09935; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf9936; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf9937; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9938; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 09939; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 09940; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9941; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 09942; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 09943; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 329944; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 329945; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]9946; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]9947; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09948; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 09949; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v09950; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v39951; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v49952; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v79953; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9954; GFX1064-DPP-NEXT: s_cbranch_execz .LBB14_39955; GFX1064-DPP-NEXT: ; %bb.1:9956; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249957; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 09958; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)9959; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]9960; GFX1064-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9961; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=19962; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)9963; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]9964; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc9965; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)9966; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]9967; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v89968; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v79969; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9970; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]9971; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB14_29972; GFX1064-DPP-NEXT: .LBB14_3:9973; GFX1064-DPP-NEXT: s_endpgm9974;9975; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:9976; GFX1032-DPP: ; %bb.0:9977; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09978; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19979; GFX1032-DPP-NEXT: s_mov_b32 s38, -19980; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160009981; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s119982; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9983; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 09984; GFX1032-DPP-NEXT: s_mov_b32 s12, s89985; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 449986; GFX1032-DPP-NEXT: s_mov_b32 s13, s99987; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 09988; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]9989; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49990; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129991; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29992; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09993; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19994; GFX1032-DPP-NEXT: s_mov_b32 s14, s109995; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9996; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9997; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9998; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v29999; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10000; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10001; GFX1032-DPP-NEXT: s_mov_b32 s32, 010002; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)10003; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10004; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -110005; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 110006; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 010007; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s010008; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s010009; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf10010; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10011; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10012; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110013; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010014; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf10015; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10016; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10017; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110018; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010019; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf10020; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10021; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10022; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110023; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010024; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf10025; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10026; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10027; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 010028; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010029; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10030; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s010031; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 010032; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v310033; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 010034; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v410035; GFX1032-DPP-NEXT: s_mov_b32 s2, 010036; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v710037; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo10038; GFX1032-DPP-NEXT: s_cbranch_execz .LBB14_310039; GFX1032-DPP-NEXT: ; %bb.1:10040; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410041; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)10042; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]10043; GFX1032-DPP-NEXT: .LBB14_2: ; %atomicrmw.start10044; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=110045; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)10046; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]10047; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc10048; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)10049; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]10050; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v810051; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v710052; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s210053; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s210054; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB14_210055; GFX1032-DPP-NEXT: .LBB14_3:10056; GFX1032-DPP-NEXT: s_endpgm10057;10058; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:10059; GFX1164-DPP: ; %bb.0:10060; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10061; GFX1164-DPP-NEXT: s_mov_b32 s12, s810062; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 4410063; GFX1164-DPP-NEXT: s_mov_b32 s13, s910064; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 010065; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]10066; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+410067; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+1210068; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v010069; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x010070; GFX1164-DPP-NEXT: s_mov_b32 s14, s1010071; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10072; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10073; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10074; GFX1164-DPP-NEXT: s_mov_b32 s32, 010075; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)10076; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10077; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110078; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 110079; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 010080; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]10081; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]10082; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10083; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10084; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf10085; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10086; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]10087; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110088; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010089; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10090; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10091; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf10092; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10093; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110094; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010095; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10096; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10097; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf10098; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10099; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10100; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110101; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010102; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10103; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10104; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf10105; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10106; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)10107; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010108; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 010109; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10110; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10111; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v310112; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10113; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v210114; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10115; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]10116; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)10117; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010118; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 010119; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec10120; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)10121; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v010122; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)10123; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v210124; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v310125; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v610126; GFX1164-DPP-NEXT: s_cbranch_execz .LBB14_310127; GFX1164-DPP-NEXT: ; %bb.1:10128; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410129; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 010130; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)10131; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]10132; GFX1164-DPP-NEXT: .LBB14_2: ; %atomicrmw.start10133; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=110134; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)10135; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]10136; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc10137; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)10138; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]10139; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v710140; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v610141; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10142; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10143; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]10144; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB14_210145; GFX1164-DPP-NEXT: .LBB14_3:10146; GFX1164-DPP-NEXT: s_endpgm10147;10148; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe:10149; GFX1132-DPP: ; %bb.0:10150; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10151; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v010152; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 4410153; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 010154; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]10155; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+410156; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+1210157; GFX1132-DPP-NEXT: s_mov_b32 s12, s1310158; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x010159; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10160; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10161; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10162; GFX1132-DPP-NEXT: s_mov_b32 s13, s1410163; GFX1132-DPP-NEXT: s_mov_b32 s14, s1510164; GFX1132-DPP-NEXT: s_mov_b32 s32, 010165; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)10166; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10167; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -110168; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 110169; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 010170; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s010171; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s010172; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10173; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10174; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf10175; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10176; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]10177; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 110178; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 010179; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10180; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10181; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf10182; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10183; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 110184; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 010185; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10186; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10187; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf10188; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10189; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10190; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 110191; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 010192; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10193; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10194; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf10195; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10196; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)10197; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010198; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 010199; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10200; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10201; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s010202; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v210203; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 010204; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)10205; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v310206; GFX1132-DPP-NEXT: s_mov_b32 s2, 010207; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo10208; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v610209; GFX1132-DPP-NEXT: s_cbranch_execz .LBB14_310210; GFX1132-DPP-NEXT: ; %bb.1:10211; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410212; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)10213; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]10214; GFX1132-DPP-NEXT: .LBB14_2: ; %atomicrmw.start10215; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=110216; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)10217; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]10218; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc10219; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)10220; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]10221; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v610222; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s210223; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10224; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s210225; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB14_210226; GFX1132-DPP-NEXT: .LBB14_3:10227; GFX1132-DPP-NEXT: s_endpgm10228 %divValue = call double @div.double.value()10229 %result = atomicrmw fsub ptr addrspace(1) %ptr, double %divValue syncscope("agent") monotonic10230 ret void10231}10232 10233define amdgpu_kernel void @global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {10234; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10235; GFX7LESS: ; %bb.0:10236; GFX7LESS-NEXT: s_mov_b32 s32, 010237; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010238; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110239; GFX7LESS-NEXT: s_mov_b32 s38, -110240; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f00010241; GFX7LESS-NEXT: s_add_u32 s36, s36, s1110242; GFX7LESS-NEXT: s_addc_u32 s37, s37, 010243; GFX7LESS-NEXT: s_mov_b32 s14, s1010244; GFX7LESS-NEXT: s_mov_b32 s13, s910245; GFX7LESS-NEXT: s_mov_b32 s12, s810246; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]10247; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]10248; GFX7LESS-NEXT: s_add_u32 s8, s34, 4410249; GFX7LESS-NEXT: s_addc_u32 s9, s35, 010250; GFX7LESS-NEXT: s_getpc_b64 s[4:5]10251; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410252; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210253; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010254; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v210255; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v110256; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v110257; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v210258; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]10259; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]10260; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]10261; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]10262; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)10263; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]10264; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec10265; GFX7LESS-NEXT: v_mov_b32_e32 v4, 010266; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 110267; GFX7LESS-NEXT: .LBB15_1: ; %ComputeLoop10268; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=110269; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]10270; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s410271; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s410272; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s410273; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]10274; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 010275; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]10276; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10277; GFX7LESS-NEXT: s_cbranch_vccnz .LBB15_110278; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd10279; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 010280; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v010281; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010282; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc10283; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10284; GFX7LESS-NEXT: s_cbranch_execz .LBB15_510285; GFX7LESS-NEXT: ; %bb.3:10286; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x910287; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00010288; GFX7LESS-NEXT: s_mov_b32 s2, -110289; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)10290; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 010291; GFX7LESS-NEXT: s_mov_b64 s[4:5], 010292; GFX7LESS-NEXT: .LBB15_4: ; %atomicrmw.start10293; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=110294; GFX7LESS-NEXT: s_waitcnt vmcnt(0)10295; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]10296; GFX7LESS-NEXT: s_waitcnt expcnt(0)10297; GFX7LESS-NEXT: v_mov_b32_e32 v9, v310298; GFX7LESS-NEXT: v_mov_b32_e32 v8, v210299; GFX7LESS-NEXT: v_mov_b32_e32 v7, v110300; GFX7LESS-NEXT: v_mov_b32_e32 v6, v010301; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc10302; GFX7LESS-NEXT: s_waitcnt vmcnt(0)10303; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]10304; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]10305; GFX7LESS-NEXT: v_mov_b32_e32 v2, v610306; GFX7LESS-NEXT: v_mov_b32_e32 v3, v710307; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]10308; GFX7LESS-NEXT: s_cbranch_execnz .LBB15_410309; GFX7LESS-NEXT: .LBB15_5:10310; GFX7LESS-NEXT: s_endpgm10311;10312; GFX9-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10313; GFX9: ; %bb.0:10314; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010315; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110316; GFX9-NEXT: s_mov_b32 s38, -110317; GFX9-NEXT: s_mov_b32 s39, 0xe0000010318; GFX9-NEXT: s_add_u32 s36, s36, s1110319; GFX9-NEXT: s_addc_u32 s37, s37, 010320; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]10321; GFX9-NEXT: s_mov_b32 s12, s810322; GFX9-NEXT: s_add_u32 s8, s34, 4410323; GFX9-NEXT: s_mov_b32 s13, s910324; GFX9-NEXT: s_addc_u32 s9, s35, 010325; GFX9-NEXT: s_getpc_b64 s[4:5]10326; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410327; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210328; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010329; GFX9-NEXT: s_mov_b32 s14, s1010330; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]10331; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v210332; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v110333; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]10334; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]10335; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]10336; GFX9-NEXT: v_or3_b32 v31, v0, v1, v210337; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]10338; GFX9-NEXT: s_mov_b32 s32, 010339; GFX9-NEXT: s_waitcnt lgkmcnt(0)10340; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]10341; GFX9-NEXT: v_mov_b32_e32 v4, 010342; GFX9-NEXT: s_mov_b64 s[0:1], exec10343; GFX9-NEXT: v_bfrev_b32_e32 v5, 110344; GFX9-NEXT: .LBB15_1: ; %ComputeLoop10345; GFX9-NEXT: ; =>This Inner Loop Header: Depth=110346; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]10347; GFX9-NEXT: v_readlane_b32 s3, v1, s410348; GFX9-NEXT: v_readlane_b32 s2, v0, s410349; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10350; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s410351; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]10352; GFX9-NEXT: s_cbranch_scc1 .LBB15_110353; GFX9-NEXT: ; %bb.2: ; %ComputeEnd10354; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010355; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010356; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010357; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc10358; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10359; GFX9-NEXT: s_cbranch_execz .LBB15_510360; GFX9-NEXT: ; %bb.3:10361; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410362; GFX9-NEXT: v_mov_b32_e32 v6, 010363; GFX9-NEXT: s_mov_b64 s[2:3], 010364; GFX9-NEXT: s_waitcnt lgkmcnt(0)10365; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]10366; GFX9-NEXT: .LBB15_4: ; %atomicrmw.start10367; GFX9-NEXT: ; =>This Inner Loop Header: Depth=110368; GFX9-NEXT: s_waitcnt vmcnt(0)10369; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]10370; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10371; GFX9-NEXT: s_waitcnt vmcnt(0)10372; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10373; GFX9-NEXT: v_mov_b32_e32 v3, v110374; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10375; GFX9-NEXT: v_mov_b32_e32 v2, v010376; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]10377; GFX9-NEXT: s_cbranch_execnz .LBB15_410378; GFX9-NEXT: .LBB15_5:10379; GFX9-NEXT: s_endpgm10380;10381; GFX1064-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10382; GFX1064: ; %bb.0:10383; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010384; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110385; GFX1064-NEXT: s_mov_b32 s38, -110386; GFX1064-NEXT: s_mov_b32 s39, 0x31e1600010387; GFX1064-NEXT: s_add_u32 s36, s36, s1110388; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]10389; GFX1064-NEXT: s_addc_u32 s37, s37, 010390; GFX1064-NEXT: s_mov_b32 s12, s810391; GFX1064-NEXT: s_add_u32 s8, s34, 4410392; GFX1064-NEXT: s_mov_b32 s13, s910393; GFX1064-NEXT: s_addc_u32 s9, s35, 010394; GFX1064-NEXT: s_getpc_b64 s[4:5]10395; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410396; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210397; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v210398; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010399; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v110400; GFX1064-NEXT: s_mov_b32 s14, s1010401; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]10402; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]10403; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]10404; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v210405; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]10406; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]10407; GFX1064-NEXT: s_mov_b32 s32, 010408; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10409; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]10410; GFX1064-NEXT: v_mov_b32_e32 v4, 010411; GFX1064-NEXT: v_bfrev_b32_e32 v5, 110412; GFX1064-NEXT: s_mov_b64 s[0:1], exec10413; GFX1064-NEXT: .LBB15_1: ; %ComputeLoop10414; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=110415; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]10416; GFX1064-NEXT: v_readlane_b32 s3, v1, s410417; GFX1064-NEXT: v_readlane_b32 s2, v0, s410418; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10419; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s410420; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]10421; GFX1064-NEXT: s_cbranch_scc1 .LBB15_110422; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd10423; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010424; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010425; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010426; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc10427; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10428; GFX1064-NEXT: s_cbranch_execz .LBB15_510429; GFX1064-NEXT: ; %bb.3:10430; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410431; GFX1064-NEXT: v_mov_b32_e32 v6, 010432; GFX1064-NEXT: s_mov_b64 s[2:3], 010433; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10434; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]10435; GFX1064-NEXT: .LBB15_4: ; %atomicrmw.start10436; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=110437; GFX1064-NEXT: s_waitcnt vmcnt(0)10438; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]10439; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10440; GFX1064-NEXT: s_waitcnt vmcnt(0)10441; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10442; GFX1064-NEXT: v_mov_b32_e32 v3, v110443; GFX1064-NEXT: v_mov_b32_e32 v2, v010444; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10445; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]10446; GFX1064-NEXT: s_cbranch_execnz .LBB15_410447; GFX1064-NEXT: .LBB15_5:10448; GFX1064-NEXT: s_endpgm10449;10450; GFX1032-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10451; GFX1032: ; %bb.0:10452; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010453; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110454; GFX1032-NEXT: s_mov_b32 s38, -110455; GFX1032-NEXT: s_mov_b32 s39, 0x31c1600010456; GFX1032-NEXT: s_add_u32 s36, s36, s1110457; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]10458; GFX1032-NEXT: s_addc_u32 s37, s37, 010459; GFX1032-NEXT: s_mov_b32 s12, s810460; GFX1032-NEXT: s_add_u32 s8, s34, 4410461; GFX1032-NEXT: s_mov_b32 s13, s910462; GFX1032-NEXT: s_addc_u32 s9, s35, 010463; GFX1032-NEXT: s_getpc_b64 s[4:5]10464; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410465; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210466; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v210467; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010468; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v110469; GFX1032-NEXT: s_mov_b32 s14, s1010470; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]10471; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]10472; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]10473; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v210474; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]10475; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]10476; GFX1032-NEXT: s_mov_b32 s32, 010477; GFX1032-NEXT: s_waitcnt lgkmcnt(0)10478; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]10479; GFX1032-NEXT: v_mov_b32_e32 v4, 010480; GFX1032-NEXT: v_bfrev_b32_e32 v5, 110481; GFX1032-NEXT: s_mov_b32 s0, exec_lo10482; GFX1032-NEXT: .LBB15_1: ; %ComputeLoop10483; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=110484; GFX1032-NEXT: s_ff1_i32_b32 s1, s010485; GFX1032-NEXT: v_readlane_b32 s3, v1, s110486; GFX1032-NEXT: v_readlane_b32 s2, v0, s110487; GFX1032-NEXT: s_lshl_b32 s1, 1, s110488; GFX1032-NEXT: s_andn2_b32 s0, s0, s110489; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10490; GFX1032-NEXT: s_cbranch_scc1 .LBB15_110491; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd10492; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010493; GFX1032-NEXT: s_mov_b32 s2, 010494; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v010495; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo10496; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s010497; GFX1032-NEXT: s_cbranch_execz .LBB15_510498; GFX1032-NEXT: ; %bb.3:10499; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410500; GFX1032-NEXT: v_mov_b32_e32 v6, 010501; GFX1032-NEXT: s_waitcnt lgkmcnt(0)10502; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]10503; GFX1032-NEXT: .LBB15_4: ; %atomicrmw.start10504; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=110505; GFX1032-NEXT: s_waitcnt vmcnt(0)10506; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]10507; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10508; GFX1032-NEXT: s_waitcnt vmcnt(0)10509; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]10510; GFX1032-NEXT: v_mov_b32_e32 v3, v110511; GFX1032-NEXT: v_mov_b32_e32 v2, v010512; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s210513; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s210514; GFX1032-NEXT: s_cbranch_execnz .LBB15_410515; GFX1032-NEXT: .LBB15_5:10516; GFX1032-NEXT: s_endpgm10517;10518; GFX1164-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10519; GFX1164: ; %bb.0:10520; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]10521; GFX1164-NEXT: s_mov_b32 s12, s810522; GFX1164-NEXT: s_add_u32 s8, s34, 4410523; GFX1164-NEXT: s_mov_b32 s13, s910524; GFX1164-NEXT: s_addc_u32 s9, s35, 010525; GFX1164-NEXT: s_getpc_b64 s[4:5]10526; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410527; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210528; GFX1164-NEXT: v_mov_b32_e32 v31, v010529; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x010530; GFX1164-NEXT: s_mov_b32 s14, s1010531; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]10532; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]10533; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]10534; GFX1164-NEXT: s_mov_b32 s32, 010535; GFX1164-NEXT: s_waitcnt lgkmcnt(0)10536; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]10537; GFX1164-NEXT: v_mov_b32_e32 v4, 010538; GFX1164-NEXT: v_bfrev_b32_e32 v5, 110539; GFX1164-NEXT: s_mov_b64 s[0:1], exec10540; GFX1164-NEXT: .LBB15_1: ; %ComputeLoop10541; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=110542; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)10543; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]10544; GFX1164-NEXT: v_readlane_b32 s3, v1, s410545; GFX1164-NEXT: v_readlane_b32 s2, v0, s410546; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10547; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10548; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s410549; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]10550; GFX1164-NEXT: s_cbranch_scc1 .LBB15_110551; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd10552; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010553; GFX1164-NEXT: s_mov_b64 s[0:1], exec10554; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10555; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010556; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v010557; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10558; GFX1164-NEXT: s_cbranch_execz .LBB15_510559; GFX1164-NEXT: ; %bb.3:10560; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410561; GFX1164-NEXT: v_mov_b32_e32 v6, 010562; GFX1164-NEXT: s_mov_b64 s[2:3], 010563; GFX1164-NEXT: s_waitcnt lgkmcnt(0)10564; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]10565; GFX1164-NEXT: .LBB15_4: ; %atomicrmw.start10566; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=110567; GFX1164-NEXT: s_waitcnt vmcnt(0)10568; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]10569; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc10570; GFX1164-NEXT: s_waitcnt vmcnt(0)10571; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10572; GFX1164-NEXT: v_mov_b32_e32 v3, v110573; GFX1164-NEXT: v_mov_b32_e32 v2, v010574; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10575; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10576; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]10577; GFX1164-NEXT: s_cbranch_execnz .LBB15_410578; GFX1164-NEXT: .LBB15_5:10579; GFX1164-NEXT: s_endpgm10580;10581; GFX1132-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10582; GFX1132: ; %bb.0:10583; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]10584; GFX1132-NEXT: v_mov_b32_e32 v31, v010585; GFX1132-NEXT: s_add_u32 s8, s34, 4410586; GFX1132-NEXT: s_addc_u32 s9, s35, 010587; GFX1132-NEXT: s_getpc_b64 s[4:5]10588; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410589; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210590; GFX1132-NEXT: s_mov_b32 s12, s1310591; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x010592; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]10593; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]10594; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]10595; GFX1132-NEXT: s_mov_b32 s13, s1410596; GFX1132-NEXT: s_mov_b32 s14, s1510597; GFX1132-NEXT: s_mov_b32 s32, 010598; GFX1132-NEXT: s_waitcnt lgkmcnt(0)10599; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]10600; GFX1132-NEXT: v_mov_b32_e32 v4, 010601; GFX1132-NEXT: v_bfrev_b32_e32 v5, 110602; GFX1132-NEXT: s_mov_b32 s0, exec_lo10603; GFX1132-NEXT: .LBB15_1: ; %ComputeLoop10604; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=110605; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)10606; GFX1132-NEXT: s_ctz_i32_b32 s1, s010607; GFX1132-NEXT: v_readlane_b32 s3, v1, s110608; GFX1132-NEXT: v_readlane_b32 s2, v0, s110609; GFX1132-NEXT: s_lshl_b32 s1, 1, s110610; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10611; GFX1132-NEXT: s_and_not1_b32 s0, s0, s110612; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10613; GFX1132-NEXT: s_cbranch_scc1 .LBB15_110614; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd10615; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010616; GFX1132-NEXT: s_mov_b32 s2, 010617; GFX1132-NEXT: s_mov_b32 s0, exec_lo10618; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)10619; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v010620; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s010621; GFX1132-NEXT: s_cbranch_execz .LBB15_510622; GFX1132-NEXT: ; %bb.3:10623; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410624; GFX1132-NEXT: v_mov_b32_e32 v6, 010625; GFX1132-NEXT: s_waitcnt lgkmcnt(0)10626; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]10627; GFX1132-NEXT: .LBB15_4: ; %atomicrmw.start10628; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=110629; GFX1132-NEXT: s_waitcnt vmcnt(0)10630; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]10631; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc10632; GFX1132-NEXT: s_waitcnt vmcnt(0)10633; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]10634; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v010635; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s210636; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10637; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s210638; GFX1132-NEXT: s_cbranch_execnz .LBB15_410639; GFX1132-NEXT: .LBB15_5:10640; GFX1132-NEXT: s_endpgm10641;10642; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10643; GFX7LESS-DPP: ; %bb.0:10644; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 010645; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD010646; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD110647; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -110648; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f00010649; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s1110650; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 010651; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s1010652; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s910653; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s810654; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10655; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x910656; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf00010657; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -110658; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 4410659; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 010660; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]10661; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410662; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210663; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010664; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210665; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110666; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v110667; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v210668; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10669; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10670; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]10671; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]10672; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)10673; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10674; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 010675; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 010676; GFX7LESS-DPP-NEXT: .LBB15_1: ; %atomicrmw.start10677; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=110678; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)10679; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], -v[0:1]10680; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)10681; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v510682; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v410683; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v310684; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v210685; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc10686; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)10687; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]10688; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]10689; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v610690; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v710691; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]10692; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB15_110693; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end10694; GFX7LESS-DPP-NEXT: s_endpgm10695;10696; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10697; GFX9-DPP: ; %bb.0:10698; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010699; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110700; GFX9-DPP-NEXT: s_mov_b32 s38, -110701; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe0000010702; GFX9-DPP-NEXT: s_add_u32 s36, s36, s1110703; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 010704; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10705; GFX9-DPP-NEXT: s_mov_b32 s12, s810706; GFX9-DPP-NEXT: s_add_u32 s8, s34, 4410707; GFX9-DPP-NEXT: s_mov_b32 s13, s910708; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 010709; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]10710; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410711; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210712; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010713; GFX9-DPP-NEXT: s_mov_b32 s14, s1010714; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10715; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210716; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110717; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10718; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10719; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10720; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v210721; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10722; GFX9-DPP-NEXT: s_mov_b32 s32, 010723; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)10724; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10725; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110726; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 110727; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]10728; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]10729; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110730; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010731; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 010732; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf10733; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf10734; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10735; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110736; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010737; GFX9-DPP-NEXT: s_nop 010738; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf10739; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf10740; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10741; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110742; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010743; GFX9-DPP-NEXT: s_nop 010744; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf10745; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf10746; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10747; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110748; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010749; GFX9-DPP-NEXT: s_nop 010750; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf10751; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf10752; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10753; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110754; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010755; GFX9-DPP-NEXT: s_nop 010756; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf10757; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf10758; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10759; GFX9-DPP-NEXT: s_nop 110760; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf10761; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf10762; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10763; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]10764; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 010765; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 010766; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v110767; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110768; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 6310769; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 6310770; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]10771; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]10772; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v110773; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc10774; GFX9-DPP-NEXT: s_cbranch_execz .LBB15_310775; GFX9-DPP-NEXT: ; %bb.1:10776; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x2410777; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 010778; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)10779; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]10780; GFX9-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10781; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=110782; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)10783; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], -s[0:1]10784; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc10785; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)10786; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]10787; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v210788; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]10789; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v110790; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]10791; GFX9-DPP-NEXT: s_cbranch_execnz .LBB15_210792; GFX9-DPP-NEXT: .LBB15_3:10793; GFX9-DPP-NEXT: s_endpgm10794;10795; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10796; GFX1064-DPP: ; %bb.0:10797; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010798; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110799; GFX1064-DPP-NEXT: s_mov_b32 s38, -110800; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e1600010801; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s1110802; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10803; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 010804; GFX1064-DPP-NEXT: s_mov_b32 s12, s810805; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 4410806; GFX1064-DPP-NEXT: s_mov_b32 s13, s910807; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 010808; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]10809; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410810; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210811; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210812; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010813; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110814; GFX1064-DPP-NEXT: s_mov_b32 s14, s1010815; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10816; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10817; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10818; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v210819; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10820; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10821; GFX1064-DPP-NEXT: s_mov_b32 s32, 010822; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)10823; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10824; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110825; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 110826; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 010827; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]10828; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]10829; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf10830; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10831; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10832; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 110833; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 010834; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf10835; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10836; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10837; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 110838; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 010839; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf10840; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10841; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10842; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 110843; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 010844; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf10845; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10846; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10847; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 010848; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010849; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10850; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 010851; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 010852; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 3210853; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 3210854; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]10855; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]10856; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010857; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 010858; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v010859; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v310860; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v410861; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v710862; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc10863; GFX1064-DPP-NEXT: s_cbranch_execz .LBB15_310864; GFX1064-DPP-NEXT: ; %bb.1:10865; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410866; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 010867; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)10868; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]10869; GFX1064-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10870; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=110871; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)10872; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]10873; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc10874; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)10875; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]10876; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v810877; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v710878; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10879; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]10880; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB15_210881; GFX1064-DPP-NEXT: .LBB15_3:10882; GFX1064-DPP-NEXT: s_endpgm10883;10884; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10885; GFX1032-DPP: ; %bb.0:10886; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010887; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110888; GFX1032-DPP-NEXT: s_mov_b32 s38, -110889; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c1600010890; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s1110891; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10892; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 010893; GFX1032-DPP-NEXT: s_mov_b32 s12, s810894; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 4410895; GFX1032-DPP-NEXT: s_mov_b32 s13, s910896; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 010897; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]10898; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410899; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210900; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210901; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010902; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110903; GFX1032-DPP-NEXT: s_mov_b32 s14, s1010904; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10905; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10906; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10907; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v210908; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10909; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10910; GFX1032-DPP-NEXT: s_mov_b32 s32, 010911; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)10912; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10913; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -110914; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 110915; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 010916; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s010917; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s010918; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf10919; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10920; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10921; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110922; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010923; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf10924; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10925; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10926; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110927; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010928; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf10929; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10930; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10931; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110932; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010933; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf10934; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10935; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10936; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 010937; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010938; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10939; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s010940; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 010941; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v310942; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 010943; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v410944; GFX1032-DPP-NEXT: s_mov_b32 s2, 010945; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v710946; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo10947; GFX1032-DPP-NEXT: s_cbranch_execz .LBB15_310948; GFX1032-DPP-NEXT: ; %bb.1:10949; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410950; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)10951; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]10952; GFX1032-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10953; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=110954; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)10955; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]10956; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc10957; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)10958; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]10959; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v810960; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v710961; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s210962; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s210963; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB15_210964; GFX1032-DPP-NEXT: .LBB15_3:10965; GFX1032-DPP-NEXT: s_endpgm10966;10967; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:10968; GFX1164-DPP: ; %bb.0:10969; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10970; GFX1164-DPP-NEXT: s_mov_b32 s12, s810971; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 4410972; GFX1164-DPP-NEXT: s_mov_b32 s13, s910973; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 010974; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]10975; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410976; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210977; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v010978; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x010979; GFX1164-DPP-NEXT: s_mov_b32 s14, s1010980; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10981; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10982; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10983; GFX1164-DPP-NEXT: s_mov_b32 s32, 010984; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)10985; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10986; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110987; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 110988; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 010989; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]10990; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]10991; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10992; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10993; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf10994; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10995; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]10996; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110997; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010998; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10999; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11000; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf11001; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11002; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 111003; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 011004; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)11005; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf11006; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf11007; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)11008; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11009; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 111010; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 011011; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf11012; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11013; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf11014; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11015; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)11016; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 011017; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 011018; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11019; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11020; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v311021; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11022; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v211023; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11024; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]11025; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)11026; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011027; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 011028; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec11029; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)11030; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v011031; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)11032; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v211033; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v311034; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v611035; GFX1164-DPP-NEXT: s_cbranch_execz .LBB15_311036; GFX1164-DPP-NEXT: ; %bb.1:11037; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2411038; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 011039; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)11040; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]11041; GFX1164-DPP-NEXT: .LBB15_2: ; %atomicrmw.start11042; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=111043; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)11044; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]11045; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc11046; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)11047; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]11048; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v711049; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v611050; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11051; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11052; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]11053; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB15_211054; GFX1164-DPP-NEXT: .LBB15_3:11055; GFX1164-DPP-NEXT: s_endpgm11056;11057; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_agent_scope_unsafe_structfp:11058; GFX1132-DPP: ; %bb.0:11059; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]11060; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v011061; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 4411062; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 011063; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]11064; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411065; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211066; GFX1132-DPP-NEXT: s_mov_b32 s12, s1311067; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x011068; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]11069; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]11070; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]11071; GFX1132-DPP-NEXT: s_mov_b32 s13, s1411072; GFX1132-DPP-NEXT: s_mov_b32 s14, s1511073; GFX1132-DPP-NEXT: s_mov_b32 s32, 011074; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)11075; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]11076; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -111077; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 111078; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 011079; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s011080; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s011081; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)11082; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf11083; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf11084; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)11085; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]11086; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 111087; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 011088; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf11089; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11090; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf11091; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11092; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 111093; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 011094; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)11095; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf11096; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf11097; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)11098; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11099; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 111100; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 011101; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf11102; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11103; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf11104; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11105; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)11106; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 011107; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 011108; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)11109; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]11110; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s011111; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v211112; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 011113; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)11114; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v311115; GFX1132-DPP-NEXT: s_mov_b32 s2, 011116; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo11117; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v611118; GFX1132-DPP-NEXT: s_cbranch_execz .LBB15_311119; GFX1132-DPP-NEXT: ; %bb.1:11120; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2411121; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)11122; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]11123; GFX1132-DPP-NEXT: .LBB15_2: ; %atomicrmw.start11124; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=111125; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)11126; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]11127; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc11128; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)11129; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]11130; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v611131; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s211132; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11133; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s211134; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB15_211135; GFX1132-DPP-NEXT: .LBB15_3:11136; GFX1132-DPP-NEXT: s_endpgm11137 %divValue = call double @div.float.value() strictfp11138 %result = atomicrmw fsub ptr addrspace(1) %ptr, double %divValue syncscope("agent") monotonic11139 ret void11140}11141define amdgpu_kernel void @global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {11142; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11143; GFX7LESS: ; %bb.0:11144; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011145; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111146; GFX7LESS-NEXT: s_mov_b32 s14, -111147; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f00011148; GFX7LESS-NEXT: s_add_u32 s12, s12, s1111149; GFX7LESS-NEXT: s_addc_u32 s13, s13, 011150; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec11151; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 011152; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v011153; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011154; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc11155; GFX7LESS-NEXT: s_cbranch_execz .LBB16_311156; GFX7LESS-NEXT: ; %bb.1:11157; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x911158; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[2:3]11159; GFX7LESS-NEXT: s_mov_b32 s7, 0x4330000011160; GFX7LESS-NEXT: v_mov_b32_e32 v0, 011161; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc330000011162; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)11163; GFX7LESS-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x011164; GFX7LESS-NEXT: s_mov_b64 s[4:5], 011165; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00011166; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]11167; GFX7LESS-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11168; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)11169; GFX7LESS-NEXT: v_mov_b32_e32 v2, s811170; GFX7LESS-NEXT: v_mov_b32_e32 v3, s911171; GFX7LESS-NEXT: s_mov_b32 s2, -111172; GFX7LESS-NEXT: .LBB16_2: ; %atomicrmw.start11173; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=111174; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11175; GFX7LESS-NEXT: s_waitcnt expcnt(0)11176; GFX7LESS-NEXT: v_mov_b32_e32 v9, v311177; GFX7LESS-NEXT: v_mov_b32_e32 v8, v211178; GFX7LESS-NEXT: v_mov_b32_e32 v7, v111179; GFX7LESS-NEXT: v_mov_b32_e32 v6, v011180; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc11181; GFX7LESS-NEXT: s_waitcnt vmcnt(0)11182; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]11183; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]11184; GFX7LESS-NEXT: v_mov_b32_e32 v2, v611185; GFX7LESS-NEXT: v_mov_b32_e32 v3, v711186; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]11187; GFX7LESS-NEXT: s_cbranch_execnz .LBB16_211188; GFX7LESS-NEXT: .LBB16_3:11189; GFX7LESS-NEXT: s_endpgm11190;11191; GFX9-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11192; GFX9: ; %bb.0:11193; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011194; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111195; GFX9-NEXT: s_mov_b32 s14, -111196; GFX9-NEXT: s_mov_b64 s[0:1], exec11197; GFX9-NEXT: s_mov_b32 s15, 0xe0000011198; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011199; GFX9-NEXT: s_add_u32 s12, s12, s1111200; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v011201; GFX9-NEXT: s_addc_u32 s13, s13, 011202; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011203; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc11204; GFX9-NEXT: s_cbranch_execz .LBB16_311205; GFX9-NEXT: ; %bb.1:11206; GFX9-NEXT: v_mov_b32_e32 v0, 011207; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]11208; GFX9-NEXT: v_mov_b32_e32 v1, 0xc330000011209; GFX9-NEXT: s_mov_b32 s1, 0x4330000011210; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]11211; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411212; GFX9-NEXT: s_mov_b64 s[2:3], 011213; GFX9-NEXT: v_mov_b32_e32 v6, 011214; GFX9-NEXT: s_waitcnt lgkmcnt(0)11215; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x011216; GFX9-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11217; GFX9-NEXT: s_waitcnt lgkmcnt(0)11218; GFX9-NEXT: v_mov_b32_e32 v2, s411219; GFX9-NEXT: v_mov_b32_e32 v3, s511220; GFX9-NEXT: .LBB16_2: ; %atomicrmw.start11221; GFX9-NEXT: ; =>This Inner Loop Header: Depth=111222; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11223; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11224; GFX9-NEXT: s_waitcnt vmcnt(0)11225; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11226; GFX9-NEXT: v_mov_b32_e32 v3, v111227; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11228; GFX9-NEXT: v_mov_b32_e32 v2, v011229; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]11230; GFX9-NEXT: s_cbranch_execnz .LBB16_211231; GFX9-NEXT: .LBB16_3:11232; GFX9-NEXT: s_endpgm11233;11234; GFX1064-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11235; GFX1064: ; %bb.0:11236; GFX1064-NEXT: s_mov_b64 s[0:1], exec11237; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011238; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011239; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111240; GFX1064-NEXT: s_mov_b32 s14, -111241; GFX1064-NEXT: s_mov_b32 s15, 0x31e1600011242; GFX1064-NEXT: s_add_u32 s12, s12, s1111243; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v011244; GFX1064-NEXT: s_addc_u32 s13, s13, 011245; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011246; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc11247; GFX1064-NEXT: s_cbranch_execz .LBB16_311248; GFX1064-NEXT: ; %bb.1:11249; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[0:1]11250; GFX1064-NEXT: s_mov_b32 s3, 0x4330000011251; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411252; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]11253; GFX1064-NEXT: v_mov_b32_e32 v6, 011254; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11255; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x011256; GFX1064-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11257; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11258; GFX1064-NEXT: v_mov_b32_e32 v2, s211259; GFX1064-NEXT: v_mov_b32_e32 v3, s311260; GFX1064-NEXT: s_mov_b64 s[2:3], 011261; GFX1064-NEXT: .LBB16_2: ; %atomicrmw.start11262; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=111263; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11264; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11265; GFX1064-NEXT: s_waitcnt vmcnt(0)11266; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11267; GFX1064-NEXT: v_mov_b32_e32 v3, v111268; GFX1064-NEXT: v_mov_b32_e32 v2, v011269; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11270; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]11271; GFX1064-NEXT: s_cbranch_execnz .LBB16_211272; GFX1064-NEXT: .LBB16_3:11273; GFX1064-NEXT: s_endpgm11274;11275; GFX1032-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11276; GFX1032: ; %bb.0:11277; GFX1032-NEXT: s_mov_b32 s0, exec_lo11278; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011279; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011280; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111281; GFX1032-NEXT: s_mov_b32 s14, -111282; GFX1032-NEXT: s_mov_b32 s15, 0x31c1600011283; GFX1032-NEXT: s_add_u32 s12, s12, s1111284; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011285; GFX1032-NEXT: s_addc_u32 s13, s13, 011286; GFX1032-NEXT: s_mov_b32 s2, 011287; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo11288; GFX1032-NEXT: s_cbranch_execz .LBB16_311289; GFX1032-NEXT: ; %bb.1:11290; GFX1032-NEXT: s_bcnt1_i32_b32 s6, s011291; GFX1032-NEXT: s_mov_b32 s7, 0x4330000011292; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411293; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]11294; GFX1032-NEXT: v_mov_b32_e32 v6, 011295; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11296; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x011297; GFX1032-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11298; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11299; GFX1032-NEXT: v_mov_b32_e32 v2, s411300; GFX1032-NEXT: v_mov_b32_e32 v3, s511301; GFX1032-NEXT: .LBB16_2: ; %atomicrmw.start11302; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=111303; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11304; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11305; GFX1032-NEXT: s_waitcnt vmcnt(0)11306; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11307; GFX1032-NEXT: v_mov_b32_e32 v3, v111308; GFX1032-NEXT: v_mov_b32_e32 v2, v011309; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s211310; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s211311; GFX1032-NEXT: s_cbranch_execnz .LBB16_211312; GFX1032-NEXT: .LBB16_3:11313; GFX1032-NEXT: s_endpgm11314;11315; GFX1164-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11316; GFX1164: ; %bb.0:11317; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec11318; GFX1164-NEXT: v_mov_b32_e32 v0, 0x4330000011319; GFX1164-NEXT: v_mov_b32_e32 v1, s011320; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011321; GFX1164-NEXT: s_mov_b64 s[0:1], exec11322; GFX1164-NEXT: s_clause 0x111323; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:411324; GFX1164-NEXT: scratch_store_b32 off, v1, off11325; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off11326; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v211327; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)11328; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v211329; GFX1164-NEXT: s_cbranch_execz .LBB16_311330; GFX1164-NEXT: ; %bb.1:11331; GFX1164-NEXT: s_waitcnt vmcnt(0)11332; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11333; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411334; GFX1164-NEXT: v_mov_b32_e32 v6, 011335; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11336; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x011337; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2)11338; GFX1164-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11339; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11340; GFX1164-NEXT: v_mov_b32_e32 v2, s211341; GFX1164-NEXT: v_mov_b32_e32 v3, s311342; GFX1164-NEXT: s_mov_b64 s[2:3], 011343; GFX1164-NEXT: .LBB16_2: ; %atomicrmw.start11344; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=111345; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)11346; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11347; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11348; GFX1164-NEXT: s_waitcnt vmcnt(0)11349; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11350; GFX1164-NEXT: v_mov_b32_e32 v3, v111351; GFX1164-NEXT: v_mov_b32_e32 v2, v011352; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11353; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11354; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]11355; GFX1164-NEXT: s_cbranch_execnz .LBB16_211356; GFX1164-NEXT: .LBB16_3:11357; GFX1164-NEXT: s_endpgm11358;11359; GFX1132-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11360; GFX1132: ; %bb.0:11361; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo11362; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11363; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s011364; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011365; GFX1132-NEXT: s_mov_b32 s2, 011366; GFX1132-NEXT: s_mov_b32 s0, exec_lo11367; GFX1132-NEXT: s_clause 0x111368; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:411369; GFX1132-NEXT: scratch_store_b32 off, v1, off11370; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off11371; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v211372; GFX1132-NEXT: s_cbranch_execz .LBB16_311373; GFX1132-NEXT: ; %bb.1:11374; GFX1132-NEXT: s_waitcnt vmcnt(0)11375; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11376; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411377; GFX1132-NEXT: v_mov_b32_e32 v6, 011378; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11379; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x011380; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2)11381; GFX1132-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11382; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11383; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s511384; GFX1132-NEXT: .LBB16_2: ; %atomicrmw.start11385; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=111386; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)11387; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11388; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11389; GFX1132-NEXT: s_waitcnt vmcnt(0)11390; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11391; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v011392; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s211393; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11394; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s211395; GFX1132-NEXT: s_cbranch_execnz .LBB16_211396; GFX1132-NEXT: .LBB16_3:11397; GFX1132-NEXT: s_endpgm11398;11399; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11400; GFX7LESS-DPP: ; %bb.0:11401; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011402; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111403; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -111404; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f00011405; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s1111406; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 011407; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec11408; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 011409; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v011410; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011411; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc11412; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB16_311413; GFX7LESS-DPP-NEXT: ; %bb.1:11414; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x911415; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[2:3]11416; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x4330000011417; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 011418; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc330000011419; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)11420; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x011421; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 011422; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf00011423; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]11424; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11425; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)11426; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s811427; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s911428; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -111429; GFX7LESS-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11430; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=111431; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11432; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)11433; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v311434; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v211435; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v111436; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v011437; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc11438; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)11439; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]11440; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]11441; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v611442; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v711443; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]11444; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB16_211445; GFX7LESS-DPP-NEXT: .LBB16_3:11446; GFX7LESS-DPP-NEXT: s_endpgm11447;11448; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11449; GFX9-DPP: ; %bb.0:11450; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011451; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111452; GFX9-DPP-NEXT: s_mov_b32 s14, -111453; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec11454; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe0000011455; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011456; GFX9-DPP-NEXT: s_add_u32 s12, s12, s1111457; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v011458; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 011459; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011460; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc11461; GFX9-DPP-NEXT: s_cbranch_execz .LBB16_311462; GFX9-DPP-NEXT: ; %bb.1:11463; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 011464; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]11465; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc330000011466; GFX9-DPP-NEXT: s_mov_b32 s1, 0x4330000011467; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]11468; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411469; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 011470; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 011471; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)11472; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x011473; GFX9-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11474; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)11475; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s411476; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s511477; GFX9-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11478; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=111479; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11480; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11481; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)11482; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11483; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v111484; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11485; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v011486; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]11487; GFX9-DPP-NEXT: s_cbranch_execnz .LBB16_211488; GFX9-DPP-NEXT: .LBB16_3:11489; GFX9-DPP-NEXT: s_endpgm11490;11491; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11492; GFX1064-DPP: ; %bb.0:11493; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec11494; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011495; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011496; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111497; GFX1064-DPP-NEXT: s_mov_b32 s14, -111498; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e1600011499; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s1111500; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v011501; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 011502; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011503; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc11504; GFX1064-DPP-NEXT: s_cbranch_execz .LBB16_311505; GFX1064-DPP-NEXT: ; %bb.1:11506; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[0:1]11507; GFX1064-DPP-NEXT: s_mov_b32 s3, 0x4330000011508; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411509; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]11510; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 011511; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)11512; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x011513; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11514; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)11515; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s211516; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s311517; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 011518; GFX1064-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11519; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=111520; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11521; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11522; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)11523; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11524; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v111525; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v011526; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11527; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]11528; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB16_211529; GFX1064-DPP-NEXT: .LBB16_3:11530; GFX1064-DPP-NEXT: s_endpgm11531;11532; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11533; GFX1032-DPP: ; %bb.0:11534; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo11535; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011536; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011537; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111538; GFX1032-DPP-NEXT: s_mov_b32 s14, -111539; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c1600011540; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s1111541; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011542; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 011543; GFX1032-DPP-NEXT: s_mov_b32 s2, 011544; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo11545; GFX1032-DPP-NEXT: s_cbranch_execz .LBB16_311546; GFX1032-DPP-NEXT: ; %bb.1:11547; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s6, s011548; GFX1032-DPP-NEXT: s_mov_b32 s7, 0x4330000011549; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411550; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]11551; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 011552; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)11553; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x011554; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11555; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)11556; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s411557; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s511558; GFX1032-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11559; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=111560; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11561; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11562; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)11563; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11564; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v111565; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v011566; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s211567; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s211568; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB16_211569; GFX1032-DPP-NEXT: .LBB16_3:11570; GFX1032-DPP-NEXT: s_endpgm11571;11572; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11573; GFX1164-DPP: ; %bb.0:11574; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec11575; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x4330000011576; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s011577; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011578; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec11579; GFX1164-DPP-NEXT: s_clause 0x111580; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:411581; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off11582; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off11583; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v211584; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11585; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v211586; GFX1164-DPP-NEXT: s_cbranch_execz .LBB16_311587; GFX1164-DPP-NEXT: ; %bb.1:11588; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)11589; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11590; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411591; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 011592; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)11593; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x011594; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)11595; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11596; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)11597; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s211598; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s311599; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 011600; GFX1164-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11601; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=111602; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11603; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11604; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11605; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)11606; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11607; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v111608; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v011609; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11610; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11611; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]11612; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB16_211613; GFX1164-DPP-NEXT: .LBB16_3:11614; GFX1164-DPP-NEXT: s_endpgm11615;11616; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_uni_value_default_scope_strictfp:11617; GFX1132-DPP: ; %bb.0:11618; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo11619; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11620; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s011621; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011622; GFX1132-DPP-NEXT: s_mov_b32 s2, 011623; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo11624; GFX1132-DPP-NEXT: s_clause 0x111625; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:411626; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off11627; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off11628; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v211629; GFX1132-DPP-NEXT: s_cbranch_execz .LBB16_311630; GFX1132-DPP-NEXT: ; %bb.1:11631; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)11632; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11633; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411634; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 011635; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)11636; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x011637; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)11638; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11639; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)11640; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s511641; GFX1132-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11642; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=111643; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11644; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11645; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11646; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)11647; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11648; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v011649; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s211650; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11651; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s211652; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB16_211653; GFX1132-DPP-NEXT: .LBB16_3:11654; GFX1132-DPP-NEXT: s_endpgm11655 %result = atomicrmw fsub ptr addrspace(1) %ptr, double 4.0 monotonic, align 811656 ret void11657}11658 11659define amdgpu_kernel void @global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {11660; GFX7LESS-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:11661; GFX7LESS: ; %bb.0:11662; GFX7LESS-NEXT: s_mov_b32 s32, 011663; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011664; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111665; GFX7LESS-NEXT: s_mov_b32 s38, -111666; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f00011667; GFX7LESS-NEXT: s_add_u32 s36, s36, s1111668; GFX7LESS-NEXT: s_addc_u32 s37, s37, 011669; GFX7LESS-NEXT: s_mov_b32 s14, s1011670; GFX7LESS-NEXT: s_mov_b32 s13, s911671; GFX7LESS-NEXT: s_mov_b32 s12, s811672; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]11673; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]11674; GFX7LESS-NEXT: s_add_u32 s8, s34, 4411675; GFX7LESS-NEXT: s_addc_u32 s9, s35, 011676; GFX7LESS-NEXT: s_getpc_b64 s[4:5]11677; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411678; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211679; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011680; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v211681; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v111682; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v111683; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v211684; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]11685; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]11686; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]11687; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]11688; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)11689; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]11690; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec11691; GFX7LESS-NEXT: v_mov_b32_e32 v4, 011692; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 111693; GFX7LESS-NEXT: .LBB17_1: ; %ComputeLoop11694; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=111695; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]11696; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s411697; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s411698; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s411699; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]11700; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 011701; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]11702; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11703; GFX7LESS-NEXT: s_cbranch_vccnz .LBB17_111704; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd11705; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 011706; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v011707; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011708; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc11709; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11710; GFX7LESS-NEXT: s_cbranch_execz .LBB17_511711; GFX7LESS-NEXT: ; %bb.3:11712; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x911713; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00011714; GFX7LESS-NEXT: s_mov_b32 s2, -111715; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)11716; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 011717; GFX7LESS-NEXT: s_mov_b64 s[4:5], 011718; GFX7LESS-NEXT: .LBB17_4: ; %atomicrmw.start11719; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=111720; GFX7LESS-NEXT: s_waitcnt vmcnt(0)11721; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11722; GFX7LESS-NEXT: s_waitcnt expcnt(0)11723; GFX7LESS-NEXT: v_mov_b32_e32 v9, v311724; GFX7LESS-NEXT: v_mov_b32_e32 v8, v211725; GFX7LESS-NEXT: v_mov_b32_e32 v7, v111726; GFX7LESS-NEXT: v_mov_b32_e32 v6, v011727; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc11728; GFX7LESS-NEXT: s_waitcnt vmcnt(0)11729; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]11730; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]11731; GFX7LESS-NEXT: v_mov_b32_e32 v2, v611732; GFX7LESS-NEXT: v_mov_b32_e32 v3, v711733; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]11734; GFX7LESS-NEXT: s_cbranch_execnz .LBB17_411735; GFX7LESS-NEXT: .LBB17_5:11736; GFX7LESS-NEXT: s_endpgm11737;11738; GFX9-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:11739; GFX9: ; %bb.0:11740; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011741; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111742; GFX9-NEXT: s_mov_b32 s38, -111743; GFX9-NEXT: s_mov_b32 s39, 0xe0000011744; GFX9-NEXT: s_add_u32 s36, s36, s1111745; GFX9-NEXT: s_addc_u32 s37, s37, 011746; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]11747; GFX9-NEXT: s_mov_b32 s12, s811748; GFX9-NEXT: s_add_u32 s8, s34, 4411749; GFX9-NEXT: s_mov_b32 s13, s911750; GFX9-NEXT: s_addc_u32 s9, s35, 011751; GFX9-NEXT: s_getpc_b64 s[4:5]11752; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411753; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211754; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011755; GFX9-NEXT: s_mov_b32 s14, s1011756; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]11757; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v211758; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v111759; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]11760; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]11761; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]11762; GFX9-NEXT: v_or3_b32 v31, v0, v1, v211763; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]11764; GFX9-NEXT: s_mov_b32 s32, 011765; GFX9-NEXT: s_waitcnt lgkmcnt(0)11766; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]11767; GFX9-NEXT: v_mov_b32_e32 v4, 011768; GFX9-NEXT: s_mov_b64 s[0:1], exec11769; GFX9-NEXT: v_bfrev_b32_e32 v5, 111770; GFX9-NEXT: .LBB17_1: ; %ComputeLoop11771; GFX9-NEXT: ; =>This Inner Loop Header: Depth=111772; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]11773; GFX9-NEXT: v_readlane_b32 s3, v1, s411774; GFX9-NEXT: v_readlane_b32 s2, v0, s411775; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11776; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s411777; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]11778; GFX9-NEXT: s_cbranch_scc1 .LBB17_111779; GFX9-NEXT: ; %bb.2: ; %ComputeEnd11780; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011781; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011782; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011783; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc11784; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11785; GFX9-NEXT: s_cbranch_execz .LBB17_511786; GFX9-NEXT: ; %bb.3:11787; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411788; GFX9-NEXT: v_mov_b32_e32 v6, 011789; GFX9-NEXT: s_mov_b64 s[2:3], 011790; GFX9-NEXT: s_waitcnt lgkmcnt(0)11791; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]11792; GFX9-NEXT: .LBB17_4: ; %atomicrmw.start11793; GFX9-NEXT: ; =>This Inner Loop Header: Depth=111794; GFX9-NEXT: s_waitcnt vmcnt(0)11795; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11796; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11797; GFX9-NEXT: s_waitcnt vmcnt(0)11798; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11799; GFX9-NEXT: v_mov_b32_e32 v3, v111800; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11801; GFX9-NEXT: v_mov_b32_e32 v2, v011802; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]11803; GFX9-NEXT: s_cbranch_execnz .LBB17_411804; GFX9-NEXT: .LBB17_5:11805; GFX9-NEXT: s_endpgm11806;11807; GFX1064-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:11808; GFX1064: ; %bb.0:11809; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011810; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111811; GFX1064-NEXT: s_mov_b32 s38, -111812; GFX1064-NEXT: s_mov_b32 s39, 0x31e1600011813; GFX1064-NEXT: s_add_u32 s36, s36, s1111814; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]11815; GFX1064-NEXT: s_addc_u32 s37, s37, 011816; GFX1064-NEXT: s_mov_b32 s12, s811817; GFX1064-NEXT: s_add_u32 s8, s34, 4411818; GFX1064-NEXT: s_mov_b32 s13, s911819; GFX1064-NEXT: s_addc_u32 s9, s35, 011820; GFX1064-NEXT: s_getpc_b64 s[4:5]11821; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411822; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211823; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v211824; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011825; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v111826; GFX1064-NEXT: s_mov_b32 s14, s1011827; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]11828; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]11829; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]11830; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v211831; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]11832; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]11833; GFX1064-NEXT: s_mov_b32 s32, 011834; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11835; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]11836; GFX1064-NEXT: v_mov_b32_e32 v4, 011837; GFX1064-NEXT: v_bfrev_b32_e32 v5, 111838; GFX1064-NEXT: s_mov_b64 s[0:1], exec11839; GFX1064-NEXT: .LBB17_1: ; %ComputeLoop11840; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=111841; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]11842; GFX1064-NEXT: v_readlane_b32 s3, v1, s411843; GFX1064-NEXT: v_readlane_b32 s2, v0, s411844; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11845; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s411846; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]11847; GFX1064-NEXT: s_cbranch_scc1 .LBB17_111848; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd11849; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011850; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011851; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011852; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc11853; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11854; GFX1064-NEXT: s_cbranch_execz .LBB17_511855; GFX1064-NEXT: ; %bb.3:11856; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411857; GFX1064-NEXT: v_mov_b32_e32 v6, 011858; GFX1064-NEXT: s_mov_b64 s[2:3], 011859; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11860; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]11861; GFX1064-NEXT: .LBB17_4: ; %atomicrmw.start11862; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=111863; GFX1064-NEXT: s_waitcnt vmcnt(0)11864; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11865; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11866; GFX1064-NEXT: s_waitcnt vmcnt(0)11867; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11868; GFX1064-NEXT: v_mov_b32_e32 v3, v111869; GFX1064-NEXT: v_mov_b32_e32 v2, v011870; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11871; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]11872; GFX1064-NEXT: s_cbranch_execnz .LBB17_411873; GFX1064-NEXT: .LBB17_5:11874; GFX1064-NEXT: s_endpgm11875;11876; GFX1032-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:11877; GFX1032: ; %bb.0:11878; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011879; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111880; GFX1032-NEXT: s_mov_b32 s38, -111881; GFX1032-NEXT: s_mov_b32 s39, 0x31c1600011882; GFX1032-NEXT: s_add_u32 s36, s36, s1111883; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]11884; GFX1032-NEXT: s_addc_u32 s37, s37, 011885; GFX1032-NEXT: s_mov_b32 s12, s811886; GFX1032-NEXT: s_add_u32 s8, s34, 4411887; GFX1032-NEXT: s_mov_b32 s13, s911888; GFX1032-NEXT: s_addc_u32 s9, s35, 011889; GFX1032-NEXT: s_getpc_b64 s[4:5]11890; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411891; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211892; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v211893; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011894; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v111895; GFX1032-NEXT: s_mov_b32 s14, s1011896; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]11897; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]11898; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]11899; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v211900; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]11901; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]11902; GFX1032-NEXT: s_mov_b32 s32, 011903; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11904; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]11905; GFX1032-NEXT: v_mov_b32_e32 v4, 011906; GFX1032-NEXT: v_bfrev_b32_e32 v5, 111907; GFX1032-NEXT: s_mov_b32 s0, exec_lo11908; GFX1032-NEXT: .LBB17_1: ; %ComputeLoop11909; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=111910; GFX1032-NEXT: s_ff1_i32_b32 s1, s011911; GFX1032-NEXT: v_readlane_b32 s3, v1, s111912; GFX1032-NEXT: v_readlane_b32 s2, v0, s111913; GFX1032-NEXT: s_lshl_b32 s1, 1, s111914; GFX1032-NEXT: s_andn2_b32 s0, s0, s111915; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11916; GFX1032-NEXT: s_cbranch_scc1 .LBB17_111917; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd11918; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011919; GFX1032-NEXT: s_mov_b32 s2, 011920; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011921; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo11922; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s011923; GFX1032-NEXT: s_cbranch_execz .LBB17_511924; GFX1032-NEXT: ; %bb.3:11925; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411926; GFX1032-NEXT: v_mov_b32_e32 v6, 011927; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11928; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]11929; GFX1032-NEXT: .LBB17_4: ; %atomicrmw.start11930; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=111931; GFX1032-NEXT: s_waitcnt vmcnt(0)11932; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11933; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11934; GFX1032-NEXT: s_waitcnt vmcnt(0)11935; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11936; GFX1032-NEXT: v_mov_b32_e32 v3, v111937; GFX1032-NEXT: v_mov_b32_e32 v2, v011938; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s211939; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s211940; GFX1032-NEXT: s_cbranch_execnz .LBB17_411941; GFX1032-NEXT: .LBB17_5:11942; GFX1032-NEXT: s_endpgm11943;11944; GFX1164-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:11945; GFX1164: ; %bb.0:11946; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]11947; GFX1164-NEXT: s_mov_b32 s12, s811948; GFX1164-NEXT: s_add_u32 s8, s34, 4411949; GFX1164-NEXT: s_mov_b32 s13, s911950; GFX1164-NEXT: s_addc_u32 s9, s35, 011951; GFX1164-NEXT: s_getpc_b64 s[4:5]11952; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411953; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211954; GFX1164-NEXT: v_mov_b32_e32 v31, v011955; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x011956; GFX1164-NEXT: s_mov_b32 s14, s1011957; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]11958; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]11959; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]11960; GFX1164-NEXT: s_mov_b32 s32, 011961; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11962; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]11963; GFX1164-NEXT: v_mov_b32_e32 v4, 011964; GFX1164-NEXT: v_bfrev_b32_e32 v5, 111965; GFX1164-NEXT: s_mov_b64 s[0:1], exec11966; GFX1164-NEXT: .LBB17_1: ; %ComputeLoop11967; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=111968; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)11969; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]11970; GFX1164-NEXT: v_readlane_b32 s3, v1, s411971; GFX1164-NEXT: v_readlane_b32 s2, v0, s411972; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)11973; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11974; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s411975; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]11976; GFX1164-NEXT: s_cbranch_scc1 .LBB17_111977; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd11978; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011979; GFX1164-NEXT: s_mov_b64 s[0:1], exec11980; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11981; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011982; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v011983; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11984; GFX1164-NEXT: s_cbranch_execz .LBB17_511985; GFX1164-NEXT: ; %bb.3:11986; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x2411987; GFX1164-NEXT: v_mov_b32_e32 v6, 011988; GFX1164-NEXT: s_mov_b64 s[2:3], 011989; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11990; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]11991; GFX1164-NEXT: .LBB17_4: ; %atomicrmw.start11992; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=111993; GFX1164-NEXT: s_waitcnt vmcnt(0)11994; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]11995; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11996; GFX1164-NEXT: s_waitcnt vmcnt(0)11997; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11998; GFX1164-NEXT: v_mov_b32_e32 v3, v111999; GFX1164-NEXT: v_mov_b32_e32 v2, v012000; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12001; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12002; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]12003; GFX1164-NEXT: s_cbranch_execnz .LBB17_412004; GFX1164-NEXT: .LBB17_5:12005; GFX1164-NEXT: s_endpgm12006;12007; GFX1132-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12008; GFX1132: ; %bb.0:12009; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]12010; GFX1132-NEXT: v_mov_b32_e32 v31, v012011; GFX1132-NEXT: s_add_u32 s8, s34, 4412012; GFX1132-NEXT: s_addc_u32 s9, s35, 012013; GFX1132-NEXT: s_getpc_b64 s[4:5]12014; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412015; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212016; GFX1132-NEXT: s_mov_b32 s12, s1312017; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x012018; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]12019; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]12020; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]12021; GFX1132-NEXT: s_mov_b32 s13, s1412022; GFX1132-NEXT: s_mov_b32 s14, s1512023; GFX1132-NEXT: s_mov_b32 s32, 012024; GFX1132-NEXT: s_waitcnt lgkmcnt(0)12025; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]12026; GFX1132-NEXT: v_mov_b32_e32 v4, 012027; GFX1132-NEXT: v_bfrev_b32_e32 v5, 112028; GFX1132-NEXT: s_mov_b32 s0, exec_lo12029; GFX1132-NEXT: .LBB17_1: ; %ComputeLoop12030; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=112031; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)12032; GFX1132-NEXT: s_ctz_i32_b32 s1, s012033; GFX1132-NEXT: v_readlane_b32 s3, v1, s112034; GFX1132-NEXT: v_readlane_b32 s2, v0, s112035; GFX1132-NEXT: s_lshl_b32 s1, 1, s112036; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12037; GFX1132-NEXT: s_and_not1_b32 s0, s0, s112038; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]12039; GFX1132-NEXT: s_cbranch_scc1 .LBB17_112040; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd12041; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012042; GFX1132-NEXT: s_mov_b32 s2, 012043; GFX1132-NEXT: s_mov_b32 s0, exec_lo12044; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)12045; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v012046; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s012047; GFX1132-NEXT: s_cbranch_execz .LBB17_512048; GFX1132-NEXT: ; %bb.3:12049; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x2412050; GFX1132-NEXT: v_mov_b32_e32 v6, 012051; GFX1132-NEXT: s_waitcnt lgkmcnt(0)12052; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]12053; GFX1132-NEXT: .LBB17_4: ; %atomicrmw.start12054; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=112055; GFX1132-NEXT: s_waitcnt vmcnt(0)12056; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], -v[4:5]12057; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc12058; GFX1132-NEXT: s_waitcnt vmcnt(0)12059; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]12060; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v012061; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s212062; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12063; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s212064; GFX1132-NEXT: s_cbranch_execnz .LBB17_412065; GFX1132-NEXT: .LBB17_5:12066; GFX1132-NEXT: s_endpgm12067;12068; GFX7LESS-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12069; GFX7LESS-DPP: ; %bb.0:12070; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 012071; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD012072; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD112073; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -112074; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f00012075; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s1112076; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 012077; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s1012078; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s912079; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s812080; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12081; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x912082; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf00012083; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -112084; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 4412085; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 012086; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]12087; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412088; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212089; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x012090; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v212091; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v112092; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v112093; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v212094; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12095; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12096; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]12097; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]12098; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)12099; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12100; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 012101; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 012102; GFX7LESS-DPP-NEXT: .LBB17_1: ; %atomicrmw.start12103; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=112104; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)12105; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], -v[0:1]12106; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)12107; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v512108; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v412109; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v312110; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v212111; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc12112; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)12113; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]12114; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]12115; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v612116; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v712117; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]12118; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB17_112119; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end12120; GFX7LESS-DPP-NEXT: s_endpgm12121;12122; GFX9-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12123; GFX9-DPP: ; %bb.0:12124; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD012125; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD112126; GFX9-DPP-NEXT: s_mov_b32 s38, -112127; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe0000012128; GFX9-DPP-NEXT: s_add_u32 s36, s36, s1112129; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 012130; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12131; GFX9-DPP-NEXT: s_mov_b32 s12, s812132; GFX9-DPP-NEXT: s_add_u32 s8, s34, 4412133; GFX9-DPP-NEXT: s_mov_b32 s13, s912134; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 012135; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]12136; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412137; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212138; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x012139; GFX9-DPP-NEXT: s_mov_b32 s14, s1012140; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12141; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v212142; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v112143; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12144; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12145; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]12146; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v212147; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]12148; GFX9-DPP-NEXT: s_mov_b32 s32, 012149; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)12150; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12151; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -112152; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 112153; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]12154; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]12155; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 112156; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 012157; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 012158; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf12159; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf12160; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]12161; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 112162; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 012163; GFX9-DPP-NEXT: s_nop 012164; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf12165; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf12166; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]12167; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 112168; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 012169; GFX9-DPP-NEXT: s_nop 012170; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf12171; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf12172; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]12173; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 112174; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 012175; GFX9-DPP-NEXT: s_nop 012176; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf12177; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf12178; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]12179; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 112180; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 012181; GFX9-DPP-NEXT: s_nop 012182; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf12183; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf12184; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]12185; GFX9-DPP-NEXT: s_nop 112186; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf12187; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf12188; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]12189; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]12190; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 012191; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 012192; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v112193; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -112194; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 6312195; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 6312196; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]12197; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]12198; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v112199; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc12200; GFX9-DPP-NEXT: s_cbranch_execz .LBB17_312201; GFX9-DPP-NEXT: ; %bb.1:12202; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x2412203; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 012204; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)12205; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]12206; GFX9-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12207; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=112208; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)12209; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], -s[0:1]12210; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc12211; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)12212; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]12213; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v212214; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]12215; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v112216; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]12217; GFX9-DPP-NEXT: s_cbranch_execnz .LBB17_212218; GFX9-DPP-NEXT: .LBB17_3:12219; GFX9-DPP-NEXT: s_endpgm12220;12221; GFX1064-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12222; GFX1064-DPP: ; %bb.0:12223; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD012224; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD112225; GFX1064-DPP-NEXT: s_mov_b32 s38, -112226; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e1600012227; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s1112228; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12229; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 012230; GFX1064-DPP-NEXT: s_mov_b32 s12, s812231; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 4412232; GFX1064-DPP-NEXT: s_mov_b32 s13, s912233; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 012234; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]12235; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412236; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212237; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v212238; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x012239; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v112240; GFX1064-DPP-NEXT: s_mov_b32 s14, s1012241; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12242; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12243; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12244; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v212245; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]12246; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]12247; GFX1064-DPP-NEXT: s_mov_b32 s32, 012248; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)12249; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12250; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -112251; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 112252; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 012253; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]12254; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]12255; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf12256; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12257; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]12258; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 112259; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 012260; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf12261; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12262; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12263; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 112264; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 012265; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf12266; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12267; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12268; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 112269; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 012270; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf12271; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12272; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12273; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 012274; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012275; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12276; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 012277; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 012278; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 3212279; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 3212280; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]12281; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]12282; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012283; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 012284; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v012285; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v312286; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v412287; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v712288; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12289; GFX1064-DPP-NEXT: s_cbranch_execz .LBB17_312290; GFX1064-DPP-NEXT: ; %bb.1:12291; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2412292; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 012293; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)12294; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]12295; GFX1064-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12296; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=112297; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)12298; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]12299; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc12300; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)12301; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]12302; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v812303; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v712304; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12305; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]12306; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB17_212307; GFX1064-DPP-NEXT: .LBB17_3:12308; GFX1064-DPP-NEXT: s_endpgm12309;12310; GFX1032-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12311; GFX1032-DPP: ; %bb.0:12312; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD012313; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD112314; GFX1032-DPP-NEXT: s_mov_b32 s38, -112315; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c1600012316; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s1112317; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12318; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 012319; GFX1032-DPP-NEXT: s_mov_b32 s12, s812320; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 4412321; GFX1032-DPP-NEXT: s_mov_b32 s13, s912322; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 012323; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]12324; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412325; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212326; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v212327; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x012328; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v112329; GFX1032-DPP-NEXT: s_mov_b32 s14, s1012330; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12331; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12332; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12333; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v212334; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]12335; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]12336; GFX1032-DPP-NEXT: s_mov_b32 s32, 012337; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12338; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12339; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -112340; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 112341; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 012342; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s012343; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s012344; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf12345; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12346; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]12347; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 112348; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 012349; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf12350; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12351; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12352; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 112353; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 012354; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf12355; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12356; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12357; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 112358; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 012359; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf12360; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12361; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12362; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 012363; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012364; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12365; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s012366; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 012367; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v312368; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 012369; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v412370; GFX1032-DPP-NEXT: s_mov_b32 s2, 012371; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v712372; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo12373; GFX1032-DPP-NEXT: s_cbranch_execz .LBB17_312374; GFX1032-DPP-NEXT: ; %bb.1:12375; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2412376; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12377; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]12378; GFX1032-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12379; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=112380; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)12381; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], -v[0:1]12382; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc12383; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)12384; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]12385; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v812386; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v712387; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s212388; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s212389; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB17_212390; GFX1032-DPP-NEXT: .LBB17_3:12391; GFX1032-DPP-NEXT: s_endpgm12392;12393; GFX1164-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12394; GFX1164-DPP: ; %bb.0:12395; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12396; GFX1164-DPP-NEXT: s_mov_b32 s12, s812397; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 4412398; GFX1164-DPP-NEXT: s_mov_b32 s13, s912399; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 012400; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]12401; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412402; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212403; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v012404; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x012405; GFX1164-DPP-NEXT: s_mov_b32 s14, s1012406; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12407; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12408; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12409; GFX1164-DPP-NEXT: s_mov_b32 s32, 012410; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)12411; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12412; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -112413; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 112414; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 012415; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]12416; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]12417; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12418; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12419; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf12420; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12421; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]12422; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 112423; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 012424; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12425; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12426; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf12427; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12428; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 112429; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 012430; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12431; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12432; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf12433; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12434; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12435; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 112436; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 012437; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12438; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12439; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf12440; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12441; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)12442; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012443; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 012444; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12445; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12446; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v312447; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12448; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v212449; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12450; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]12451; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)12452; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012453; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 012454; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec12455; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)12456; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v012457; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)12458; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v212459; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v312460; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v612461; GFX1164-DPP-NEXT: s_cbranch_execz .LBB17_312462; GFX1164-DPP-NEXT: ; %bb.1:12463; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2412464; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 012465; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)12466; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]12467; GFX1164-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12468; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=112469; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)12470; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]12471; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc12472; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)12473; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]12474; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v712475; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v612476; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12477; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12478; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]12479; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB17_212480; GFX1164-DPP-NEXT: .LBB17_3:12481; GFX1164-DPP-NEXT: s_endpgm12482;12483; GFX1132-DPP-LABEL: global_atomic_fsub_double_uni_address_div_value_default_scope_strictfp:12484; GFX1132-DPP: ; %bb.0:12485; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12486; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v012487; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 4412488; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 012489; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]12490; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412491; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212492; GFX1132-DPP-NEXT: s_mov_b32 s12, s1312493; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x012494; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12495; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12496; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12497; GFX1132-DPP-NEXT: s_mov_b32 s13, s1412498; GFX1132-DPP-NEXT: s_mov_b32 s14, s1512499; GFX1132-DPP-NEXT: s_mov_b32 s32, 012500; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)12501; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12502; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -112503; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 112504; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 012505; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s012506; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s012507; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12508; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12509; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf12510; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12511; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]12512; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 112513; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 012514; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12515; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12516; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf12517; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12518; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 112519; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 012520; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12521; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12522; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf12523; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12524; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12525; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 112526; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 012527; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12528; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12529; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf12530; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12531; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)12532; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012533; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 012534; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12535; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12536; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s012537; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v212538; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 012539; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)12540; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v312541; GFX1132-DPP-NEXT: s_mov_b32 s2, 012542; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo12543; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v612544; GFX1132-DPP-NEXT: s_cbranch_execz .LBB17_312545; GFX1132-DPP-NEXT: ; %bb.1:12546; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2412547; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)12548; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]12549; GFX1132-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12550; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=112551; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)12552; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], -v[0:1]12553; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc12554; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)12555; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]12556; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v612557; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s212558; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12559; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s212560; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB17_212561; GFX1132-DPP-NEXT: .LBB17_3:12562; GFX1132-DPP-NEXT: s_endpgm12563 %divValue = call double @div.float.value() strictfp12564 %result = atomicrmw fsub ptr addrspace(1) %ptr, double %divValue monotonic, align 812565 ret void12566}12567 12568attributes #0 = { "denormal-fp-math-f32"="preserve-sign,preserve-sign" }12569attributes #1 = { strictfp "denormal-fp-math-f32"="preserve-sign,preserve-sign" }12570attributes #2 = { strictfp }12571 12572