12939 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_fadd_uni_address_uni_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {19; GFX7LESS-LABEL: global_atomic_fadd_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_add_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_fadd_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_add_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_fadd_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_add_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_fadd_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_add_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_fadd_uni_address_uni_value_agent_scope_unsafe:151; GFX1164: ; %bb.0:152; GFX1164-NEXT: s_mov_b64 s[0:1], exec153; GFX1164-NEXT: s_mov_b64 s[2:3], exec154; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 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, s1, v0157; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v0158; GFX1164-NEXT: s_cbranch_execz .LBB0_2159; GFX1164-NEXT: ; %bb.1:160; GFX1164-NEXT: s_load_b64 s[2:3], s[4:5], 0x24161; GFX1164-NEXT: s_bcnt1_i32_b64 s0, s[0:1]162; GFX1164-NEXT: v_mov_b32_e32 v1, 0163; GFX1164-NEXT: v_cvt_f32_ubyte0_e32 v0, s0164; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)165; GFX1164-NEXT: v_mul_f32_e32 v0, 4.0, v0166; GFX1164-NEXT: s_waitcnt lgkmcnt(0)167; GFX1164-NEXT: global_atomic_add_f32 v1, v0, s[2:3]168; GFX1164-NEXT: .LBB0_2:169; GFX1164-NEXT: s_endpgm170;171; GFX1132-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:172; GFX1132: ; %bb.0:173; GFX1132-NEXT: s_mov_b32 s0, exec_lo174; GFX1132-NEXT: s_mov_b32 s1, exec_lo175; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 0176; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)177; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v0178; GFX1132-NEXT: s_cbranch_execz .LBB0_2179; GFX1132-NEXT: ; %bb.1:180; GFX1132-NEXT: s_load_b64 s[2:3], s[4:5], 0x24181; GFX1132-NEXT: s_bcnt1_i32_b32 s0, s0182; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)183; GFX1132-NEXT: v_cvt_f32_ubyte0_e32 v0, s0184; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v0185; GFX1132-NEXT: s_waitcnt lgkmcnt(0)186; GFX1132-NEXT: global_atomic_add_f32 v1, v0, s[2:3]187; GFX1132-NEXT: .LBB0_2:188; GFX1132-NEXT: s_endpgm189;190; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:191; GFX7LESS-DPP: ; %bb.0:192; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec193; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 0194; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v0195; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0196; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc197; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB0_3198; GFX7LESS-DPP-NEXT: ; %bb.1:199; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x9200; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]201; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)202; GFX7LESS-DPP-NEXT: s_load_dword s6, s[0:1], 0x0203; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 0204; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf000205; GFX7LESS-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s2206; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0207; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)208; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s6209; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -1210; GFX7LESS-DPP-NEXT: .LBB0_2: ; %atomicrmw.start211; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=1212; GFX7LESS-DPP-NEXT: v_add_f32_e32 v0, v1, v2213; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)214; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v1215; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v0216; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc217; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)218; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v1219; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]220; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v3221; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]222; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB0_2223; GFX7LESS-DPP-NEXT: .LBB0_3:224; GFX7LESS-DPP-NEXT: s_endpgm225;226; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:227; GFX9-DPP: ; %bb.0:228; GFX9-DPP-NEXT: s_mov_b64 s[2:3], exec229; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0230; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0231; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0232; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc233; GFX9-DPP-NEXT: s_cbranch_execz .LBB0_3234; GFX9-DPP-NEXT: ; %bb.1:235; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24236; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s5, s[2:3]237; GFX9-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s5238; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 0239; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0240; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)241; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x0242; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 0243; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)244; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s4245; GFX9-DPP-NEXT: .LBB0_2: ; %atomicrmw.start246; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=1247; GFX9-DPP-NEXT: v_add_f32_e32 v0, v1, v2248; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc249; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)250; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1251; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]252; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v0253; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]254; GFX9-DPP-NEXT: s_cbranch_execnz .LBB0_2255; GFX9-DPP-NEXT: .LBB0_3:256; GFX9-DPP-NEXT: s_endpgm257;258; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:259; GFX1064-DPP: ; %bb.0:260; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], exec261; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 0262; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v0263; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0264; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc265; GFX1064-DPP-NEXT: s_cbranch_execz .LBB0_3266; GFX1064-DPP-NEXT: ; %bb.1:267; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24268; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]269; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 0270; GFX1064-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s2271; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 0272; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0273; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)274; GFX1064-DPP-NEXT: s_load_dword s4, s[0:1], 0x0275; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)276; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s4277; GFX1064-DPP-NEXT: .LBB0_2: ; %atomicrmw.start278; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=1279; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v2280; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc281; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)282; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1283; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v0284; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]285; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]286; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB0_2287; GFX1064-DPP-NEXT: .LBB0_3:288; GFX1064-DPP-NEXT: s_endpgm289;290; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:291; GFX1032-DPP: ; %bb.0:292; GFX1032-DPP-NEXT: s_mov_b32 s3, exec_lo293; GFX1032-DPP-NEXT: s_mov_b32 s2, 0294; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 0295; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0296; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo297; GFX1032-DPP-NEXT: s_cbranch_execz .LBB0_3298; GFX1032-DPP-NEXT: ; %bb.1:299; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24300; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s3, s3301; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 0302; GFX1032-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s3303; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v0304; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)305; GFX1032-DPP-NEXT: s_load_dword s4, s[0:1], 0x0306; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)307; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s4308; GFX1032-DPP-NEXT: .LBB0_2: ; %atomicrmw.start309; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=1310; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v2311; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc312; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)313; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1314; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v0315; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s2316; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s2317; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB0_2318; GFX1032-DPP-NEXT: .LBB0_3:319; GFX1032-DPP-NEXT: s_endpgm320;321; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:322; GFX1164-DPP: ; %bb.0:323; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec324; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], exec325; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 0326; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)327; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v0328; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v0329; GFX1164-DPP-NEXT: s_cbranch_execz .LBB0_2330; GFX1164-DPP-NEXT: ; %bb.1:331; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[4:5], 0x24332; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]333; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, 0334; GFX1164-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s0335; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)336; GFX1164-DPP-NEXT: v_mul_f32_e32 v0, 4.0, v0337; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)338; GFX1164-DPP-NEXT: global_atomic_add_f32 v1, v0, s[2:3]339; GFX1164-DPP-NEXT: .LBB0_2:340; GFX1164-DPP-NEXT: s_endpgm341;342; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_unsafe:343; GFX1132-DPP: ; %bb.0:344; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo345; GFX1132-DPP-NEXT: s_mov_b32 s1, exec_lo346; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 0347; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)348; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v0349; GFX1132-DPP-NEXT: s_cbranch_execz .LBB0_2350; GFX1132-DPP-NEXT: ; %bb.1:351; GFX1132-DPP-NEXT: s_load_b64 s[2:3], s[4:5], 0x24352; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, s0353; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)354; GFX1132-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s0355; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v0356; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)357; GFX1132-DPP-NEXT: global_atomic_add_f32 v1, v0, s[2:3]358; GFX1132-DPP-NEXT: .LBB0_2:359; GFX1132-DPP-NEXT: s_endpgm360 %result = atomicrmw fadd ptr addrspace(1) %ptr, float 4.0 syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !1361 ret void362}363 364define amdgpu_kernel void @global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe(ptr addrspace(1) %ptr) #0 {365; GFX7LESS-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:366; GFX7LESS: ; %bb.0:367; GFX7LESS-NEXT: s_mov_b32 s32, 0368; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0369; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1370; GFX7LESS-NEXT: s_mov_b32 s38, -1371; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f000372; GFX7LESS-NEXT: s_add_u32 s36, s36, s11373; GFX7LESS-NEXT: s_addc_u32 s37, s37, 0374; GFX7LESS-NEXT: s_mov_b32 s14, s10375; GFX7LESS-NEXT: s_mov_b32 s13, s9376; GFX7LESS-NEXT: s_mov_b32 s12, s8377; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]378; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]379; GFX7LESS-NEXT: s_add_u32 s8, s34, 44380; GFX7LESS-NEXT: s_addc_u32 s9, s35, 0381; GFX7LESS-NEXT: s_getpc_b64 s[4:5]382; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4383; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12384; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0385; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v2386; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v1387; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v1388; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v2389; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]390; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]391; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]392; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]393; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)394; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]395; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec396; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 1397; GFX7LESS-NEXT: .LBB1_1: ; %ComputeLoop398; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=1399; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]400; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s2401; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s2402; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]403; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 0404; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]405; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v2406; GFX7LESS-NEXT: s_cbranch_vccnz .LBB1_1407; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd408; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 0409; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v0410; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0411; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc412; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]413; GFX7LESS-NEXT: s_cbranch_execz .LBB1_5414; GFX7LESS-NEXT: ; %bb.3:415; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x9416; GFX7LESS-NEXT: s_mov_b32 s3, 0xf000417; GFX7LESS-NEXT: s_mov_b32 s2, -1418; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)419; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 0420; GFX7LESS-NEXT: s_mov_b64 s[4:5], 0421; GFX7LESS-NEXT: .LBB1_4: ; %atomicrmw.start422; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=1423; GFX7LESS-NEXT: s_waitcnt vmcnt(0)424; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v2425; GFX7LESS-NEXT: s_waitcnt expcnt(0)426; GFX7LESS-NEXT: v_mov_b32_e32 v4, v1427; GFX7LESS-NEXT: v_mov_b32_e32 v3, v0428; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc429; GFX7LESS-NEXT: s_waitcnt vmcnt(0)430; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v1431; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]432; GFX7LESS-NEXT: v_mov_b32_e32 v1, v3433; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]434; GFX7LESS-NEXT: s_cbranch_execnz .LBB1_4435; GFX7LESS-NEXT: .LBB1_5:436; GFX7LESS-NEXT: s_endpgm437;438; GFX9-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:439; GFX9: ; %bb.0:440; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0441; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1442; GFX9-NEXT: s_mov_b32 s38, -1443; GFX9-NEXT: s_mov_b32 s39, 0xe00000444; GFX9-NEXT: s_add_u32 s36, s36, s11445; GFX9-NEXT: s_addc_u32 s37, s37, 0446; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]447; GFX9-NEXT: s_mov_b32 s12, s8448; GFX9-NEXT: s_add_u32 s8, s34, 44449; GFX9-NEXT: s_mov_b32 s13, s9450; GFX9-NEXT: s_addc_u32 s9, s35, 0451; GFX9-NEXT: s_getpc_b64 s[4:5]452; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4453; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12454; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0455; GFX9-NEXT: s_mov_b32 s14, s10456; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]457; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v2458; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v1459; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]460; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]461; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]462; GFX9-NEXT: v_or3_b32 v31, v0, v1, v2463; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]464; GFX9-NEXT: s_mov_b32 s32, 0465; GFX9-NEXT: s_waitcnt lgkmcnt(0)466; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]467; GFX9-NEXT: s_mov_b64 s[0:1], exec468; GFX9-NEXT: v_bfrev_b32_e32 v2, 1469; GFX9-NEXT: .LBB1_1: ; %ComputeLoop470; GFX9-NEXT: ; =>This Inner Loop Header: Depth=1471; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]472; GFX9-NEXT: v_readlane_b32 s4, v0, s2473; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s2474; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]475; GFX9-NEXT: v_add_f32_e32 v2, s4, v2476; GFX9-NEXT: s_cbranch_scc1 .LBB1_1477; GFX9-NEXT: ; %bb.2: ; %ComputeEnd478; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0479; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0480; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0481; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc482; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]483; GFX9-NEXT: s_cbranch_execz .LBB1_5484; GFX9-NEXT: ; %bb.3:485; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24486; GFX9-NEXT: v_mov_b32_e32 v3, 0487; GFX9-NEXT: s_mov_b64 s[2:3], 0488; GFX9-NEXT: s_waitcnt lgkmcnt(0)489; GFX9-NEXT: global_load_dword v1, v3, s[0:1]490; GFX9-NEXT: .LBB1_4: ; %atomicrmw.start491; GFX9-NEXT: ; =>This Inner Loop Header: Depth=1492; GFX9-NEXT: s_waitcnt vmcnt(0)493; GFX9-NEXT: v_add_f32_e32 v0, v1, v2494; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc495; GFX9-NEXT: s_waitcnt vmcnt(0)496; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1497; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]498; GFX9-NEXT: v_mov_b32_e32 v1, v0499; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]500; GFX9-NEXT: s_cbranch_execnz .LBB1_4501; GFX9-NEXT: .LBB1_5:502; GFX9-NEXT: s_endpgm503;504; GFX1064-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:505; GFX1064: ; %bb.0:506; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0507; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1508; GFX1064-NEXT: s_mov_b32 s38, -1509; GFX1064-NEXT: s_mov_b32 s39, 0x31e16000510; GFX1064-NEXT: s_add_u32 s36, s36, s11511; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]512; GFX1064-NEXT: s_addc_u32 s37, s37, 0513; GFX1064-NEXT: s_mov_b32 s12, s8514; GFX1064-NEXT: s_add_u32 s8, s34, 44515; GFX1064-NEXT: s_mov_b32 s13, s9516; GFX1064-NEXT: s_addc_u32 s9, s35, 0517; GFX1064-NEXT: s_getpc_b64 s[4:5]518; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4519; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12520; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v2521; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0522; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v1523; GFX1064-NEXT: s_mov_b32 s14, s10524; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]525; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]526; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]527; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v2528; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]529; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]530; GFX1064-NEXT: s_mov_b32 s32, 0531; GFX1064-NEXT: s_waitcnt lgkmcnt(0)532; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]533; GFX1064-NEXT: v_bfrev_b32_e32 v2, 1534; GFX1064-NEXT: s_mov_b64 s[0:1], exec535; GFX1064-NEXT: .LBB1_1: ; %ComputeLoop536; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=1537; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]538; GFX1064-NEXT: v_readlane_b32 s3, v0, s2539; GFX1064-NEXT: v_add_f32_e32 v2, s3, v2540; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s2541; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]542; GFX1064-NEXT: s_cbranch_scc1 .LBB1_1543; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd544; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0545; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0546; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0547; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc548; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]549; GFX1064-NEXT: s_cbranch_execz .LBB1_5550; GFX1064-NEXT: ; %bb.3:551; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24552; GFX1064-NEXT: v_mov_b32_e32 v3, 0553; GFX1064-NEXT: s_mov_b64 s[2:3], 0554; GFX1064-NEXT: s_waitcnt lgkmcnt(0)555; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]556; GFX1064-NEXT: .LBB1_4: ; %atomicrmw.start557; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=1558; GFX1064-NEXT: s_waitcnt vmcnt(0)559; GFX1064-NEXT: v_add_f32_e32 v0, v1, v2560; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc561; GFX1064-NEXT: s_waitcnt vmcnt(0)562; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1563; GFX1064-NEXT: v_mov_b32_e32 v1, v0564; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]565; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]566; GFX1064-NEXT: s_cbranch_execnz .LBB1_4567; GFX1064-NEXT: .LBB1_5:568; GFX1064-NEXT: s_endpgm569;570; GFX1032-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:571; GFX1032: ; %bb.0:572; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0573; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1574; GFX1032-NEXT: s_mov_b32 s38, -1575; GFX1032-NEXT: s_mov_b32 s39, 0x31c16000576; GFX1032-NEXT: s_add_u32 s36, s36, s11577; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]578; GFX1032-NEXT: s_addc_u32 s37, s37, 0579; GFX1032-NEXT: s_mov_b32 s12, s8580; GFX1032-NEXT: s_add_u32 s8, s34, 44581; GFX1032-NEXT: s_mov_b32 s13, s9582; GFX1032-NEXT: s_addc_u32 s9, s35, 0583; GFX1032-NEXT: s_getpc_b64 s[4:5]584; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4585; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12586; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v2587; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0588; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v1589; GFX1032-NEXT: s_mov_b32 s14, s10590; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]591; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]592; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]593; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v2594; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]595; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]596; GFX1032-NEXT: s_mov_b32 s32, 0597; GFX1032-NEXT: s_waitcnt lgkmcnt(0)598; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]599; GFX1032-NEXT: v_bfrev_b32_e32 v2, 1600; GFX1032-NEXT: s_mov_b32 s0, exec_lo601; GFX1032-NEXT: .LBB1_1: ; %ComputeLoop602; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=1603; GFX1032-NEXT: s_ff1_i32_b32 s1, s0604; GFX1032-NEXT: v_readlane_b32 s2, v0, s1605; GFX1032-NEXT: s_lshl_b32 s1, 1, s1606; GFX1032-NEXT: s_andn2_b32 s0, s0, s1607; GFX1032-NEXT: v_add_f32_e32 v2, s2, v2608; GFX1032-NEXT: s_cbranch_scc1 .LBB1_1609; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd610; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0611; GFX1032-NEXT: s_mov_b32 s2, 0612; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0613; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo614; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s0615; GFX1032-NEXT: s_cbranch_execz .LBB1_5616; GFX1032-NEXT: ; %bb.3:617; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24618; GFX1032-NEXT: v_mov_b32_e32 v3, 0619; GFX1032-NEXT: s_waitcnt lgkmcnt(0)620; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]621; GFX1032-NEXT: .LBB1_4: ; %atomicrmw.start622; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=1623; GFX1032-NEXT: s_waitcnt vmcnt(0)624; GFX1032-NEXT: v_add_f32_e32 v0, v1, v2625; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc626; GFX1032-NEXT: s_waitcnt vmcnt(0)627; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v1628; GFX1032-NEXT: v_mov_b32_e32 v1, v0629; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s2630; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s2631; GFX1032-NEXT: s_cbranch_execnz .LBB1_4632; GFX1032-NEXT: .LBB1_5:633; GFX1032-NEXT: s_endpgm634;635; GFX1164-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:636; GFX1164: ; %bb.0:637; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]638; GFX1164-NEXT: s_mov_b32 s12, s8639; GFX1164-NEXT: s_add_u32 s8, s34, 44640; GFX1164-NEXT: s_mov_b32 s13, s9641; GFX1164-NEXT: s_addc_u32 s9, s35, 0642; GFX1164-NEXT: s_getpc_b64 s[4:5]643; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4644; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12645; GFX1164-NEXT: v_mov_b32_e32 v31, v0646; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x0647; GFX1164-NEXT: s_mov_b32 s14, s10648; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]649; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]650; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]651; GFX1164-NEXT: s_mov_b32 s32, 0652; GFX1164-NEXT: s_waitcnt lgkmcnt(0)653; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]654; GFX1164-NEXT: v_bfrev_b32_e32 v1, 1655; GFX1164-NEXT: s_mov_b64 s[0:1], exec656; GFX1164-NEXT: .LBB1_1: ; %ComputeLoop657; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=1658; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)659; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]660; GFX1164-NEXT: v_readlane_b32 s3, v0, s2661; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)662; GFX1164-NEXT: v_add_f32_e32 v1, s3, v1663; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s2664; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]665; GFX1164-NEXT: s_cbranch_scc1 .LBB1_1666; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd667; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0668; GFX1164-NEXT: s_mov_b64 s[0:1], exec669; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)670; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0671; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v0672; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]673; GFX1164-NEXT: s_cbranch_execz .LBB1_4674; GFX1164-NEXT: ; %bb.3:675; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x24676; GFX1164-NEXT: v_mov_b32_e32 v0, 0677; GFX1164-NEXT: s_waitcnt lgkmcnt(0)678; GFX1164-NEXT: global_atomic_add_f32 v0, v1, s[0:1]679; GFX1164-NEXT: .LBB1_4:680; GFX1164-NEXT: s_endpgm681;682; GFX1132-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:683; GFX1132: ; %bb.0:684; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]685; GFX1132-NEXT: v_mov_b32_e32 v31, v0686; GFX1132-NEXT: s_add_u32 s8, s34, 44687; GFX1132-NEXT: s_addc_u32 s9, s35, 0688; GFX1132-NEXT: s_getpc_b64 s[4:5]689; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4690; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12691; GFX1132-NEXT: s_mov_b32 s12, s13692; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x0693; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]694; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]695; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]696; GFX1132-NEXT: s_mov_b32 s13, s14697; GFX1132-NEXT: s_mov_b32 s14, s15698; GFX1132-NEXT: s_mov_b32 s32, 0699; GFX1132-NEXT: s_waitcnt lgkmcnt(0)700; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]701; GFX1132-NEXT: v_bfrev_b32_e32 v1, 1702; GFX1132-NEXT: s_mov_b32 s0, exec_lo703; GFX1132-NEXT: .LBB1_1: ; %ComputeLoop704; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=1705; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)706; GFX1132-NEXT: s_ctz_i32_b32 s1, s0707; GFX1132-NEXT: v_readlane_b32 s2, v0, s1708; GFX1132-NEXT: s_lshl_b32 s1, 1, s1709; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)710; GFX1132-NEXT: s_and_not1_b32 s0, s0, s1711; GFX1132-NEXT: v_add_f32_e32 v1, s2, v1712; GFX1132-NEXT: s_cbranch_scc1 .LBB1_1713; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd714; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0715; GFX1132-NEXT: s_mov_b32 s0, exec_lo716; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)717; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v0718; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s0719; GFX1132-NEXT: s_cbranch_execz .LBB1_4720; GFX1132-NEXT: ; %bb.3:721; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x24722; GFX1132-NEXT: v_mov_b32_e32 v0, 0723; GFX1132-NEXT: s_waitcnt lgkmcnt(0)724; GFX1132-NEXT: global_atomic_add_f32 v0, v1, s[0:1]725; GFX1132-NEXT: .LBB1_4:726; GFX1132-NEXT: s_endpgm727;728; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:729; GFX7LESS-DPP: ; %bb.0:730; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 0731; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD0732; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD1733; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -1734; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f000735; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s11736; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 0737; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s10738; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s9739; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s8740; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]741; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x9742; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf000743; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -1744; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 44745; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 0746; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]747; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4748; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12749; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0750; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2751; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1752; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v1753; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v2754; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]755; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]756; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]757; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]758; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)759; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]760; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 0761; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 0762; GFX7LESS-DPP-NEXT: .LBB1_1: ; %atomicrmw.start763; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=1764; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)765; GFX7LESS-DPP-NEXT: v_add_f32_e32 v1, v2, v0766; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)767; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v2768; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v1769; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc770; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)771; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v2772; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]773; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v3774; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]775; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB1_1776; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end777; GFX7LESS-DPP-NEXT: s_endpgm778;779; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:780; GFX9-DPP: ; %bb.0:781; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0782; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1783; GFX9-DPP-NEXT: s_mov_b32 s38, -1784; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe00000785; GFX9-DPP-NEXT: s_add_u32 s36, s36, s11786; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 0787; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]788; GFX9-DPP-NEXT: s_mov_b32 s12, s8789; GFX9-DPP-NEXT: s_add_u32 s8, s34, 44790; GFX9-DPP-NEXT: s_mov_b32 s13, s9791; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 0792; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]793; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4794; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12795; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0796; GFX9-DPP-NEXT: s_mov_b32 s14, s10797; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]798; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2799; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1800; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]801; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]802; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]803; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v2804; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]805; GFX9-DPP-NEXT: s_mov_b32 s32, 0806; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)807; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]808; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 0809; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v1810; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -1811; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 1812; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]813; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1814; GFX9-DPP-NEXT: s_nop 1815; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf816; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5817; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1818; GFX9-DPP-NEXT: s_nop 1819; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf820; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5821; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1822; GFX9-DPP-NEXT: s_nop 1823; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf824; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5825; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1826; GFX9-DPP-NEXT: s_nop 1827; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf828; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5829; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 1830; GFX9-DPP-NEXT: s_nop 1831; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf832; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v5833; GFX9-DPP-NEXT: s_nop 1834; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf835; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v3836; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 63837; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]838; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v1839; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc840; GFX9-DPP-NEXT: s_cbranch_execz .LBB1_3841; GFX9-DPP-NEXT: ; %bb.1:842; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24843; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 0844; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 0845; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)846; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]847; GFX9-DPP-NEXT: .LBB1_2: ; %atomicrmw.start848; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=1849; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)850; GFX9-DPP-NEXT: v_add_f32_e32 v0, s4, v1851; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc852; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)853; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1854; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]855; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v0856; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]857; GFX9-DPP-NEXT: s_cbranch_execnz .LBB1_2858; GFX9-DPP-NEXT: .LBB1_3:859; GFX9-DPP-NEXT: s_endpgm860;861; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:862; GFX1064-DPP: ; %bb.0:863; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0864; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1865; GFX1064-DPP-NEXT: s_mov_b32 s38, -1866; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e16000867; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s11868; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]869; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 0870; GFX1064-DPP-NEXT: s_mov_b32 s12, s8871; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 44872; GFX1064-DPP-NEXT: s_mov_b32 s13, s9873; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 0874; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]875; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4876; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12877; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2878; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0879; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1880; GFX1064-DPP-NEXT: s_mov_b32 s14, s10881; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]882; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]883; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]884; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v2885; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]886; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]887; GFX1064-DPP-NEXT: s_mov_b32 s32, 0888; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)889; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]890; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -1891; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 1892; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]893; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 1894; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf895; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v3896; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 1897; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf898; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v5899; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 1900; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf901; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v4902; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf903; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v5904; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 0905; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v4906; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 0907; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 32908; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]909; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0910; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -1911; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s3912; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]913; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v0914; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v3915; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v0916; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc917; GFX1064-DPP-NEXT: s_cbranch_execz .LBB1_3918; GFX1064-DPP-NEXT: ; %bb.1:919; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24920; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 0921; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 0922; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)923; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]924; GFX1064-DPP-NEXT: .LBB1_2: ; %atomicrmw.start925; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=1926; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)927; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v2928; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc929; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)930; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v1931; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v0932; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]933; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]934; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB1_2935; GFX1064-DPP-NEXT: .LBB1_3:936; GFX1064-DPP-NEXT: s_endpgm937;938; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:939; GFX1032-DPP: ; %bb.0:940; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD0941; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD1942; GFX1032-DPP-NEXT: s_mov_b32 s38, -1943; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c16000944; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s11945; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]946; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 0947; GFX1032-DPP-NEXT: s_mov_b32 s12, s8948; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 44949; GFX1032-DPP-NEXT: s_mov_b32 s13, s9950; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 0951; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]952; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+4953; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+12954; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v2955; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x0956; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v1957; GFX1032-DPP-NEXT: s_mov_b32 s14, s10958; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]959; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]960; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]961; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v2962; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]963; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]964; GFX1032-DPP-NEXT: s_mov_b32 s32, 0965; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)966; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]967; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -1968; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 1969; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s0970; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 1971; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf972; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v3973; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 1974; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf975; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v5976; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 1977; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf978; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v4979; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf980; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v5981; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 0982; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v4983; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s0984; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 0985; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v3986; GFX1032-DPP-NEXT: s_mov_b32 s2, 0987; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v0988; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo989; GFX1032-DPP-NEXT: s_cbranch_execz .LBB1_3990; GFX1032-DPP-NEXT: ; %bb.1:991; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x24992; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 0993; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)994; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]995; GFX1032-DPP-NEXT: .LBB1_2: ; %atomicrmw.start996; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=1997; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)998; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v2999; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc1000; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)1001; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11002; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v01003; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s21004; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s21005; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB1_21006; GFX1032-DPP-NEXT: .LBB1_3:1007; GFX1032-DPP-NEXT: s_endpgm1008;1009; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:1010; GFX1164-DPP: ; %bb.0:1011; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]1012; GFX1164-DPP-NEXT: s_mov_b32 s12, s81013; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 441014; GFX1164-DPP-NEXT: s_mov_b32 s13, s91015; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 01016; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]1017; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41018; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121019; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v01020; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x01021; GFX1164-DPP-NEXT: s_mov_b32 s14, s101022; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]1023; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]1024; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]1025; GFX1164-DPP-NEXT: s_mov_b32 s32, 01026; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1027; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]1028; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -11029; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 11030; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]1031; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 11032; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1033; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf1034; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v11035; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 11036; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1037; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf1038; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v31039; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 11040; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1041; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf1042; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v21043; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1044; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf1045; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v31046; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1047; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01048; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v21049; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1050; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v11051; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]1052; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01053; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -11054; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)1055; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v21056; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]1057; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)1058; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v01059; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v11060; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec1061; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)1062; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v41063; GFX1164-DPP-NEXT: s_cbranch_execz .LBB1_21064; GFX1164-DPP-NEXT: ; %bb.1:1065; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x241066; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 01067; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1068; GFX1164-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]1069; GFX1164-DPP-NEXT: .LBB1_2:1070; GFX1164-DPP-NEXT: s_endpgm1071;1072; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_align4_unsafe:1073; GFX1132-DPP: ; %bb.0:1074; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]1075; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v01076; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 441077; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 01078; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]1079; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41080; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121081; GFX1132-DPP-NEXT: s_mov_b32 s12, s131082; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x01083; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]1084; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]1085; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]1086; GFX1132-DPP-NEXT: s_mov_b32 s13, s141087; GFX1132-DPP-NEXT: s_mov_b32 s14, s151088; GFX1132-DPP-NEXT: s_mov_b32 s32, 01089; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1090; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]1091; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -11092; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 11093; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s01094; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 11095; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1096; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf1097; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v11098; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 11099; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1100; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf1101; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v31102; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 11103; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1104; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf1105; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v21106; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1107; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf1108; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v31109; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1110; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 01111; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v21112; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s01113; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)1114; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 01115; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v11116; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo1117; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)1118; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v41119; GFX1132-DPP-NEXT: s_cbranch_execz .LBB1_21120; GFX1132-DPP-NEXT: ; %bb.1:1121; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x241122; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 01123; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1124; GFX1132-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]1125; GFX1132-DPP-NEXT: .LBB1_2:1126; GFX1132-DPP-NEXT: s_endpgm1127 %divValue = call float @div.float.value()1128 %result = atomicrmw fadd ptr addrspace(1) %ptr, float %divValue syncscope("agent") monotonic, align 4, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !11129 ret void1130}1131 1132define amdgpu_kernel void @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {1133; GFX7LESS-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1134; GFX7LESS: ; %bb.0:1135; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01136; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11137; GFX7LESS-NEXT: s_mov_b32 s14, -11138; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0001139; GFX7LESS-NEXT: s_add_u32 s12, s12, s111140; GFX7LESS-NEXT: s_addc_u32 s13, s13, 01141; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec1142; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 01143; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v01144; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01145; GFX7LESS-NEXT: s_and_saveexec_b64 s[2:3], vcc1146; GFX7LESS-NEXT: s_cbranch_execz .LBB2_31147; GFX7LESS-NEXT: ; %bb.1:1148; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[0:1]1149; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x91150; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000001151; GFX7LESS-NEXT: v_mov_b32_e32 v0, 01152; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000001153; GFX7LESS-NEXT: s_mov_b64 s[4:5], 01154; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1155; GFX7LESS-NEXT: s_load_dword s2, s[0:1], 0x01156; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0001157; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]1158; GFX7LESS-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1159; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v01160; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1161; GFX7LESS-NEXT: v_mov_b32_e32 v1, s21162; GFX7LESS-NEXT: s_mov_b32 s2, -11163; GFX7LESS-NEXT: .LBB2_2: ; %atomicrmw.start1164; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=11165; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v21166; GFX7LESS-NEXT: s_waitcnt expcnt(0)1167; GFX7LESS-NEXT: v_mov_b32_e32 v4, v11168; GFX7LESS-NEXT: v_mov_b32_e32 v3, v01169; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc1170; GFX7LESS-NEXT: s_waitcnt vmcnt(0)1171; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v11172; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1173; GFX7LESS-NEXT: v_mov_b32_e32 v1, v31174; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]1175; GFX7LESS-NEXT: s_cbranch_execnz .LBB2_21176; GFX7LESS-NEXT: .LBB2_3:1177; GFX7LESS-NEXT: s_endpgm1178;1179; GFX9-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1180; GFX9: ; %bb.0:1181; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01182; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11183; GFX9-NEXT: s_mov_b32 s14, -11184; GFX9-NEXT: s_mov_b64 s[0:1], exec1185; GFX9-NEXT: s_mov_b32 s15, 0xe000001186; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01187; GFX9-NEXT: s_add_u32 s12, s12, s111188; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01189; GFX9-NEXT: s_addc_u32 s13, s13, 01190; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01191; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc1192; GFX9-NEXT: s_cbranch_execz .LBB2_31193; GFX9-NEXT: ; %bb.1:1194; GFX9-NEXT: v_mov_b32_e32 v0, 01195; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1196; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000001197; GFX9-NEXT: s_mov_b32 s1, 0x433000001198; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]1199; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241200; GFX9-NEXT: s_mov_b64 s[2:3], 01201; GFX9-NEXT: v_mov_b32_e32 v3, 01202; GFX9-NEXT: s_waitcnt lgkmcnt(0)1203; GFX9-NEXT: s_load_dword s4, s[0:1], 0x01204; GFX9-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1205; GFX9-NEXT: s_waitcnt lgkmcnt(0)1206; GFX9-NEXT: v_mov_b32_e32 v1, s41207; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v01208; GFX9-NEXT: .LBB2_2: ; %atomicrmw.start1209; GFX9-NEXT: ; =>This Inner Loop Header: Depth=11210; GFX9-NEXT: v_add_f32_e32 v0, v1, v21211; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1212; GFX9-NEXT: s_waitcnt vmcnt(0)1213; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11214; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1215; GFX9-NEXT: v_mov_b32_e32 v1, v01216; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]1217; GFX9-NEXT: s_cbranch_execnz .LBB2_21218; GFX9-NEXT: .LBB2_3:1219; GFX9-NEXT: s_endpgm1220;1221; GFX1064-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1222; GFX1064: ; %bb.0:1223; GFX1064-NEXT: s_mov_b64 s[0:1], exec1224; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01225; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01226; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11227; GFX1064-NEXT: s_mov_b32 s14, -11228; GFX1064-NEXT: s_mov_b32 s15, 0x31e160001229; GFX1064-NEXT: s_add_u32 s12, s12, s111230; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01231; GFX1064-NEXT: s_addc_u32 s13, s13, 01232; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01233; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc1234; GFX1064-NEXT: s_cbranch_execz .LBB2_31235; GFX1064-NEXT: ; %bb.1:1236; GFX1064-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1237; GFX1064-NEXT: s_mov_b32 s1, 0x433000001238; GFX1064-NEXT: v_mov_b32_e32 v3, 01239; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1240; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241241; GFX1064-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1242; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1243; GFX1064-NEXT: s_load_dword s2, s[0:1], 0x01244; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1245; GFX1064-NEXT: v_mov_b32_e32 v1, s21246; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v01247; GFX1064-NEXT: s_mov_b64 s[2:3], 01248; GFX1064-NEXT: .LBB2_2: ; %atomicrmw.start1249; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=11250; GFX1064-NEXT: v_add_f32_e32 v0, v1, v21251; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1252; GFX1064-NEXT: s_waitcnt vmcnt(0)1253; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11254; GFX1064-NEXT: v_mov_b32_e32 v1, v01255; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1256; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]1257; GFX1064-NEXT: s_cbranch_execnz .LBB2_21258; GFX1064-NEXT: .LBB2_3:1259; GFX1064-NEXT: s_endpgm1260;1261; GFX1032-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1262; GFX1032: ; %bb.0:1263; GFX1032-NEXT: s_mov_b32 s0, exec_lo1264; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01265; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01266; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11267; GFX1032-NEXT: s_mov_b32 s14, -11268; GFX1032-NEXT: s_mov_b32 s15, 0x31c160001269; GFX1032-NEXT: s_add_u32 s12, s12, s111270; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01271; GFX1032-NEXT: s_addc_u32 s13, s13, 01272; GFX1032-NEXT: s_mov_b32 s2, 01273; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo1274; GFX1032-NEXT: s_cbranch_execz .LBB2_31275; GFX1032-NEXT: ; %bb.1:1276; GFX1032-NEXT: s_bcnt1_i32_b32 s0, s01277; GFX1032-NEXT: s_mov_b32 s1, 0x433000001278; GFX1032-NEXT: v_mov_b32_e32 v3, 01279; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1280; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241281; GFX1032-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1282; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1283; GFX1032-NEXT: s_load_dword s3, s[0:1], 0x01284; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1285; GFX1032-NEXT: v_mov_b32_e32 v1, s31286; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v01287; GFX1032-NEXT: .LBB2_2: ; %atomicrmw.start1288; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=11289; GFX1032-NEXT: v_add_f32_e32 v0, v1, v21290; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1291; GFX1032-NEXT: s_waitcnt vmcnt(0)1292; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11293; GFX1032-NEXT: v_mov_b32_e32 v1, v01294; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s21295; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s21296; GFX1032-NEXT: s_cbranch_execnz .LBB2_21297; GFX1032-NEXT: .LBB2_3:1298; GFX1032-NEXT: s_endpgm1299;1300; GFX1164-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1301; GFX1164: ; %bb.0:1302; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec1303; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000001304; GFX1164-NEXT: v_mov_b32_e32 v1, s01305; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01306; GFX1164-NEXT: s_mov_b64 s[0:1], exec1307; GFX1164-NEXT: s_clause 0x11308; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:41309; GFX1164-NEXT: scratch_store_b32 off, v1, off1310; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off1311; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v21312; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)1313; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v21314; GFX1164-NEXT: s_cbranch_execz .LBB2_21315; GFX1164-NEXT: ; %bb.1:1316; GFX1164-NEXT: s_waitcnt vmcnt(0)1317; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1318; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x241319; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1320; GFX1164-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1321; GFX1164-NEXT: v_mov_b32_e32 v1, 01322; GFX1164-NEXT: v_mul_f32_e32 v0, 4.0, v01323; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1324; GFX1164-NEXT: global_atomic_add_f32 v1, v0, s[0:1]1325; GFX1164-NEXT: .LBB2_2:1326; GFX1164-NEXT: s_endpgm1327;1328; GFX1132-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1329; GFX1132: ; %bb.0:1330; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo1331; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1332; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s01333; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01334; GFX1132-NEXT: s_mov_b32 s0, exec_lo1335; GFX1132-NEXT: s_clause 0x11336; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:41337; GFX1132-NEXT: scratch_store_b32 off, v1, off1338; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off1339; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v21340; GFX1132-NEXT: s_cbranch_execz .LBB2_21341; GFX1132-NEXT: ; %bb.1:1342; GFX1132-NEXT: s_waitcnt vmcnt(0)1343; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1344; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x241345; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1346; GFX1132-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1347; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v01348; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1349; GFX1132-NEXT: global_atomic_add_f32 v1, v0, s[0:1]1350; GFX1132-NEXT: .LBB2_2:1351; GFX1132-NEXT: s_endpgm1352;1353; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1354; GFX7LESS-DPP: ; %bb.0:1355; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01356; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11357; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -11358; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0001359; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s111360; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 01361; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], exec1362; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 01363; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v01364; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01365; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1366; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB2_31367; GFX7LESS-DPP-NEXT: ; %bb.1:1368; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[0:1]1369; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x91370; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000001371; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 01372; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000001373; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 01374; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)1375; GFX7LESS-DPP-NEXT: s_load_dword s2, s[0:1], 0x01376; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0001377; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]1378; GFX7LESS-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1379; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01380; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)1381; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s21382; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -11383; GFX7LESS-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1384; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=11385; GFX7LESS-DPP-NEXT: v_add_f32_e32 v0, v1, v21386; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)1387; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v11388; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v01389; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc1390; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)1391; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v11392; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1393; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v31394; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]1395; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB2_21396; GFX7LESS-DPP-NEXT: .LBB2_3:1397; GFX7LESS-DPP-NEXT: s_endpgm1398;1399; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1400; GFX9-DPP: ; %bb.0:1401; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01402; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11403; GFX9-DPP-NEXT: s_mov_b32 s14, -11404; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec1405; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000001406; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01407; GFX9-DPP-NEXT: s_add_u32 s12, s12, s111408; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01409; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 01410; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01411; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1412; GFX9-DPP-NEXT: s_cbranch_execz .LBB2_31413; GFX9-DPP-NEXT: ; %bb.1:1414; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 01415; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1416; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000001417; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000001418; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]1419; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241420; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 01421; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 01422; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)1423; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x01424; GFX9-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1425; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)1426; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s41427; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01428; GFX9-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1429; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=11430; GFX9-DPP-NEXT: v_add_f32_e32 v0, v1, v21431; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1432; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)1433; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11434; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1435; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v01436; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]1437; GFX9-DPP-NEXT: s_cbranch_execnz .LBB2_21438; GFX9-DPP-NEXT: .LBB2_3:1439; GFX9-DPP-NEXT: s_endpgm1440;1441; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1442; GFX1064-DPP: ; %bb.0:1443; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec1444; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01445; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01446; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11447; GFX1064-DPP-NEXT: s_mov_b32 s14, -11448; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160001449; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s111450; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v01451; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 01452; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01453; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc1454; GFX1064-DPP-NEXT: s_cbranch_execz .LBB2_31455; GFX1064-DPP-NEXT: ; %bb.1:1456; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]1457; GFX1064-DPP-NEXT: s_mov_b32 s1, 0x433000001458; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 01459; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1460; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241461; GFX1064-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1462; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)1463; GFX1064-DPP-NEXT: s_load_dword s2, s[0:1], 0x01464; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)1465; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s21466; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01467; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 01468; GFX1064-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1469; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=11470; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v21471; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1472; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)1473; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11474; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v01475; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1476; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]1477; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB2_21478; GFX1064-DPP-NEXT: .LBB2_3:1479; GFX1064-DPP-NEXT: s_endpgm1480;1481; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1482; GFX1032-DPP: ; %bb.0:1483; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo1484; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD01485; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 01486; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD11487; GFX1032-DPP-NEXT: s_mov_b32 s14, -11488; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160001489; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s111490; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01491; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 01492; GFX1032-DPP-NEXT: s_mov_b32 s2, 01493; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo1494; GFX1032-DPP-NEXT: s_cbranch_execz .LBB2_31495; GFX1032-DPP-NEXT: ; %bb.1:1496; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s0, s01497; GFX1032-DPP-NEXT: s_mov_b32 s1, 0x433000001498; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 01499; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]1500; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x241501; GFX1032-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1502; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)1503; GFX1032-DPP-NEXT: s_load_dword s3, s[0:1], 0x01504; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)1505; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s31506; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v01507; GFX1032-DPP-NEXT: .LBB2_2: ; %atomicrmw.start1508; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=11509; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v21510; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1511; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)1512; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11513; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v01514; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s21515; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s21516; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB2_21517; GFX1032-DPP-NEXT: .LBB2_3:1518; GFX1032-DPP-NEXT: s_endpgm1519;1520; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1521; GFX1164-DPP: ; %bb.0:1522; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec1523; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000001524; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s01525; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01526; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec1527; GFX1164-DPP-NEXT: s_clause 0x11528; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:41529; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off1530; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off1531; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v21532; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)1533; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v21534; GFX1164-DPP-NEXT: s_cbranch_execz .LBB2_21535; GFX1164-DPP-NEXT: ; %bb.1:1536; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)1537; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1538; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x241539; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1540; GFX1164-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1541; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, 01542; GFX1164-DPP-NEXT: v_mul_f32_e32 v0, 4.0, v01543; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)1544; GFX1164-DPP-NEXT: global_atomic_add_f32 v1, v0, s[0:1]1545; GFX1164-DPP-NEXT: .LBB2_2:1546; GFX1164-DPP-NEXT: s_endpgm1547;1548; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp:1549; GFX1132-DPP: ; %bb.0:1550; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo1551; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1552; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s01553; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 01554; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo1555; GFX1132-DPP-NEXT: s_clause 0x11556; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:41557; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off1558; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off1559; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v21560; GFX1132-DPP-NEXT: s_cbranch_execz .LBB2_21561; GFX1132-DPP-NEXT: ; %bb.1:1562; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)1563; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]1564; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x241565; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1566; GFX1132-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]1567; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v01568; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)1569; GFX1132-DPP-NEXT: global_atomic_add_f32 v1, v0, s[0:1]1570; GFX1132-DPP-NEXT: .LBB2_2:1571; GFX1132-DPP-NEXT: s_endpgm1572 %result = atomicrmw fadd ptr addrspace(1) %ptr, float 4.0 syncscope("one-as") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !11573 ret void1574}1575 1576 1577define amdgpu_kernel void @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {1578; GFX7LESS-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1579; GFX7LESS: ; %bb.0:1580; GFX7LESS-NEXT: s_mov_b32 s32, 01581; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01582; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11583; GFX7LESS-NEXT: s_mov_b32 s38, -11584; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0001585; GFX7LESS-NEXT: s_add_u32 s36, s36, s111586; GFX7LESS-NEXT: s_addc_u32 s37, s37, 01587; GFX7LESS-NEXT: s_mov_b32 s14, s101588; GFX7LESS-NEXT: s_mov_b32 s13, s91589; GFX7LESS-NEXT: s_mov_b32 s12, s81590; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]1591; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]1592; GFX7LESS-NEXT: s_add_u32 s8, s34, 441593; GFX7LESS-NEXT: s_addc_u32 s9, s35, 01594; GFX7LESS-NEXT: s_getpc_b64 s[4:5]1595; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41596; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121597; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01598; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v21599; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v11600; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v11601; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v21602; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]1603; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]1604; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]1605; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]1606; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1607; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]1608; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec1609; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 11610; GFX7LESS-NEXT: .LBB3_1: ; %ComputeLoop1611; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=11612; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]1613; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s21614; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s21615; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]1616; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 01617; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]1618; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v21619; GFX7LESS-NEXT: s_cbranch_vccnz .LBB3_11620; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd1621; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 01622; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v01623; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01624; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc1625; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1626; GFX7LESS-NEXT: s_cbranch_execz .LBB3_51627; GFX7LESS-NEXT: ; %bb.3:1628; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x91629; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0001630; GFX7LESS-NEXT: s_mov_b32 s2, -11631; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)1632; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 01633; GFX7LESS-NEXT: s_mov_b64 s[4:5], 01634; GFX7LESS-NEXT: .LBB3_4: ; %atomicrmw.start1635; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=11636; GFX7LESS-NEXT: s_waitcnt vmcnt(0)1637; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v21638; GFX7LESS-NEXT: s_waitcnt expcnt(0)1639; GFX7LESS-NEXT: v_mov_b32_e32 v4, v11640; GFX7LESS-NEXT: v_mov_b32_e32 v3, v01641; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc1642; GFX7LESS-NEXT: s_waitcnt vmcnt(0)1643; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v11644; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1645; GFX7LESS-NEXT: v_mov_b32_e32 v1, v31646; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]1647; GFX7LESS-NEXT: s_cbranch_execnz .LBB3_41648; GFX7LESS-NEXT: .LBB3_5:1649; GFX7LESS-NEXT: s_endpgm1650;1651; GFX9-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1652; GFX9: ; %bb.0:1653; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01654; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11655; GFX9-NEXT: s_mov_b32 s38, -11656; GFX9-NEXT: s_mov_b32 s39, 0xe000001657; GFX9-NEXT: s_add_u32 s36, s36, s111658; GFX9-NEXT: s_addc_u32 s37, s37, 01659; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]1660; GFX9-NEXT: s_mov_b32 s12, s81661; GFX9-NEXT: s_add_u32 s8, s34, 441662; GFX9-NEXT: s_mov_b32 s13, s91663; GFX9-NEXT: s_addc_u32 s9, s35, 01664; GFX9-NEXT: s_getpc_b64 s[4:5]1665; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41666; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121667; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01668; GFX9-NEXT: s_mov_b32 s14, s101669; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]1670; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v21671; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v11672; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]1673; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]1674; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]1675; GFX9-NEXT: v_or3_b32 v31, v0, v1, v21676; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]1677; GFX9-NEXT: s_mov_b32 s32, 01678; GFX9-NEXT: s_waitcnt lgkmcnt(0)1679; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]1680; GFX9-NEXT: s_mov_b64 s[0:1], exec1681; GFX9-NEXT: v_bfrev_b32_e32 v2, 11682; GFX9-NEXT: .LBB3_1: ; %ComputeLoop1683; GFX9-NEXT: ; =>This Inner Loop Header: Depth=11684; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]1685; GFX9-NEXT: v_readlane_b32 s4, v0, s21686; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s21687; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]1688; GFX9-NEXT: v_add_f32_e32 v2, s4, v21689; GFX9-NEXT: s_cbranch_scc1 .LBB3_11690; GFX9-NEXT: ; %bb.2: ; %ComputeEnd1691; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01692; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01693; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01694; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc1695; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1696; GFX9-NEXT: s_cbranch_execz .LBB3_51697; GFX9-NEXT: ; %bb.3:1698; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241699; GFX9-NEXT: v_mov_b32_e32 v3, 01700; GFX9-NEXT: s_mov_b64 s[2:3], 01701; GFX9-NEXT: s_waitcnt lgkmcnt(0)1702; GFX9-NEXT: global_load_dword v1, v3, s[0:1]1703; GFX9-NEXT: .LBB3_4: ; %atomicrmw.start1704; GFX9-NEXT: ; =>This Inner Loop Header: Depth=11705; GFX9-NEXT: s_waitcnt vmcnt(0)1706; GFX9-NEXT: v_add_f32_e32 v0, v1, v21707; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1708; GFX9-NEXT: s_waitcnt vmcnt(0)1709; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11710; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1711; GFX9-NEXT: v_mov_b32_e32 v1, v01712; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]1713; GFX9-NEXT: s_cbranch_execnz .LBB3_41714; GFX9-NEXT: .LBB3_5:1715; GFX9-NEXT: s_endpgm1716;1717; GFX1064-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1718; GFX1064: ; %bb.0:1719; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01720; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11721; GFX1064-NEXT: s_mov_b32 s38, -11722; GFX1064-NEXT: s_mov_b32 s39, 0x31e160001723; GFX1064-NEXT: s_add_u32 s36, s36, s111724; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]1725; GFX1064-NEXT: s_addc_u32 s37, s37, 01726; GFX1064-NEXT: s_mov_b32 s12, s81727; GFX1064-NEXT: s_add_u32 s8, s34, 441728; GFX1064-NEXT: s_mov_b32 s13, s91729; GFX1064-NEXT: s_addc_u32 s9, s35, 01730; GFX1064-NEXT: s_getpc_b64 s[4:5]1731; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41732; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121733; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v21734; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01735; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v11736; GFX1064-NEXT: s_mov_b32 s14, s101737; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]1738; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]1739; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]1740; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v21741; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]1742; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]1743; GFX1064-NEXT: s_mov_b32 s32, 01744; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1745; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]1746; GFX1064-NEXT: v_bfrev_b32_e32 v2, 11747; GFX1064-NEXT: s_mov_b64 s[0:1], exec1748; GFX1064-NEXT: .LBB3_1: ; %ComputeLoop1749; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=11750; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]1751; GFX1064-NEXT: v_readlane_b32 s3, v0, s21752; GFX1064-NEXT: v_add_f32_e32 v2, s3, v21753; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s21754; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]1755; GFX1064-NEXT: s_cbranch_scc1 .LBB3_11756; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd1757; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01758; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01759; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v01760; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc1761; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1762; GFX1064-NEXT: s_cbranch_execz .LBB3_51763; GFX1064-NEXT: ; %bb.3:1764; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241765; GFX1064-NEXT: v_mov_b32_e32 v3, 01766; GFX1064-NEXT: s_mov_b64 s[2:3], 01767; GFX1064-NEXT: s_waitcnt lgkmcnt(0)1768; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]1769; GFX1064-NEXT: .LBB3_4: ; %atomicrmw.start1770; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=11771; GFX1064-NEXT: s_waitcnt vmcnt(0)1772; GFX1064-NEXT: v_add_f32_e32 v0, v1, v21773; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1774; GFX1064-NEXT: s_waitcnt vmcnt(0)1775; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v11776; GFX1064-NEXT: v_mov_b32_e32 v1, v01777; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]1778; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]1779; GFX1064-NEXT: s_cbranch_execnz .LBB3_41780; GFX1064-NEXT: .LBB3_5:1781; GFX1064-NEXT: s_endpgm1782;1783; GFX1032-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1784; GFX1032: ; %bb.0:1785; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01786; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11787; GFX1032-NEXT: s_mov_b32 s38, -11788; GFX1032-NEXT: s_mov_b32 s39, 0x31c160001789; GFX1032-NEXT: s_add_u32 s36, s36, s111790; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]1791; GFX1032-NEXT: s_addc_u32 s37, s37, 01792; GFX1032-NEXT: s_mov_b32 s12, s81793; GFX1032-NEXT: s_add_u32 s8, s34, 441794; GFX1032-NEXT: s_mov_b32 s13, s91795; GFX1032-NEXT: s_addc_u32 s9, s35, 01796; GFX1032-NEXT: s_getpc_b64 s[4:5]1797; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41798; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121799; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v21800; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01801; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v11802; GFX1032-NEXT: s_mov_b32 s14, s101803; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]1804; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]1805; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]1806; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v21807; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]1808; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]1809; GFX1032-NEXT: s_mov_b32 s32, 01810; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1811; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]1812; GFX1032-NEXT: v_bfrev_b32_e32 v2, 11813; GFX1032-NEXT: s_mov_b32 s0, exec_lo1814; GFX1032-NEXT: .LBB3_1: ; %ComputeLoop1815; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=11816; GFX1032-NEXT: s_ff1_i32_b32 s1, s01817; GFX1032-NEXT: v_readlane_b32 s2, v0, s11818; GFX1032-NEXT: s_lshl_b32 s1, 1, s11819; GFX1032-NEXT: s_andn2_b32 s0, s0, s11820; GFX1032-NEXT: v_add_f32_e32 v2, s2, v21821; GFX1032-NEXT: s_cbranch_scc1 .LBB3_11822; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd1823; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01824; GFX1032-NEXT: s_mov_b32 s2, 01825; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v01826; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo1827; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s01828; GFX1032-NEXT: s_cbranch_execz .LBB3_51829; GFX1032-NEXT: ; %bb.3:1830; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x241831; GFX1032-NEXT: v_mov_b32_e32 v3, 01832; GFX1032-NEXT: s_waitcnt lgkmcnt(0)1833; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]1834; GFX1032-NEXT: .LBB3_4: ; %atomicrmw.start1835; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=11836; GFX1032-NEXT: s_waitcnt vmcnt(0)1837; GFX1032-NEXT: v_add_f32_e32 v0, v1, v21838; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc1839; GFX1032-NEXT: s_waitcnt vmcnt(0)1840; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v11841; GFX1032-NEXT: v_mov_b32_e32 v1, v01842; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s21843; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s21844; GFX1032-NEXT: s_cbranch_execnz .LBB3_41845; GFX1032-NEXT: .LBB3_5:1846; GFX1032-NEXT: s_endpgm1847;1848; GFX1164-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1849; GFX1164: ; %bb.0:1850; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]1851; GFX1164-NEXT: s_mov_b32 s12, s81852; GFX1164-NEXT: s_add_u32 s8, s34, 441853; GFX1164-NEXT: s_mov_b32 s13, s91854; GFX1164-NEXT: s_addc_u32 s9, s35, 01855; GFX1164-NEXT: s_getpc_b64 s[4:5]1856; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41857; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121858; GFX1164-NEXT: v_mov_b32_e32 v31, v01859; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x01860; GFX1164-NEXT: s_mov_b32 s14, s101861; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]1862; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]1863; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]1864; GFX1164-NEXT: s_mov_b32 s32, 01865; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1866; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]1867; GFX1164-NEXT: v_bfrev_b32_e32 v1, 11868; GFX1164-NEXT: s_mov_b64 s[0:1], exec1869; GFX1164-NEXT: .LBB3_1: ; %ComputeLoop1870; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=11871; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1872; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]1873; GFX1164-NEXT: v_readlane_b32 s3, v0, s21874; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)1875; GFX1164-NEXT: v_add_f32_e32 v1, s3, v11876; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s21877; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]1878; GFX1164-NEXT: s_cbranch_scc1 .LBB3_11879; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd1880; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01881; GFX1164-NEXT: s_mov_b64 s[0:1], exec1882; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1883; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v01884; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v01885; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]1886; GFX1164-NEXT: s_cbranch_execz .LBB3_41887; GFX1164-NEXT: ; %bb.3:1888; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x241889; GFX1164-NEXT: v_mov_b32_e32 v0, 01890; GFX1164-NEXT: s_waitcnt lgkmcnt(0)1891; GFX1164-NEXT: global_atomic_add_f32 v0, v1, s[0:1]1892; GFX1164-NEXT: .LBB3_4:1893; GFX1164-NEXT: s_endpgm1894;1895; GFX1132-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1896; GFX1132: ; %bb.0:1897; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]1898; GFX1132-NEXT: v_mov_b32_e32 v31, v01899; GFX1132-NEXT: s_add_u32 s8, s34, 441900; GFX1132-NEXT: s_addc_u32 s9, s35, 01901; GFX1132-NEXT: s_getpc_b64 s[4:5]1902; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41903; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121904; GFX1132-NEXT: s_mov_b32 s12, s131905; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x01906; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]1907; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]1908; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]1909; GFX1132-NEXT: s_mov_b32 s13, s141910; GFX1132-NEXT: s_mov_b32 s14, s151911; GFX1132-NEXT: s_mov_b32 s32, 01912; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1913; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]1914; GFX1132-NEXT: v_bfrev_b32_e32 v1, 11915; GFX1132-NEXT: s_mov_b32 s0, exec_lo1916; GFX1132-NEXT: .LBB3_1: ; %ComputeLoop1917; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=11918; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)1919; GFX1132-NEXT: s_ctz_i32_b32 s1, s01920; GFX1132-NEXT: v_readlane_b32 s2, v0, s11921; GFX1132-NEXT: s_lshl_b32 s1, 1, s11922; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)1923; GFX1132-NEXT: s_and_not1_b32 s0, s0, s11924; GFX1132-NEXT: v_add_f32_e32 v1, s2, v11925; GFX1132-NEXT: s_cbranch_scc1 .LBB3_11926; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd1927; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 01928; GFX1132-NEXT: s_mov_b32 s0, exec_lo1929; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)1930; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v01931; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s01932; GFX1132-NEXT: s_cbranch_execz .LBB3_41933; GFX1132-NEXT: ; %bb.3:1934; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x241935; GFX1132-NEXT: v_mov_b32_e32 v0, 01936; GFX1132-NEXT: s_waitcnt lgkmcnt(0)1937; GFX1132-NEXT: global_atomic_add_f32 v0, v1, s[0:1]1938; GFX1132-NEXT: .LBB3_4:1939; GFX1132-NEXT: s_endpgm1940;1941; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1942; GFX7LESS-DPP: ; %bb.0:1943; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 01944; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD01945; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD11946; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -11947; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0001948; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s111949; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 01950; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s101951; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s91952; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s81953; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]1954; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x91955; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0001956; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -11957; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 441958; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 01959; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]1960; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+41961; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+121962; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x01963; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v21964; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v11965; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v11966; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v21967; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]1968; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]1969; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]1970; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]1971; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)1972; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]1973; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 01974; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 01975; GFX7LESS-DPP-NEXT: .LBB3_1: ; %atomicrmw.start1976; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=11977; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)1978; GFX7LESS-DPP-NEXT: v_add_f32_e32 v1, v2, v01979; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)1980; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v21981; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v11982; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc1983; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)1984; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v21985; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]1986; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v31987; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]1988; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB3_11989; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end1990; GFX7LESS-DPP-NEXT: s_endpgm1991;1992; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:1993; GFX9-DPP: ; %bb.0:1994; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD01995; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD11996; GFX9-DPP-NEXT: s_mov_b32 s38, -11997; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000001998; GFX9-DPP-NEXT: s_add_u32 s36, s36, s111999; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 02000; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2001; GFX9-DPP-NEXT: s_mov_b32 s12, s82002; GFX9-DPP-NEXT: s_add_u32 s8, s34, 442003; GFX9-DPP-NEXT: s_mov_b32 s13, s92004; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 02005; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]2006; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42007; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122008; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02009; GFX9-DPP-NEXT: s_mov_b32 s14, s102010; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2011; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22012; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12013; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2014; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2015; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]2016; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v22017; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]2018; GFX9-DPP-NEXT: s_mov_b32 s32, 02019; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2020; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2021; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 02022; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v12023; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12024; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 12025; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]2026; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12027; GFX9-DPP-NEXT: s_nop 12028; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf2029; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52030; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12031; GFX9-DPP-NEXT: s_nop 12032; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf2033; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52034; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12035; GFX9-DPP-NEXT: s_nop 12036; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf2037; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52038; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12039; GFX9-DPP-NEXT: s_nop 12040; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf2041; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52042; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 12043; GFX9-DPP-NEXT: s_nop 12044; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf2045; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v52046; GFX9-DPP-NEXT: s_nop 12047; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf2048; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v32049; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 632050; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]2051; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v12052; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc2053; GFX9-DPP-NEXT: s_cbranch_execz .LBB3_32054; GFX9-DPP-NEXT: ; %bb.1:2055; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242056; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 02057; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 02058; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2059; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]2060; GFX9-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2061; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=12062; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)2063; GFX9-DPP-NEXT: v_add_f32_e32 v0, s4, v12064; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc2065; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)2066; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12067; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2068; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v02069; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2070; GFX9-DPP-NEXT: s_cbranch_execnz .LBB3_22071; GFX9-DPP-NEXT: .LBB3_3:2072; GFX9-DPP-NEXT: s_endpgm2073;2074; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:2075; GFX1064-DPP: ; %bb.0:2076; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02077; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12078; GFX1064-DPP-NEXT: s_mov_b32 s38, -12079; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160002080; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s112081; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2082; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 02083; GFX1064-DPP-NEXT: s_mov_b32 s12, s82084; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 442085; GFX1064-DPP-NEXT: s_mov_b32 s13, s92086; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 02087; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]2088; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42089; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122090; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22091; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02092; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12093; GFX1064-DPP-NEXT: s_mov_b32 s14, s102094; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2095; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2096; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2097; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v22098; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]2099; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]2100; GFX1064-DPP-NEXT: s_mov_b32 s32, 02101; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2102; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2103; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12104; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 12105; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]2106; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 12107; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf2108; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v32109; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 12110; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf2111; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v52112; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 12113; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf2114; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v42115; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf2116; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v52117; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 02118; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v42119; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 02120; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 322121; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]2122; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02123; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12124; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s32125; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]2126; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02127; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v32128; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02129; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc2130; GFX1064-DPP-NEXT: s_cbranch_execz .LBB3_32131; GFX1064-DPP-NEXT: ; %bb.1:2132; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242133; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 02134; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 02135; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2136; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]2137; GFX1064-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2138; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=12139; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)2140; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v22141; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc2142; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)2143; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12144; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v02145; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2146; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2147; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB3_22148; GFX1064-DPP-NEXT: .LBB3_3:2149; GFX1064-DPP-NEXT: s_endpgm2150;2151; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:2152; GFX1032-DPP: ; %bb.0:2153; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02154; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12155; GFX1032-DPP-NEXT: s_mov_b32 s38, -12156; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160002157; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s112158; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2159; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 02160; GFX1032-DPP-NEXT: s_mov_b32 s12, s82161; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 442162; GFX1032-DPP-NEXT: s_mov_b32 s13, s92163; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 02164; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]2165; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42166; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122167; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v22168; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02169; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v12170; GFX1032-DPP-NEXT: s_mov_b32 s14, s102171; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2172; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2173; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2174; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v22175; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]2176; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]2177; GFX1032-DPP-NEXT: s_mov_b32 s32, 02178; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2179; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2180; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -12181; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 12182; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s02183; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 12184; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf2185; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v32186; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 12187; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf2188; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v52189; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 12190; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf2191; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v42192; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf2193; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v52194; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 02195; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v42196; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s02197; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02198; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v32199; GFX1032-DPP-NEXT: s_mov_b32 s2, 02200; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02201; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo2202; GFX1032-DPP-NEXT: s_cbranch_execz .LBB3_32203; GFX1032-DPP-NEXT: ; %bb.1:2204; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242205; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 02206; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2207; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]2208; GFX1032-DPP-NEXT: .LBB3_2: ; %atomicrmw.start2209; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=12210; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)2211; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v22212; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc2213; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)2214; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12215; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v02216; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s22217; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s22218; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB3_22219; GFX1032-DPP-NEXT: .LBB3_3:2220; GFX1032-DPP-NEXT: s_endpgm2221;2222; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:2223; GFX1164-DPP: ; %bb.0:2224; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2225; GFX1164-DPP-NEXT: s_mov_b32 s12, s82226; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 442227; GFX1164-DPP-NEXT: s_mov_b32 s13, s92228; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 02229; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]2230; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42231; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122232; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v02233; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x02234; GFX1164-DPP-NEXT: s_mov_b32 s14, s102235; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2236; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2237; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2238; GFX1164-DPP-NEXT: s_mov_b32 s32, 02239; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)2240; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2241; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12242; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 12243; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]2244; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 12245; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2246; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf2247; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v12248; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 12249; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2250; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf2251; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v32252; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 12253; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2254; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf2255; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v22256; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2257; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf2258; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v32259; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2260; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 02261; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v22262; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2263; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v12264; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]2265; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02266; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -12267; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)2268; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v22269; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]2270; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)2271; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v02272; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v12273; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec2274; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)2275; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v42276; GFX1164-DPP-NEXT: s_cbranch_execz .LBB3_22277; GFX1164-DPP-NEXT: ; %bb.1:2278; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x242279; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 02280; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)2281; GFX1164-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]2282; GFX1164-DPP-NEXT: .LBB3_2:2283; GFX1164-DPP-NEXT: s_endpgm2284;2285; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp:2286; GFX1132-DPP: ; %bb.0:2287; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]2288; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v02289; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 442290; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 02291; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]2292; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42293; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122294; GFX1132-DPP-NEXT: s_mov_b32 s12, s132295; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x02296; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]2297; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]2298; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]2299; GFX1132-DPP-NEXT: s_mov_b32 s13, s142300; GFX1132-DPP-NEXT: s_mov_b32 s14, s152301; GFX1132-DPP-NEXT: s_mov_b32 s32, 02302; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)2303; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]2304; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -12305; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 12306; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s02307; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 12308; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2309; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf2310; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v12311; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 12312; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2313; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf2314; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v32315; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 12316; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2317; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf2318; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v22319; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2320; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf2321; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v32322; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2323; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 02324; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v22325; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s02326; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)2327; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 02328; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v12329; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo2330; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)2331; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v42332; GFX1132-DPP-NEXT: s_cbranch_execz .LBB3_22333; GFX1132-DPP-NEXT: ; %bb.1:2334; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x242335; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 02336; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)2337; GFX1132-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]2338; GFX1132-DPP-NEXT: .LBB3_2:2339; GFX1132-DPP-NEXT: s_endpgm2340 %divValue = call float @div.float.value() strictfp2341 %result = atomicrmw fadd ptr addrspace(1) %ptr, float %divValue syncscope("one-as") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !12342 ret void2343}2344 2345define amdgpu_kernel void @global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp(ptr addrspace(1) %ptr) #2{2346; GFX7LESS-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2347; GFX7LESS: ; %bb.0:2348; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02349; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12350; GFX7LESS-NEXT: s_mov_b32 s14, -12351; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0002352; GFX7LESS-NEXT: s_add_u32 s12, s12, s112353; GFX7LESS-NEXT: s_addc_u32 s13, s13, 02354; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec2355; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 02356; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v02357; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02358; GFX7LESS-NEXT: s_and_saveexec_b64 s[2:3], vcc2359; GFX7LESS-NEXT: s_cbranch_execz .LBB4_32360; GFX7LESS-NEXT: ; %bb.1:2361; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[0:1]2362; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x92363; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000002364; GFX7LESS-NEXT: v_mov_b32_e32 v0, 02365; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000002366; GFX7LESS-NEXT: s_mov_b64 s[4:5], 02367; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)2368; GFX7LESS-NEXT: s_load_dword s2, s[0:1], 0x02369; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0002370; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]2371; GFX7LESS-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2372; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v02373; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)2374; GFX7LESS-NEXT: v_mov_b32_e32 v1, s22375; GFX7LESS-NEXT: s_mov_b32 s2, -12376; GFX7LESS-NEXT: .LBB4_2: ; %atomicrmw.start2377; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=12378; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v22379; GFX7LESS-NEXT: s_waitcnt expcnt(0)2380; GFX7LESS-NEXT: v_mov_b32_e32 v4, v12381; GFX7LESS-NEXT: v_mov_b32_e32 v3, v02382; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc2383; GFX7LESS-NEXT: s_waitcnt vmcnt(0)2384; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v12385; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2386; GFX7LESS-NEXT: v_mov_b32_e32 v1, v32387; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]2388; GFX7LESS-NEXT: s_cbranch_execnz .LBB4_22389; GFX7LESS-NEXT: .LBB4_3:2390; GFX7LESS-NEXT: s_endpgm2391;2392; GFX9-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2393; GFX9: ; %bb.0:2394; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02395; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12396; GFX9-NEXT: s_mov_b32 s14, -12397; GFX9-NEXT: s_mov_b64 s[0:1], exec2398; GFX9-NEXT: s_mov_b32 s15, 0xe000002399; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02400; GFX9-NEXT: s_add_u32 s12, s12, s112401; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02402; GFX9-NEXT: s_addc_u32 s13, s13, 02403; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02404; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc2405; GFX9-NEXT: s_cbranch_execz .LBB4_32406; GFX9-NEXT: ; %bb.1:2407; GFX9-NEXT: v_mov_b32_e32 v0, 02408; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2409; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000002410; GFX9-NEXT: s_mov_b32 s1, 0x433000002411; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]2412; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242413; GFX9-NEXT: s_mov_b64 s[2:3], 02414; GFX9-NEXT: v_mov_b32_e32 v3, 02415; GFX9-NEXT: s_waitcnt lgkmcnt(0)2416; GFX9-NEXT: s_load_dword s4, s[0:1], 0x02417; GFX9-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2418; GFX9-NEXT: s_waitcnt lgkmcnt(0)2419; GFX9-NEXT: v_mov_b32_e32 v1, s42420; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v02421; GFX9-NEXT: .LBB4_2: ; %atomicrmw.start2422; GFX9-NEXT: ; =>This Inner Loop Header: Depth=12423; GFX9-NEXT: v_add_f32_e32 v0, v1, v22424; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2425; GFX9-NEXT: s_waitcnt vmcnt(0)2426; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12427; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2428; GFX9-NEXT: v_mov_b32_e32 v1, v02429; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]2430; GFX9-NEXT: s_cbranch_execnz .LBB4_22431; GFX9-NEXT: .LBB4_3:2432; GFX9-NEXT: s_endpgm2433;2434; GFX1064-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2435; GFX1064: ; %bb.0:2436; GFX1064-NEXT: s_mov_b64 s[0:1], exec2437; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02438; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02439; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12440; GFX1064-NEXT: s_mov_b32 s14, -12441; GFX1064-NEXT: s_mov_b32 s15, 0x31e160002442; GFX1064-NEXT: s_add_u32 s12, s12, s112443; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02444; GFX1064-NEXT: s_addc_u32 s13, s13, 02445; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02446; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc2447; GFX1064-NEXT: s_cbranch_execz .LBB4_32448; GFX1064-NEXT: ; %bb.1:2449; GFX1064-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2450; GFX1064-NEXT: s_mov_b32 s1, 0x433000002451; GFX1064-NEXT: v_mov_b32_e32 v3, 02452; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2453; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242454; GFX1064-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2455; GFX1064-NEXT: s_waitcnt lgkmcnt(0)2456; GFX1064-NEXT: s_load_dword s2, s[0:1], 0x02457; GFX1064-NEXT: s_waitcnt lgkmcnt(0)2458; GFX1064-NEXT: v_mov_b32_e32 v1, s22459; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v02460; GFX1064-NEXT: s_mov_b64 s[2:3], 02461; GFX1064-NEXT: .LBB4_2: ; %atomicrmw.start2462; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=12463; GFX1064-NEXT: v_add_f32_e32 v0, v1, v22464; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2465; GFX1064-NEXT: s_waitcnt vmcnt(0)2466; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12467; GFX1064-NEXT: v_mov_b32_e32 v1, v02468; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2469; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]2470; GFX1064-NEXT: s_cbranch_execnz .LBB4_22471; GFX1064-NEXT: .LBB4_3:2472; GFX1064-NEXT: s_endpgm2473;2474; GFX1032-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2475; GFX1032: ; %bb.0:2476; GFX1032-NEXT: s_mov_b32 s0, exec_lo2477; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02478; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02479; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12480; GFX1032-NEXT: s_mov_b32 s14, -12481; GFX1032-NEXT: s_mov_b32 s15, 0x31c160002482; GFX1032-NEXT: s_add_u32 s12, s12, s112483; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02484; GFX1032-NEXT: s_addc_u32 s13, s13, 02485; GFX1032-NEXT: s_mov_b32 s2, 02486; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo2487; GFX1032-NEXT: s_cbranch_execz .LBB4_32488; GFX1032-NEXT: ; %bb.1:2489; GFX1032-NEXT: s_bcnt1_i32_b32 s0, s02490; GFX1032-NEXT: s_mov_b32 s1, 0x433000002491; GFX1032-NEXT: v_mov_b32_e32 v3, 02492; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2493; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242494; GFX1032-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2495; GFX1032-NEXT: s_waitcnt lgkmcnt(0)2496; GFX1032-NEXT: s_load_dword s3, s[0:1], 0x02497; GFX1032-NEXT: s_waitcnt lgkmcnt(0)2498; GFX1032-NEXT: v_mov_b32_e32 v1, s32499; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v02500; GFX1032-NEXT: .LBB4_2: ; %atomicrmw.start2501; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=12502; GFX1032-NEXT: v_add_f32_e32 v0, v1, v22503; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2504; GFX1032-NEXT: s_waitcnt vmcnt(0)2505; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12506; GFX1032-NEXT: v_mov_b32_e32 v1, v02507; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s22508; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s22509; GFX1032-NEXT: s_cbranch_execnz .LBB4_22510; GFX1032-NEXT: .LBB4_3:2511; GFX1032-NEXT: s_endpgm2512;2513; GFX1164-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2514; GFX1164: ; %bb.0:2515; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec2516; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000002517; GFX1164-NEXT: v_mov_b32_e32 v1, s02518; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02519; GFX1164-NEXT: s_mov_b64 s[0:1], exec2520; GFX1164-NEXT: s_clause 0x12521; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:42522; GFX1164-NEXT: scratch_store_b32 off, v1, off2523; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off2524; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v22525; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)2526; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v22527; GFX1164-NEXT: s_cbranch_execz .LBB4_32528; GFX1164-NEXT: ; %bb.1:2529; GFX1164-NEXT: s_waitcnt vmcnt(0)2530; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]2531; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x242532; GFX1164-NEXT: v_mov_b32_e32 v3, 02533; GFX1164-NEXT: s_waitcnt lgkmcnt(0)2534; GFX1164-NEXT: s_load_b32 s2, s[0:1], 0x02535; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)2536; GFX1164-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2537; GFX1164-NEXT: s_waitcnt lgkmcnt(0)2538; GFX1164-NEXT: v_mov_b32_e32 v1, s22539; GFX1164-NEXT: s_mov_b64 s[2:3], 02540; GFX1164-NEXT: v_mul_f32_e32 v2, 4.0, v02541; GFX1164-NEXT: .LBB4_2: ; %atomicrmw.start2542; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=12543; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)2544; GFX1164-NEXT: v_add_f32_e32 v0, v1, v22545; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2546; GFX1164-NEXT: s_waitcnt vmcnt(0)2547; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12548; GFX1164-NEXT: v_mov_b32_e32 v1, v02549; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2550; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2551; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]2552; GFX1164-NEXT: s_cbranch_execnz .LBB4_22553; GFX1164-NEXT: .LBB4_3:2554; GFX1164-NEXT: s_endpgm2555;2556; GFX1132-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2557; GFX1132: ; %bb.0:2558; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo2559; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2560; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s02561; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02562; GFX1132-NEXT: s_mov_b32 s2, 02563; GFX1132-NEXT: s_mov_b32 s0, exec_lo2564; GFX1132-NEXT: s_clause 0x12565; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:42566; GFX1132-NEXT: scratch_store_b32 off, v1, off2567; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off2568; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v22569; GFX1132-NEXT: s_cbranch_execz .LBB4_32570; GFX1132-NEXT: ; %bb.1:2571; GFX1132-NEXT: s_waitcnt vmcnt(0)2572; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]2573; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x242574; GFX1132-NEXT: v_mov_b32_e32 v3, 02575; GFX1132-NEXT: s_waitcnt lgkmcnt(0)2576; GFX1132-NEXT: s_load_b32 s3, s[0:1], 0x02577; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)2578; GFX1132-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2579; GFX1132-NEXT: s_waitcnt lgkmcnt(0)2580; GFX1132-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v02581; GFX1132-NEXT: .LBB4_2: ; %atomicrmw.start2582; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=12583; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)2584; GFX1132-NEXT: v_add_f32_e32 v0, v1, v22585; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2586; GFX1132-NEXT: s_waitcnt vmcnt(0)2587; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12588; GFX1132-NEXT: v_mov_b32_e32 v1, v02589; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s22590; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2591; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s22592; GFX1132-NEXT: s_cbranch_execnz .LBB4_22593; GFX1132-NEXT: .LBB4_3:2594; GFX1132-NEXT: s_endpgm2595;2596; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2597; GFX7LESS-DPP: ; %bb.0:2598; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02599; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12600; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -12601; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0002602; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s112603; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 02604; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], exec2605; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 02606; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v02607; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02608; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc2609; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB4_32610; GFX7LESS-DPP-NEXT: ; %bb.1:2611; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[0:1]2612; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x92613; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000002614; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 02615; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000002616; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 02617; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)2618; GFX7LESS-DPP-NEXT: s_load_dword s2, s[0:1], 0x02619; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0002620; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]2621; GFX7LESS-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2622; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02623; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)2624; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s22625; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -12626; GFX7LESS-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2627; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=12628; GFX7LESS-DPP-NEXT: v_add_f32_e32 v0, v1, v22629; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)2630; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v12631; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v02632; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc2633; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)2634; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v12635; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2636; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v32637; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]2638; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB4_22639; GFX7LESS-DPP-NEXT: .LBB4_3:2640; GFX7LESS-DPP-NEXT: s_endpgm2641;2642; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2643; GFX9-DPP: ; %bb.0:2644; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02645; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12646; GFX9-DPP-NEXT: s_mov_b32 s14, -12647; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec2648; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000002649; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02650; GFX9-DPP-NEXT: s_add_u32 s12, s12, s112651; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02652; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 02653; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02654; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc2655; GFX9-DPP-NEXT: s_cbranch_execz .LBB4_32656; GFX9-DPP-NEXT: ; %bb.1:2657; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 02658; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2659; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000002660; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000002661; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]2662; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242663; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 02664; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 02665; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2666; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x02667; GFX9-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2668; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)2669; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s42670; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02671; GFX9-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2672; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=12673; GFX9-DPP-NEXT: v_add_f32_e32 v0, v1, v22674; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2675; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)2676; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12677; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2678; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v02679; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2680; GFX9-DPP-NEXT: s_cbranch_execnz .LBB4_22681; GFX9-DPP-NEXT: .LBB4_3:2682; GFX9-DPP-NEXT: s_endpgm2683;2684; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2685; GFX1064-DPP: ; %bb.0:2686; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec2687; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02688; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02689; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12690; GFX1064-DPP-NEXT: s_mov_b32 s14, -12691; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160002692; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s112693; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v02694; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 02695; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02696; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc2697; GFX1064-DPP-NEXT: s_cbranch_execz .LBB4_32698; GFX1064-DPP-NEXT: ; %bb.1:2699; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]2700; GFX1064-DPP-NEXT: s_mov_b32 s1, 0x433000002701; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 02702; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2703; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242704; GFX1064-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2705; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2706; GFX1064-DPP-NEXT: s_load_dword s2, s[0:1], 0x02707; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)2708; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s22709; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02710; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 02711; GFX1064-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2712; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=12713; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v22714; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2715; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)2716; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12717; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v02718; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2719; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]2720; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB4_22721; GFX1064-DPP-NEXT: .LBB4_3:2722; GFX1064-DPP-NEXT: s_endpgm2723;2724; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2725; GFX1032-DPP: ; %bb.0:2726; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo2727; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD02728; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 02729; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD12730; GFX1032-DPP-NEXT: s_mov_b32 s14, -12731; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160002732; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s112733; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v02734; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 02735; GFX1032-DPP-NEXT: s_mov_b32 s2, 02736; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo2737; GFX1032-DPP-NEXT: s_cbranch_execz .LBB4_32738; GFX1032-DPP-NEXT: ; %bb.1:2739; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s0, s02740; GFX1032-DPP-NEXT: s_mov_b32 s1, 0x433000002741; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 02742; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]2743; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242744; GFX1032-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2745; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2746; GFX1032-DPP-NEXT: s_load_dword s3, s[0:1], 0x02747; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)2748; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s32749; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02750; GFX1032-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2751; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=12752; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v22753; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2754; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)2755; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12756; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v02757; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s22758; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s22759; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB4_22760; GFX1032-DPP-NEXT: .LBB4_3:2761; GFX1032-DPP-NEXT: s_endpgm2762;2763; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2764; GFX1164-DPP: ; %bb.0:2765; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec2766; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000002767; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s02768; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02769; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec2770; GFX1164-DPP-NEXT: s_clause 0x12771; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:42772; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off2773; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off2774; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v22775; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)2776; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v22777; GFX1164-DPP-NEXT: s_cbranch_execz .LBB4_32778; GFX1164-DPP-NEXT: ; %bb.1:2779; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)2780; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]2781; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x242782; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, 02783; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)2784; GFX1164-DPP-NEXT: s_load_b32 s2, s[0:1], 0x02785; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)2786; GFX1164-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2787; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)2788; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s22789; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 02790; GFX1164-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v02791; GFX1164-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2792; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=12793; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)2794; GFX1164-DPP-NEXT: v_add_f32_e32 v0, v1, v22795; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2796; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)2797; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12798; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v02799; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2800; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2801; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]2802; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB4_22803; GFX1164-DPP-NEXT: .LBB4_3:2804; GFX1164-DPP-NEXT: s_endpgm2805;2806; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_agent_scope_strictfp:2807; GFX1132-DPP: ; %bb.0:2808; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo2809; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2810; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s02811; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 02812; GFX1132-DPP-NEXT: s_mov_b32 s2, 02813; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo2814; GFX1132-DPP-NEXT: s_clause 0x12815; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:42816; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off2817; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off2818; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v22819; GFX1132-DPP-NEXT: s_cbranch_execz .LBB4_32820; GFX1132-DPP-NEXT: ; %bb.1:2821; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)2822; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]2823; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x242824; GFX1132-DPP-NEXT: v_mov_b32_e32 v3, 02825; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)2826; GFX1132-DPP-NEXT: s_load_b32 s3, s[0:1], 0x02827; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)2828; GFX1132-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]2829; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)2830; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v02831; GFX1132-DPP-NEXT: .LBB4_2: ; %atomicrmw.start2832; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=12833; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)2834; GFX1132-DPP-NEXT: v_add_f32_e32 v0, v1, v22835; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc2836; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)2837; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v12838; GFX1132-DPP-NEXT: v_mov_b32_e32 v1, v02839; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s22840; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)2841; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s22842; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB4_22843; GFX1132-DPP-NEXT: .LBB4_3:2844; GFX1132-DPP-NEXT: s_endpgm2845 %result = atomicrmw fadd ptr addrspace(1) %ptr, float 4.0 syncscope("agent") monotonic2846 ret void2847}2848 2849 2850define amdgpu_kernel void @global_atomic_fadd_uni_address_div_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {2851; GFX7LESS-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:2852; GFX7LESS: ; %bb.0:2853; GFX7LESS-NEXT: s_mov_b32 s32, 02854; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02855; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12856; GFX7LESS-NEXT: s_mov_b32 s38, -12857; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0002858; GFX7LESS-NEXT: s_add_u32 s36, s36, s112859; GFX7LESS-NEXT: s_addc_u32 s37, s37, 02860; GFX7LESS-NEXT: s_mov_b32 s14, s102861; GFX7LESS-NEXT: s_mov_b32 s13, s92862; GFX7LESS-NEXT: s_mov_b32 s12, s82863; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]2864; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]2865; GFX7LESS-NEXT: s_add_u32 s8, s34, 442866; GFX7LESS-NEXT: s_addc_u32 s9, s35, 02867; GFX7LESS-NEXT: s_getpc_b64 s[4:5]2868; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42869; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122870; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02871; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v22872; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v12873; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v12874; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v22875; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]2876; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]2877; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]2878; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]2879; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)2880; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]2881; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec2882; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 12883; GFX7LESS-NEXT: .LBB5_1: ; %ComputeLoop2884; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=12885; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]2886; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s22887; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s22888; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]2889; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 02890; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]2891; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v22892; GFX7LESS-NEXT: s_cbranch_vccnz .LBB5_12893; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd2894; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 02895; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v02896; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02897; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc2898; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]2899; GFX7LESS-NEXT: s_cbranch_execz .LBB5_52900; GFX7LESS-NEXT: ; %bb.3:2901; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x92902; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0002903; GFX7LESS-NEXT: s_mov_b32 s2, -12904; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)2905; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 02906; GFX7LESS-NEXT: s_mov_b64 s[4:5], 02907; GFX7LESS-NEXT: .LBB5_4: ; %atomicrmw.start2908; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=12909; GFX7LESS-NEXT: s_waitcnt vmcnt(0)2910; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v22911; GFX7LESS-NEXT: s_waitcnt expcnt(0)2912; GFX7LESS-NEXT: v_mov_b32_e32 v4, v12913; GFX7LESS-NEXT: v_mov_b32_e32 v3, v02914; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc2915; GFX7LESS-NEXT: s_waitcnt vmcnt(0)2916; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v12917; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2918; GFX7LESS-NEXT: v_mov_b32_e32 v1, v32919; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]2920; GFX7LESS-NEXT: s_cbranch_execnz .LBB5_42921; GFX7LESS-NEXT: .LBB5_5:2922; GFX7LESS-NEXT: s_endpgm2923;2924; GFX9-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:2925; GFX9: ; %bb.0:2926; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02927; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12928; GFX9-NEXT: s_mov_b32 s38, -12929; GFX9-NEXT: s_mov_b32 s39, 0xe000002930; GFX9-NEXT: s_add_u32 s36, s36, s112931; GFX9-NEXT: s_addc_u32 s37, s37, 02932; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]2933; GFX9-NEXT: s_mov_b32 s12, s82934; GFX9-NEXT: s_add_u32 s8, s34, 442935; GFX9-NEXT: s_mov_b32 s13, s92936; GFX9-NEXT: s_addc_u32 s9, s35, 02937; GFX9-NEXT: s_getpc_b64 s[4:5]2938; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+42939; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+122940; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x02941; GFX9-NEXT: s_mov_b32 s14, s102942; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]2943; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v22944; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v12945; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]2946; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]2947; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]2948; GFX9-NEXT: v_or3_b32 v31, v0, v1, v22949; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]2950; GFX9-NEXT: s_mov_b32 s32, 02951; GFX9-NEXT: s_waitcnt lgkmcnt(0)2952; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]2953; GFX9-NEXT: s_mov_b64 s[0:1], exec2954; GFX9-NEXT: v_bfrev_b32_e32 v2, 12955; GFX9-NEXT: .LBB5_1: ; %ComputeLoop2956; GFX9-NEXT: ; =>This Inner Loop Header: Depth=12957; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]2958; GFX9-NEXT: v_readlane_b32 s4, v0, s22959; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s22960; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]2961; GFX9-NEXT: v_add_f32_e32 v2, s4, v22962; GFX9-NEXT: s_cbranch_scc1 .LBB5_12963; GFX9-NEXT: ; %bb.2: ; %ComputeEnd2964; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 02965; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v02966; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v02967; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc2968; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]2969; GFX9-NEXT: s_cbranch_execz .LBB5_52970; GFX9-NEXT: ; %bb.3:2971; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x242972; GFX9-NEXT: v_mov_b32_e32 v3, 02973; GFX9-NEXT: s_mov_b64 s[2:3], 02974; GFX9-NEXT: s_waitcnt lgkmcnt(0)2975; GFX9-NEXT: global_load_dword v1, v3, s[0:1]2976; GFX9-NEXT: .LBB5_4: ; %atomicrmw.start2977; GFX9-NEXT: ; =>This Inner Loop Header: Depth=12978; GFX9-NEXT: s_waitcnt vmcnt(0)2979; GFX9-NEXT: v_add_f32_e32 v0, v1, v22980; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc2981; GFX9-NEXT: s_waitcnt vmcnt(0)2982; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v12983; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]2984; GFX9-NEXT: v_mov_b32_e32 v1, v02985; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]2986; GFX9-NEXT: s_cbranch_execnz .LBB5_42987; GFX9-NEXT: .LBB5_5:2988; GFX9-NEXT: s_endpgm2989;2990; GFX1064-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:2991; GFX1064: ; %bb.0:2992; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD02993; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD12994; GFX1064-NEXT: s_mov_b32 s38, -12995; GFX1064-NEXT: s_mov_b32 s39, 0x31e160002996; GFX1064-NEXT: s_add_u32 s36, s36, s112997; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]2998; GFX1064-NEXT: s_addc_u32 s37, s37, 02999; GFX1064-NEXT: s_mov_b32 s12, s83000; GFX1064-NEXT: s_add_u32 s8, s34, 443001; GFX1064-NEXT: s_mov_b32 s13, s93002; GFX1064-NEXT: s_addc_u32 s9, s35, 03003; GFX1064-NEXT: s_getpc_b64 s[4:5]3004; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43005; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123006; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v23007; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03008; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v13009; GFX1064-NEXT: s_mov_b32 s14, s103010; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]3011; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]3012; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]3013; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v23014; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]3015; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]3016; GFX1064-NEXT: s_mov_b32 s32, 03017; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3018; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]3019; GFX1064-NEXT: v_bfrev_b32_e32 v2, 13020; GFX1064-NEXT: s_mov_b64 s[0:1], exec3021; GFX1064-NEXT: .LBB5_1: ; %ComputeLoop3022; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=13023; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]3024; GFX1064-NEXT: v_readlane_b32 s3, v0, s23025; GFX1064-NEXT: v_add_f32_e32 v2, s3, v23026; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s23027; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3028; GFX1064-NEXT: s_cbranch_scc1 .LBB5_13029; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd3030; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03031; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03032; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03033; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc3034; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3035; GFX1064-NEXT: s_cbranch_execz .LBB5_53036; GFX1064-NEXT: ; %bb.3:3037; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243038; GFX1064-NEXT: v_mov_b32_e32 v3, 03039; GFX1064-NEXT: s_mov_b64 s[2:3], 03040; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3041; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]3042; GFX1064-NEXT: .LBB5_4: ; %atomicrmw.start3043; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=13044; GFX1064-NEXT: s_waitcnt vmcnt(0)3045; GFX1064-NEXT: v_add_f32_e32 v0, v1, v23046; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3047; GFX1064-NEXT: s_waitcnt vmcnt(0)3048; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13049; GFX1064-NEXT: v_mov_b32_e32 v1, v03050; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3051; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]3052; GFX1064-NEXT: s_cbranch_execnz .LBB5_43053; GFX1064-NEXT: .LBB5_5:3054; GFX1064-NEXT: s_endpgm3055;3056; GFX1032-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3057; GFX1032: ; %bb.0:3058; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03059; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13060; GFX1032-NEXT: s_mov_b32 s38, -13061; GFX1032-NEXT: s_mov_b32 s39, 0x31c160003062; GFX1032-NEXT: s_add_u32 s36, s36, s113063; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]3064; GFX1032-NEXT: s_addc_u32 s37, s37, 03065; GFX1032-NEXT: s_mov_b32 s12, s83066; GFX1032-NEXT: s_add_u32 s8, s34, 443067; GFX1032-NEXT: s_mov_b32 s13, s93068; GFX1032-NEXT: s_addc_u32 s9, s35, 03069; GFX1032-NEXT: s_getpc_b64 s[4:5]3070; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43071; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123072; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v23073; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03074; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v13075; GFX1032-NEXT: s_mov_b32 s14, s103076; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]3077; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]3078; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]3079; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v23080; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]3081; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]3082; GFX1032-NEXT: s_mov_b32 s32, 03083; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3084; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]3085; GFX1032-NEXT: v_bfrev_b32_e32 v2, 13086; GFX1032-NEXT: s_mov_b32 s0, exec_lo3087; GFX1032-NEXT: .LBB5_1: ; %ComputeLoop3088; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=13089; GFX1032-NEXT: s_ff1_i32_b32 s1, s03090; GFX1032-NEXT: v_readlane_b32 s2, v0, s13091; GFX1032-NEXT: s_lshl_b32 s1, 1, s13092; GFX1032-NEXT: s_andn2_b32 s0, s0, s13093; GFX1032-NEXT: v_add_f32_e32 v2, s2, v23094; GFX1032-NEXT: s_cbranch_scc1 .LBB5_13095; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd3096; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03097; GFX1032-NEXT: s_mov_b32 s2, 03098; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03099; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo3100; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s03101; GFX1032-NEXT: s_cbranch_execz .LBB5_53102; GFX1032-NEXT: ; %bb.3:3103; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243104; GFX1032-NEXT: v_mov_b32_e32 v3, 03105; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3106; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]3107; GFX1032-NEXT: .LBB5_4: ; %atomicrmw.start3108; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=13109; GFX1032-NEXT: s_waitcnt vmcnt(0)3110; GFX1032-NEXT: v_add_f32_e32 v0, v1, v23111; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3112; GFX1032-NEXT: s_waitcnt vmcnt(0)3113; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13114; GFX1032-NEXT: v_mov_b32_e32 v1, v03115; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s23116; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s23117; GFX1032-NEXT: s_cbranch_execnz .LBB5_43118; GFX1032-NEXT: .LBB5_5:3119; GFX1032-NEXT: s_endpgm3120;3121; GFX1164-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3122; GFX1164: ; %bb.0:3123; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]3124; GFX1164-NEXT: s_mov_b32 s12, s83125; GFX1164-NEXT: s_add_u32 s8, s34, 443126; GFX1164-NEXT: s_mov_b32 s13, s93127; GFX1164-NEXT: s_addc_u32 s9, s35, 03128; GFX1164-NEXT: s_getpc_b64 s[4:5]3129; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43130; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123131; GFX1164-NEXT: v_mov_b32_e32 v31, v03132; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x03133; GFX1164-NEXT: s_mov_b32 s14, s103134; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]3135; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]3136; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]3137; GFX1164-NEXT: s_mov_b32 s32, 03138; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3139; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]3140; GFX1164-NEXT: v_bfrev_b32_e32 v1, 13141; GFX1164-NEXT: s_mov_b64 s[0:1], exec3142; GFX1164-NEXT: .LBB5_1: ; %ComputeLoop3143; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=13144; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3145; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]3146; GFX1164-NEXT: v_readlane_b32 s3, v0, s23147; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)3148; GFX1164-NEXT: v_add_f32_e32 v1, s3, v13149; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s23150; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]3151; GFX1164-NEXT: s_cbranch_scc1 .LBB5_13152; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd3153; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03154; GFX1164-NEXT: s_mov_b64 s[0:1], exec3155; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3156; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03157; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v03158; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3159; GFX1164-NEXT: s_cbranch_execz .LBB5_43160; GFX1164-NEXT: ; %bb.3:3161; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x243162; GFX1164-NEXT: v_mov_b32_e32 v0, 03163; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3164; GFX1164-NEXT: global_atomic_add_f32 v0, v1, s[0:1]3165; GFX1164-NEXT: .LBB5_4:3166; GFX1164-NEXT: s_endpgm3167;3168; GFX1132-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3169; GFX1132: ; %bb.0:3170; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]3171; GFX1132-NEXT: v_mov_b32_e32 v31, v03172; GFX1132-NEXT: s_add_u32 s8, s34, 443173; GFX1132-NEXT: s_addc_u32 s9, s35, 03174; GFX1132-NEXT: s_getpc_b64 s[4:5]3175; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43176; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123177; GFX1132-NEXT: s_mov_b32 s12, s133178; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x03179; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]3180; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]3181; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]3182; GFX1132-NEXT: s_mov_b32 s13, s143183; GFX1132-NEXT: s_mov_b32 s14, s153184; GFX1132-NEXT: s_mov_b32 s32, 03185; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3186; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]3187; GFX1132-NEXT: v_bfrev_b32_e32 v1, 13188; GFX1132-NEXT: s_mov_b32 s0, exec_lo3189; GFX1132-NEXT: .LBB5_1: ; %ComputeLoop3190; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=13191; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3192; GFX1132-NEXT: s_ctz_i32_b32 s1, s03193; GFX1132-NEXT: v_readlane_b32 s2, v0, s13194; GFX1132-NEXT: s_lshl_b32 s1, 1, s13195; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3196; GFX1132-NEXT: s_and_not1_b32 s0, s0, s13197; GFX1132-NEXT: v_add_f32_e32 v1, s2, v13198; GFX1132-NEXT: s_cbranch_scc1 .LBB5_13199; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd3200; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03201; GFX1132-NEXT: s_mov_b32 s0, exec_lo3202; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)3203; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v03204; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s03205; GFX1132-NEXT: s_cbranch_execz .LBB5_43206; GFX1132-NEXT: ; %bb.3:3207; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x243208; GFX1132-NEXT: v_mov_b32_e32 v0, 03209; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3210; GFX1132-NEXT: global_atomic_add_f32 v0, v1, s[0:1]3211; GFX1132-NEXT: .LBB5_4:3212; GFX1132-NEXT: s_endpgm3213;3214; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3215; GFX7LESS-DPP: ; %bb.0:3216; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 03217; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD03218; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD13219; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -13220; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0003221; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s113222; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 03223; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s103224; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s93225; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s83226; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3227; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x93228; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0003229; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -13230; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 443231; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 03232; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]3233; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43234; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123235; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03236; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23237; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13238; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v13239; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v23240; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3241; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3242; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]3243; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]3244; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)3245; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3246; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 03247; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 03248; GFX7LESS-DPP-NEXT: .LBB5_1: ; %atomicrmw.start3249; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=13250; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)3251; GFX7LESS-DPP-NEXT: v_add_f32_e32 v1, v2, v03252; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)3253; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v23254; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v13255; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc3256; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)3257; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v23258; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]3259; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v33260; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]3261; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB5_13262; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end3263; GFX7LESS-DPP-NEXT: s_endpgm3264;3265; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3266; GFX9-DPP: ; %bb.0:3267; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03268; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13269; GFX9-DPP-NEXT: s_mov_b32 s38, -13270; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000003271; GFX9-DPP-NEXT: s_add_u32 s36, s36, s113272; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 03273; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3274; GFX9-DPP-NEXT: s_mov_b32 s12, s83275; GFX9-DPP-NEXT: s_add_u32 s8, s34, 443276; GFX9-DPP-NEXT: s_mov_b32 s13, s93277; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 03278; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]3279; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43280; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123281; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03282; GFX9-DPP-NEXT: s_mov_b32 s14, s103283; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3284; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23285; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13286; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3287; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3288; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]3289; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v23290; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]3291; GFX9-DPP-NEXT: s_mov_b32 s32, 03292; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)3293; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3294; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 03295; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v13296; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13297; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 13298; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]3299; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13300; GFX9-DPP-NEXT: s_nop 13301; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf3302; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53303; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13304; GFX9-DPP-NEXT: s_nop 13305; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf3306; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53307; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13308; GFX9-DPP-NEXT: s_nop 13309; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf3310; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53311; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13312; GFX9-DPP-NEXT: s_nop 13313; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf3314; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53315; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 13316; GFX9-DPP-NEXT: s_nop 13317; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf3318; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v53319; GFX9-DPP-NEXT: s_nop 13320; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf3321; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v33322; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 633323; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]3324; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v13325; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc3326; GFX9-DPP-NEXT: s_cbranch_execz .LBB5_33327; GFX9-DPP-NEXT: ; %bb.1:3328; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243329; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 03330; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 03331; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)3332; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]3333; GFX9-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3334; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=13335; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)3336; GFX9-DPP-NEXT: v_add_f32_e32 v0, s4, v13337; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc3338; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)3339; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13340; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3341; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v03342; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]3343; GFX9-DPP-NEXT: s_cbranch_execnz .LBB5_23344; GFX9-DPP-NEXT: .LBB5_3:3345; GFX9-DPP-NEXT: s_endpgm3346;3347; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3348; GFX1064-DPP: ; %bb.0:3349; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03350; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13351; GFX1064-DPP-NEXT: s_mov_b32 s38, -13352; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160003353; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s113354; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3355; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 03356; GFX1064-DPP-NEXT: s_mov_b32 s12, s83357; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 443358; GFX1064-DPP-NEXT: s_mov_b32 s13, s93359; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 03360; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]3361; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43362; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123363; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23364; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03365; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13366; GFX1064-DPP-NEXT: s_mov_b32 s14, s103367; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3368; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3369; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3370; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v23371; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]3372; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]3373; GFX1064-DPP-NEXT: s_mov_b32 s32, 03374; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)3375; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3376; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13377; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 13378; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]3379; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 13380; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf3381; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v33382; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 13383; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf3384; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v53385; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 13386; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf3387; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v43388; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf3389; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v53390; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 03391; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v43392; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 03393; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 323394; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]3395; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03396; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13397; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s33398; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]3399; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03400; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v33401; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03402; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc3403; GFX1064-DPP-NEXT: s_cbranch_execz .LBB5_33404; GFX1064-DPP-NEXT: ; %bb.1:3405; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243406; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 03407; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 03408; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)3409; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]3410; GFX1064-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3411; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=13412; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)3413; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v23414; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc3415; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)3416; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13417; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v03418; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3419; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]3420; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB5_23421; GFX1064-DPP-NEXT: .LBB5_3:3422; GFX1064-DPP-NEXT: s_endpgm3423;3424; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3425; GFX1032-DPP: ; %bb.0:3426; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03427; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13428; GFX1032-DPP-NEXT: s_mov_b32 s38, -13429; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160003430; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s113431; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3432; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 03433; GFX1032-DPP-NEXT: s_mov_b32 s12, s83434; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 443435; GFX1032-DPP-NEXT: s_mov_b32 s13, s93436; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 03437; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]3438; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43439; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123440; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v23441; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03442; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v13443; GFX1032-DPP-NEXT: s_mov_b32 s14, s103444; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3445; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3446; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3447; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v23448; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]3449; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]3450; GFX1032-DPP-NEXT: s_mov_b32 s32, 03451; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)3452; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3453; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -13454; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 13455; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s03456; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 13457; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf3458; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v33459; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 13460; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf3461; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v53462; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 13463; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf3464; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v43465; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf3466; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v53467; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 03468; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v43469; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s03470; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03471; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v33472; GFX1032-DPP-NEXT: s_mov_b32 s2, 03473; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03474; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo3475; GFX1032-DPP-NEXT: s_cbranch_execz .LBB5_33476; GFX1032-DPP-NEXT: ; %bb.1:3477; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243478; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 03479; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)3480; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]3481; GFX1032-DPP-NEXT: .LBB5_2: ; %atomicrmw.start3482; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=13483; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)3484; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v23485; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc3486; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)3487; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13488; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v03489; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s23490; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s23491; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB5_23492; GFX1032-DPP-NEXT: .LBB5_3:3493; GFX1032-DPP-NEXT: s_endpgm3494;3495; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3496; GFX1164-DPP: ; %bb.0:3497; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3498; GFX1164-DPP-NEXT: s_mov_b32 s12, s83499; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 443500; GFX1164-DPP-NEXT: s_mov_b32 s13, s93501; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 03502; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]3503; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43504; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123505; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v03506; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x03507; GFX1164-DPP-NEXT: s_mov_b32 s14, s103508; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3509; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3510; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3511; GFX1164-DPP-NEXT: s_mov_b32 s32, 03512; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)3513; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3514; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13515; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 13516; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]3517; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 13518; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3519; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf3520; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v13521; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 13522; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3523; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3524; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v33525; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 13526; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3527; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3528; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v23529; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3530; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3531; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v33532; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3533; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 03534; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v23535; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)3536; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v13537; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]3538; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03539; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -13540; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)3541; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v23542; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]3543; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)3544; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v03545; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v13546; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec3547; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)3548; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v43549; GFX1164-DPP-NEXT: s_cbranch_execz .LBB5_23550; GFX1164-DPP-NEXT: ; %bb.1:3551; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x243552; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 03553; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)3554; GFX1164-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]3555; GFX1164-DPP-NEXT: .LBB5_2:3556; GFX1164-DPP-NEXT: s_endpgm3557;3558; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe:3559; GFX1132-DPP: ; %bb.0:3560; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]3561; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v03562; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 443563; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 03564; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]3565; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43566; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123567; GFX1132-DPP-NEXT: s_mov_b32 s12, s133568; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x03569; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3570; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]3571; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]3572; GFX1132-DPP-NEXT: s_mov_b32 s13, s143573; GFX1132-DPP-NEXT: s_mov_b32 s14, s153574; GFX1132-DPP-NEXT: s_mov_b32 s32, 03575; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)3576; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]3577; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -13578; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 13579; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s03580; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 13581; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3582; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf3583; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v13584; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 13585; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3586; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf3587; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v33588; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 13589; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)3590; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf3591; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v23592; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3593; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf3594; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v33595; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3596; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 03597; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v23598; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s03599; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)3600; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 03601; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v13602; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo3603; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)3604; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v43605; GFX1132-DPP-NEXT: s_cbranch_execz .LBB5_23606; GFX1132-DPP-NEXT: ; %bb.1:3607; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x243608; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 03609; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)3610; GFX1132-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]3611; GFX1132-DPP-NEXT: .LBB5_2:3612; GFX1132-DPP-NEXT: s_endpgm3613 %divValue = call float @div.float.value()3614 %result = atomicrmw fadd ptr addrspace(1) %ptr, float %divValue syncscope("agent") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !13615 ret void3616}3617 3618 3619define amdgpu_kernel void @global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {3620; GFX7LESS-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3621; GFX7LESS: ; %bb.0:3622; GFX7LESS-NEXT: s_mov_b32 s32, 03623; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03624; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13625; GFX7LESS-NEXT: s_mov_b32 s38, -13626; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0003627; GFX7LESS-NEXT: s_add_u32 s36, s36, s113628; GFX7LESS-NEXT: s_addc_u32 s37, s37, 03629; GFX7LESS-NEXT: s_mov_b32 s14, s103630; GFX7LESS-NEXT: s_mov_b32 s13, s93631; GFX7LESS-NEXT: s_mov_b32 s12, s83632; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]3633; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]3634; GFX7LESS-NEXT: s_add_u32 s8, s34, 443635; GFX7LESS-NEXT: s_addc_u32 s9, s35, 03636; GFX7LESS-NEXT: s_getpc_b64 s[4:5]3637; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43638; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123639; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03640; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v23641; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v13642; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v13643; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v23644; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]3645; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]3646; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]3647; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]3648; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3649; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]3650; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec3651; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 13652; GFX7LESS-NEXT: .LBB6_1: ; %ComputeLoop3653; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=13654; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]3655; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s23656; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s23657; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3658; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 03659; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]3660; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v23661; GFX7LESS-NEXT: s_cbranch_vccnz .LBB6_13662; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd3663; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 03664; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v03665; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03666; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc3667; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3668; GFX7LESS-NEXT: s_cbranch_execz .LBB6_53669; GFX7LESS-NEXT: ; %bb.3:3670; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x93671; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0003672; GFX7LESS-NEXT: s_mov_b32 s2, -13673; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)3674; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 03675; GFX7LESS-NEXT: s_mov_b64 s[4:5], 03676; GFX7LESS-NEXT: .LBB6_4: ; %atomicrmw.start3677; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=13678; GFX7LESS-NEXT: s_waitcnt vmcnt(0)3679; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v23680; GFX7LESS-NEXT: s_waitcnt expcnt(0)3681; GFX7LESS-NEXT: v_mov_b32_e32 v4, v13682; GFX7LESS-NEXT: v_mov_b32_e32 v3, v03683; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc3684; GFX7LESS-NEXT: s_waitcnt vmcnt(0)3685; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v13686; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]3687; GFX7LESS-NEXT: v_mov_b32_e32 v1, v33688; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]3689; GFX7LESS-NEXT: s_cbranch_execnz .LBB6_43690; GFX7LESS-NEXT: .LBB6_5:3691; GFX7LESS-NEXT: s_endpgm3692;3693; GFX9-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3694; GFX9: ; %bb.0:3695; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03696; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13697; GFX9-NEXT: s_mov_b32 s38, -13698; GFX9-NEXT: s_mov_b32 s39, 0xe000003699; GFX9-NEXT: s_add_u32 s36, s36, s113700; GFX9-NEXT: s_addc_u32 s37, s37, 03701; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]3702; GFX9-NEXT: s_mov_b32 s12, s83703; GFX9-NEXT: s_add_u32 s8, s34, 443704; GFX9-NEXT: s_mov_b32 s13, s93705; GFX9-NEXT: s_addc_u32 s9, s35, 03706; GFX9-NEXT: s_getpc_b64 s[4:5]3707; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43708; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123709; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03710; GFX9-NEXT: s_mov_b32 s14, s103711; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]3712; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v23713; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v13714; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]3715; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]3716; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]3717; GFX9-NEXT: v_or3_b32 v31, v0, v1, v23718; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]3719; GFX9-NEXT: s_mov_b32 s32, 03720; GFX9-NEXT: s_waitcnt lgkmcnt(0)3721; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]3722; GFX9-NEXT: s_mov_b64 s[0:1], exec3723; GFX9-NEXT: v_bfrev_b32_e32 v2, 13724; GFX9-NEXT: .LBB6_1: ; %ComputeLoop3725; GFX9-NEXT: ; =>This Inner Loop Header: Depth=13726; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]3727; GFX9-NEXT: v_readlane_b32 s4, v0, s23728; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s23729; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3730; GFX9-NEXT: v_add_f32_e32 v2, s4, v23731; GFX9-NEXT: s_cbranch_scc1 .LBB6_13732; GFX9-NEXT: ; %bb.2: ; %ComputeEnd3733; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03734; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03735; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03736; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc3737; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3738; GFX9-NEXT: s_cbranch_execz .LBB6_53739; GFX9-NEXT: ; %bb.3:3740; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243741; GFX9-NEXT: v_mov_b32_e32 v3, 03742; GFX9-NEXT: s_mov_b64 s[2:3], 03743; GFX9-NEXT: s_waitcnt lgkmcnt(0)3744; GFX9-NEXT: global_load_dword v1, v3, s[0:1]3745; GFX9-NEXT: .LBB6_4: ; %atomicrmw.start3746; GFX9-NEXT: ; =>This Inner Loop Header: Depth=13747; GFX9-NEXT: s_waitcnt vmcnt(0)3748; GFX9-NEXT: v_add_f32_e32 v0, v1, v23749; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3750; GFX9-NEXT: s_waitcnt vmcnt(0)3751; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13752; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3753; GFX9-NEXT: v_mov_b32_e32 v1, v03754; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]3755; GFX9-NEXT: s_cbranch_execnz .LBB6_43756; GFX9-NEXT: .LBB6_5:3757; GFX9-NEXT: s_endpgm3758;3759; GFX1064-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3760; GFX1064: ; %bb.0:3761; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03762; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13763; GFX1064-NEXT: s_mov_b32 s38, -13764; GFX1064-NEXT: s_mov_b32 s39, 0x31e160003765; GFX1064-NEXT: s_add_u32 s36, s36, s113766; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]3767; GFX1064-NEXT: s_addc_u32 s37, s37, 03768; GFX1064-NEXT: s_mov_b32 s12, s83769; GFX1064-NEXT: s_add_u32 s8, s34, 443770; GFX1064-NEXT: s_mov_b32 s13, s93771; GFX1064-NEXT: s_addc_u32 s9, s35, 03772; GFX1064-NEXT: s_getpc_b64 s[4:5]3773; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43774; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123775; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v23776; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03777; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v13778; GFX1064-NEXT: s_mov_b32 s14, s103779; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]3780; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]3781; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]3782; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v23783; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]3784; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]3785; GFX1064-NEXT: s_mov_b32 s32, 03786; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3787; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]3788; GFX1064-NEXT: v_bfrev_b32_e32 v2, 13789; GFX1064-NEXT: s_mov_b64 s[0:1], exec3790; GFX1064-NEXT: .LBB6_1: ; %ComputeLoop3791; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=13792; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]3793; GFX1064-NEXT: v_readlane_b32 s3, v0, s23794; GFX1064-NEXT: v_add_f32_e32 v2, s3, v23795; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s23796; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]3797; GFX1064-NEXT: s_cbranch_scc1 .LBB6_13798; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd3799; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03800; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03801; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v03802; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc3803; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3804; GFX1064-NEXT: s_cbranch_execz .LBB6_53805; GFX1064-NEXT: ; %bb.3:3806; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243807; GFX1064-NEXT: v_mov_b32_e32 v3, 03808; GFX1064-NEXT: s_mov_b64 s[2:3], 03809; GFX1064-NEXT: s_waitcnt lgkmcnt(0)3810; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]3811; GFX1064-NEXT: .LBB6_4: ; %atomicrmw.start3812; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=13813; GFX1064-NEXT: s_waitcnt vmcnt(0)3814; GFX1064-NEXT: v_add_f32_e32 v0, v1, v23815; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3816; GFX1064-NEXT: s_waitcnt vmcnt(0)3817; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v13818; GFX1064-NEXT: v_mov_b32_e32 v1, v03819; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]3820; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]3821; GFX1064-NEXT: s_cbranch_execnz .LBB6_43822; GFX1064-NEXT: .LBB6_5:3823; GFX1064-NEXT: s_endpgm3824;3825; GFX1032-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3826; GFX1032: ; %bb.0:3827; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD03828; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD13829; GFX1032-NEXT: s_mov_b32 s38, -13830; GFX1032-NEXT: s_mov_b32 s39, 0x31c160003831; GFX1032-NEXT: s_add_u32 s36, s36, s113832; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]3833; GFX1032-NEXT: s_addc_u32 s37, s37, 03834; GFX1032-NEXT: s_mov_b32 s12, s83835; GFX1032-NEXT: s_add_u32 s8, s34, 443836; GFX1032-NEXT: s_mov_b32 s13, s93837; GFX1032-NEXT: s_addc_u32 s9, s35, 03838; GFX1032-NEXT: s_getpc_b64 s[4:5]3839; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43840; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123841; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v23842; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x03843; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v13844; GFX1032-NEXT: s_mov_b32 s14, s103845; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]3846; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]3847; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]3848; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v23849; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]3850; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]3851; GFX1032-NEXT: s_mov_b32 s32, 03852; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3853; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]3854; GFX1032-NEXT: v_bfrev_b32_e32 v2, 13855; GFX1032-NEXT: s_mov_b32 s0, exec_lo3856; GFX1032-NEXT: .LBB6_1: ; %ComputeLoop3857; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=13858; GFX1032-NEXT: s_ff1_i32_b32 s1, s03859; GFX1032-NEXT: v_readlane_b32 s2, v0, s13860; GFX1032-NEXT: s_lshl_b32 s1, 1, s13861; GFX1032-NEXT: s_andn2_b32 s0, s0, s13862; GFX1032-NEXT: v_add_f32_e32 v2, s2, v23863; GFX1032-NEXT: s_cbranch_scc1 .LBB6_13864; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd3865; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03866; GFX1032-NEXT: s_mov_b32 s2, 03867; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v03868; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo3869; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s03870; GFX1032-NEXT: s_cbranch_execz .LBB6_53871; GFX1032-NEXT: ; %bb.3:3872; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x243873; GFX1032-NEXT: v_mov_b32_e32 v3, 03874; GFX1032-NEXT: s_waitcnt lgkmcnt(0)3875; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]3876; GFX1032-NEXT: .LBB6_4: ; %atomicrmw.start3877; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=13878; GFX1032-NEXT: s_waitcnt vmcnt(0)3879; GFX1032-NEXT: v_add_f32_e32 v0, v1, v23880; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc3881; GFX1032-NEXT: s_waitcnt vmcnt(0)3882; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v13883; GFX1032-NEXT: v_mov_b32_e32 v1, v03884; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s23885; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s23886; GFX1032-NEXT: s_cbranch_execnz .LBB6_43887; GFX1032-NEXT: .LBB6_5:3888; GFX1032-NEXT: s_endpgm3889;3890; GFX1164-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3891; GFX1164: ; %bb.0:3892; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]3893; GFX1164-NEXT: s_mov_b32 s12, s83894; GFX1164-NEXT: s_add_u32 s8, s34, 443895; GFX1164-NEXT: s_mov_b32 s13, s93896; GFX1164-NEXT: s_addc_u32 s9, s35, 03897; GFX1164-NEXT: s_getpc_b64 s[4:5]3898; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43899; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123900; GFX1164-NEXT: v_mov_b32_e32 v31, v03901; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x03902; GFX1164-NEXT: s_mov_b32 s14, s103903; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]3904; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]3905; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]3906; GFX1164-NEXT: s_mov_b32 s32, 03907; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3908; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]3909; GFX1164-NEXT: v_bfrev_b32_e32 v1, 13910; GFX1164-NEXT: s_mov_b64 s[0:1], exec3911; GFX1164-NEXT: .LBB6_1: ; %ComputeLoop3912; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=13913; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3914; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]3915; GFX1164-NEXT: v_readlane_b32 s3, v0, s23916; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)3917; GFX1164-NEXT: v_add_f32_e32 v1, s3, v13918; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s23919; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]3920; GFX1164-NEXT: s_cbranch_scc1 .LBB6_13921; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd3922; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03923; GFX1164-NEXT: s_mov_b64 s[0:1], exec3924; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3925; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v03926; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v03927; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]3928; GFX1164-NEXT: s_cbranch_execz .LBB6_43929; GFX1164-NEXT: ; %bb.3:3930; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x243931; GFX1164-NEXT: v_mov_b32_e32 v0, 03932; GFX1164-NEXT: s_waitcnt lgkmcnt(0)3933; GFX1164-NEXT: global_atomic_add_f32 v0, v1, s[0:1]3934; GFX1164-NEXT: .LBB6_4:3935; GFX1164-NEXT: s_endpgm3936;3937; GFX1132-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3938; GFX1132: ; %bb.0:3939; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]3940; GFX1132-NEXT: v_mov_b32_e32 v31, v03941; GFX1132-NEXT: s_add_u32 s8, s34, 443942; GFX1132-NEXT: s_addc_u32 s9, s35, 03943; GFX1132-NEXT: s_getpc_b64 s[4:5]3944; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+43945; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+123946; GFX1132-NEXT: s_mov_b32 s12, s133947; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x03948; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]3949; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]3950; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]3951; GFX1132-NEXT: s_mov_b32 s13, s143952; GFX1132-NEXT: s_mov_b32 s14, s153953; GFX1132-NEXT: s_mov_b32 s32, 03954; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3955; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]3956; GFX1132-NEXT: v_bfrev_b32_e32 v1, 13957; GFX1132-NEXT: s_mov_b32 s0, exec_lo3958; GFX1132-NEXT: .LBB6_1: ; %ComputeLoop3959; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=13960; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)3961; GFX1132-NEXT: s_ctz_i32_b32 s1, s03962; GFX1132-NEXT: v_readlane_b32 s2, v0, s13963; GFX1132-NEXT: s_lshl_b32 s1, 1, s13964; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)3965; GFX1132-NEXT: s_and_not1_b32 s0, s0, s13966; GFX1132-NEXT: v_add_f32_e32 v1, s2, v13967; GFX1132-NEXT: s_cbranch_scc1 .LBB6_13968; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd3969; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 03970; GFX1132-NEXT: s_mov_b32 s0, exec_lo3971; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)3972; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v03973; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s03974; GFX1132-NEXT: s_cbranch_execz .LBB6_43975; GFX1132-NEXT: ; %bb.3:3976; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x243977; GFX1132-NEXT: v_mov_b32_e32 v0, 03978; GFX1132-NEXT: s_waitcnt lgkmcnt(0)3979; GFX1132-NEXT: global_atomic_add_f32 v0, v1, s[0:1]3980; GFX1132-NEXT: .LBB6_4:3981; GFX1132-NEXT: s_endpgm3982;3983; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:3984; GFX7LESS-DPP: ; %bb.0:3985; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 03986; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD03987; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD13988; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -13989; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0003990; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s113991; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 03992; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s103993; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s93994; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s83995; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]3996; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x93997; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0003998; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -13999; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 444000; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 04001; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]4002; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44003; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124004; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04005; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24006; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14007; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v14008; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v24009; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4010; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4011; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]4012; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]4013; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)4014; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4015; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 04016; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 04017; GFX7LESS-DPP-NEXT: .LBB6_1: ; %atomicrmw.start4018; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=14019; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)4020; GFX7LESS-DPP-NEXT: v_add_f32_e32 v1, v2, v04021; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)4022; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v24023; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v14024; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc4025; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)4026; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v24027; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]4028; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v34029; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]4030; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB6_14031; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end4032; GFX7LESS-DPP-NEXT: s_endpgm4033;4034; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:4035; GFX9-DPP: ; %bb.0:4036; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04037; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14038; GFX9-DPP-NEXT: s_mov_b32 s38, -14039; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000004040; GFX9-DPP-NEXT: s_add_u32 s36, s36, s114041; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 04042; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4043; GFX9-DPP-NEXT: s_mov_b32 s12, s84044; GFX9-DPP-NEXT: s_add_u32 s8, s34, 444045; GFX9-DPP-NEXT: s_mov_b32 s13, s94046; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 04047; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]4048; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44049; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124050; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04051; GFX9-DPP-NEXT: s_mov_b32 s14, s104052; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4053; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24054; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14055; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4056; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4057; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]4058; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v24059; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]4060; GFX9-DPP-NEXT: s_mov_b32 s32, 04061; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)4062; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4063; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 04064; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v14065; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14066; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 14067; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]4068; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14069; GFX9-DPP-NEXT: s_nop 14070; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf4071; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54072; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14073; GFX9-DPP-NEXT: s_nop 14074; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf4075; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54076; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14077; GFX9-DPP-NEXT: s_nop 14078; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf4079; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54080; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14081; GFX9-DPP-NEXT: s_nop 14082; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf4083; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54084; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 14085; GFX9-DPP-NEXT: s_nop 14086; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf4087; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v54088; GFX9-DPP-NEXT: s_nop 14089; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf4090; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v34091; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 634092; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]4093; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v14094; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4095; GFX9-DPP-NEXT: s_cbranch_execz .LBB6_34096; GFX9-DPP-NEXT: ; %bb.1:4097; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244098; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 04099; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 04100; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)4101; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]4102; GFX9-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4103; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=14104; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)4105; GFX9-DPP-NEXT: v_add_f32_e32 v0, s4, v14106; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc4107; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)4108; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14109; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4110; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v04111; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]4112; GFX9-DPP-NEXT: s_cbranch_execnz .LBB6_24113; GFX9-DPP-NEXT: .LBB6_3:4114; GFX9-DPP-NEXT: s_endpgm4115;4116; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:4117; GFX1064-DPP: ; %bb.0:4118; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04119; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14120; GFX1064-DPP-NEXT: s_mov_b32 s38, -14121; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160004122; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s114123; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4124; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 04125; GFX1064-DPP-NEXT: s_mov_b32 s12, s84126; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 444127; GFX1064-DPP-NEXT: s_mov_b32 s13, s94128; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 04129; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]4130; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44131; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124132; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24133; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04134; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14135; GFX1064-DPP-NEXT: s_mov_b32 s14, s104136; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4137; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4138; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4139; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v24140; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]4141; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]4142; GFX1064-DPP-NEXT: s_mov_b32 s32, 04143; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)4144; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4145; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14146; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 14147; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]4148; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 14149; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf4150; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v34151; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 14152; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf4153; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v54154; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 14155; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf4156; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v44157; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf4158; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v54159; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 04160; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v44161; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 04162; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 324163; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]4164; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04165; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14166; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s34167; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]4168; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v04169; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v34170; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04171; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc4172; GFX1064-DPP-NEXT: s_cbranch_execz .LBB6_34173; GFX1064-DPP-NEXT: ; %bb.1:4174; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244175; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 04176; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 04177; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)4178; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]4179; GFX1064-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4180; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=14181; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)4182; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v24183; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc4184; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)4185; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14186; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v04187; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4188; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]4189; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB6_24190; GFX1064-DPP-NEXT: .LBB6_3:4191; GFX1064-DPP-NEXT: s_endpgm4192;4193; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:4194; GFX1032-DPP: ; %bb.0:4195; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04196; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14197; GFX1032-DPP-NEXT: s_mov_b32 s38, -14198; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160004199; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s114200; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4201; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 04202; GFX1032-DPP-NEXT: s_mov_b32 s12, s84203; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 444204; GFX1032-DPP-NEXT: s_mov_b32 s13, s94205; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 04206; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]4207; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44208; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124209; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v24210; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04211; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v14212; GFX1032-DPP-NEXT: s_mov_b32 s14, s104213; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4214; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4215; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4216; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v24217; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]4218; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]4219; GFX1032-DPP-NEXT: s_mov_b32 s32, 04220; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)4221; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4222; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -14223; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 14224; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s04225; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 14226; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf4227; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v34228; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 14229; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf4230; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v54231; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 14232; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf4233; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v44234; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf4235; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v54236; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 04237; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v44238; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s04239; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04240; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v34241; GFX1032-DPP-NEXT: s_mov_b32 s2, 04242; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04243; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo4244; GFX1032-DPP-NEXT: s_cbranch_execz .LBB6_34245; GFX1032-DPP-NEXT: ; %bb.1:4246; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x244247; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 04248; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)4249; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]4250; GFX1032-DPP-NEXT: .LBB6_2: ; %atomicrmw.start4251; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=14252; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)4253; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v24254; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc4255; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)4256; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14257; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v04258; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s24259; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s24260; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB6_24261; GFX1032-DPP-NEXT: .LBB6_3:4262; GFX1032-DPP-NEXT: s_endpgm4263;4264; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:4265; GFX1164-DPP: ; %bb.0:4266; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4267; GFX1164-DPP-NEXT: s_mov_b32 s12, s84268; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 444269; GFX1164-DPP-NEXT: s_mov_b32 s13, s94270; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 04271; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]4272; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44273; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124274; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v04275; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x04276; GFX1164-DPP-NEXT: s_mov_b32 s14, s104277; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4278; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4279; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4280; GFX1164-DPP-NEXT: s_mov_b32 s32, 04281; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)4282; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4283; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14284; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 14285; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]4286; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 14287; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4288; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf4289; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v14290; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 14291; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4292; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf4293; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v34294; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 14295; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4296; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf4297; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v24298; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4299; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf4300; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v34301; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4302; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04303; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v24304; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4305; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v14306; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]4307; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 04308; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -14309; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)4310; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v24311; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]4312; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)4313; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v04314; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v14315; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec4316; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)4317; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v44318; GFX1164-DPP-NEXT: s_cbranch_execz .LBB6_24319; GFX1164-DPP-NEXT: ; %bb.1:4320; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x244321; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 04322; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)4323; GFX1164-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]4324; GFX1164-DPP-NEXT: .LBB6_2:4325; GFX1164-DPP-NEXT: s_endpgm4326;4327; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_div_value_agent_scope_unsafe_structfp:4328; GFX1132-DPP: ; %bb.0:4329; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]4330; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v04331; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 444332; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 04333; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]4334; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44335; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124336; GFX1132-DPP-NEXT: s_mov_b32 s12, s134337; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x04338; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]4339; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]4340; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]4341; GFX1132-DPP-NEXT: s_mov_b32 s13, s144342; GFX1132-DPP-NEXT: s_mov_b32 s14, s154343; GFX1132-DPP-NEXT: s_mov_b32 s32, 04344; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)4345; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]4346; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -14347; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 14348; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s04349; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 14350; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4351; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf4352; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v14353; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 14354; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4355; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf4356; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v34357; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 14358; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4359; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf4360; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v24361; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4362; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf4363; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v34364; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4365; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 04366; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v24367; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s04368; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)4369; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 04370; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v14371; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo4372; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)4373; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v44374; GFX1132-DPP-NEXT: s_cbranch_execz .LBB6_24375; GFX1132-DPP-NEXT: ; %bb.1:4376; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x244377; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 04378; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)4379; GFX1132-DPP-NEXT: global_atomic_add_f32 v4, v0, s[0:1]4380; GFX1132-DPP-NEXT: .LBB6_2:4381; GFX1132-DPP-NEXT: s_endpgm4382 %divValue = call float @div.float.value() strictfp4383 %result = atomicrmw fadd ptr addrspace(1) %ptr, float %divValue syncscope("agent") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !14384 ret void4385}4386 4387define amdgpu_kernel void @global_atomic_fadd_uni_address_uni_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {4388; GFX7LESS-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4389; GFX7LESS: ; %bb.0:4390; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04391; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14392; GFX7LESS-NEXT: s_mov_b32 s14, -14393; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0004394; GFX7LESS-NEXT: s_add_u32 s12, s12, s114395; GFX7LESS-NEXT: s_addc_u32 s13, s13, 04396; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec4397; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 04398; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v04399; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04400; GFX7LESS-NEXT: s_and_saveexec_b64 s[2:3], vcc4401; GFX7LESS-NEXT: s_cbranch_execz .LBB7_34402; GFX7LESS-NEXT: ; %bb.1:4403; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[0:1]4404; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x94405; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000004406; GFX7LESS-NEXT: v_mov_b32_e32 v0, 04407; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000004408; GFX7LESS-NEXT: s_mov_b64 s[4:5], 04409; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4410; GFX7LESS-NEXT: s_load_dword s2, s[0:1], 0x04411; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0004412; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]4413; GFX7LESS-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4414; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v04415; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4416; GFX7LESS-NEXT: v_mov_b32_e32 v1, s24417; GFX7LESS-NEXT: s_mov_b32 s2, -14418; GFX7LESS-NEXT: .LBB7_2: ; %atomicrmw.start4419; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=14420; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v24421; GFX7LESS-NEXT: s_waitcnt expcnt(0)4422; GFX7LESS-NEXT: v_mov_b32_e32 v4, v14423; GFX7LESS-NEXT: v_mov_b32_e32 v3, v04424; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc4425; GFX7LESS-NEXT: s_waitcnt vmcnt(0)4426; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v14427; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]4428; GFX7LESS-NEXT: v_mov_b32_e32 v1, v34429; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]4430; GFX7LESS-NEXT: s_cbranch_execnz .LBB7_24431; GFX7LESS-NEXT: .LBB7_3:4432; GFX7LESS-NEXT: s_endpgm4433;4434; GFX9-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4435; GFX9: ; %bb.0:4436; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04437; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14438; GFX9-NEXT: s_mov_b32 s14, -14439; GFX9-NEXT: s_mov_b64 s[0:1], exec4440; GFX9-NEXT: s_mov_b32 s15, 0xe000004441; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04442; GFX9-NEXT: s_add_u32 s12, s12, s114443; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v04444; GFX9-NEXT: s_addc_u32 s13, s13, 04445; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04446; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc4447; GFX9-NEXT: s_cbranch_execz .LBB7_34448; GFX9-NEXT: ; %bb.1:4449; GFX9-NEXT: v_mov_b32_e32 v0, 04450; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]4451; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000004452; GFX9-NEXT: s_mov_b32 s1, 0x433000004453; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]4454; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244455; GFX9-NEXT: s_mov_b64 s[2:3], 04456; GFX9-NEXT: v_mov_b32_e32 v3, 04457; GFX9-NEXT: s_waitcnt lgkmcnt(0)4458; GFX9-NEXT: s_load_dword s4, s[0:1], 0x04459; GFX9-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4460; GFX9-NEXT: s_waitcnt lgkmcnt(0)4461; GFX9-NEXT: v_mov_b32_e32 v1, s44462; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v04463; GFX9-NEXT: .LBB7_2: ; %atomicrmw.start4464; GFX9-NEXT: ; =>This Inner Loop Header: Depth=14465; GFX9-NEXT: v_add_f32_e32 v0, v1, v24466; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4467; GFX9-NEXT: s_waitcnt vmcnt(0)4468; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14469; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4470; GFX9-NEXT: v_mov_b32_e32 v1, v04471; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]4472; GFX9-NEXT: s_cbranch_execnz .LBB7_24473; GFX9-NEXT: .LBB7_3:4474; GFX9-NEXT: s_endpgm4475;4476; GFX1064-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4477; GFX1064: ; %bb.0:4478; GFX1064-NEXT: s_mov_b64 s[0:1], exec4479; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04480; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04481; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14482; GFX1064-NEXT: s_mov_b32 s14, -14483; GFX1064-NEXT: s_mov_b32 s15, 0x31e160004484; GFX1064-NEXT: s_add_u32 s12, s12, s114485; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v04486; GFX1064-NEXT: s_addc_u32 s13, s13, 04487; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04488; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc4489; GFX1064-NEXT: s_cbranch_execz .LBB7_34490; GFX1064-NEXT: ; %bb.1:4491; GFX1064-NEXT: s_bcnt1_i32_b64 s0, s[0:1]4492; GFX1064-NEXT: s_mov_b32 s1, 0x433000004493; GFX1064-NEXT: v_mov_b32_e32 v3, 04494; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]4495; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244496; GFX1064-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4497; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4498; GFX1064-NEXT: s_load_dword s2, s[0:1], 0x04499; GFX1064-NEXT: s_waitcnt lgkmcnt(0)4500; GFX1064-NEXT: v_mov_b32_e32 v1, s24501; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v04502; GFX1064-NEXT: s_mov_b64 s[2:3], 04503; GFX1064-NEXT: .LBB7_2: ; %atomicrmw.start4504; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=14505; GFX1064-NEXT: v_add_f32_e32 v0, v1, v24506; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4507; GFX1064-NEXT: s_waitcnt vmcnt(0)4508; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14509; GFX1064-NEXT: v_mov_b32_e32 v1, v04510; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4511; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]4512; GFX1064-NEXT: s_cbranch_execnz .LBB7_24513; GFX1064-NEXT: .LBB7_3:4514; GFX1064-NEXT: s_endpgm4515;4516; GFX1032-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4517; GFX1032: ; %bb.0:4518; GFX1032-NEXT: s_mov_b32 s0, exec_lo4519; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04520; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04521; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14522; GFX1032-NEXT: s_mov_b32 s14, -14523; GFX1032-NEXT: s_mov_b32 s15, 0x31c160004524; GFX1032-NEXT: s_add_u32 s12, s12, s114525; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04526; GFX1032-NEXT: s_addc_u32 s13, s13, 04527; GFX1032-NEXT: s_mov_b32 s2, 04528; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo4529; GFX1032-NEXT: s_cbranch_execz .LBB7_34530; GFX1032-NEXT: ; %bb.1:4531; GFX1032-NEXT: s_bcnt1_i32_b32 s0, s04532; GFX1032-NEXT: s_mov_b32 s1, 0x433000004533; GFX1032-NEXT: v_mov_b32_e32 v3, 04534; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]4535; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244536; GFX1032-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4537; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4538; GFX1032-NEXT: s_load_dword s3, s[0:1], 0x04539; GFX1032-NEXT: s_waitcnt lgkmcnt(0)4540; GFX1032-NEXT: v_mov_b32_e32 v1, s34541; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v04542; GFX1032-NEXT: .LBB7_2: ; %atomicrmw.start4543; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=14544; GFX1032-NEXT: v_add_f32_e32 v0, v1, v24545; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4546; GFX1032-NEXT: s_waitcnt vmcnt(0)4547; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14548; GFX1032-NEXT: v_mov_b32_e32 v1, v04549; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s24550; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s24551; GFX1032-NEXT: s_cbranch_execnz .LBB7_24552; GFX1032-NEXT: .LBB7_3:4553; GFX1032-NEXT: s_endpgm4554;4555; GFX1164-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4556; GFX1164: ; %bb.0:4557; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec4558; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000004559; GFX1164-NEXT: v_mov_b32_e32 v1, s04560; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 04561; GFX1164-NEXT: s_mov_b64 s[0:1], exec4562; GFX1164-NEXT: s_clause 0x14563; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:44564; GFX1164-NEXT: scratch_store_b32 off, v1, off4565; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off4566; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v24567; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)4568; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v24569; GFX1164-NEXT: s_cbranch_execz .LBB7_34570; GFX1164-NEXT: ; %bb.1:4571; GFX1164-NEXT: s_waitcnt vmcnt(0)4572; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]4573; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x244574; GFX1164-NEXT: v_mov_b32_e32 v3, 04575; GFX1164-NEXT: s_waitcnt lgkmcnt(0)4576; GFX1164-NEXT: s_load_b32 s2, s[0:1], 0x04577; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4578; GFX1164-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4579; GFX1164-NEXT: s_waitcnt lgkmcnt(0)4580; GFX1164-NEXT: v_mov_b32_e32 v1, s24581; GFX1164-NEXT: s_mov_b64 s[2:3], 04582; GFX1164-NEXT: v_mul_f32_e32 v2, 4.0, v04583; GFX1164-NEXT: .LBB7_2: ; %atomicrmw.start4584; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=14585; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)4586; GFX1164-NEXT: v_add_f32_e32 v0, v1, v24587; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4588; GFX1164-NEXT: s_waitcnt vmcnt(0)4589; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14590; GFX1164-NEXT: v_mov_b32_e32 v1, v04591; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4592; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4593; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]4594; GFX1164-NEXT: s_cbranch_execnz .LBB7_24595; GFX1164-NEXT: .LBB7_3:4596; GFX1164-NEXT: s_endpgm4597;4598; GFX1132-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4599; GFX1132: ; %bb.0:4600; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo4601; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4602; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s04603; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 04604; GFX1132-NEXT: s_mov_b32 s2, 04605; GFX1132-NEXT: s_mov_b32 s0, exec_lo4606; GFX1132-NEXT: s_clause 0x14607; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:44608; GFX1132-NEXT: scratch_store_b32 off, v1, off4609; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off4610; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v24611; GFX1132-NEXT: s_cbranch_execz .LBB7_34612; GFX1132-NEXT: ; %bb.1:4613; GFX1132-NEXT: s_waitcnt vmcnt(0)4614; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]4615; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x244616; GFX1132-NEXT: v_mov_b32_e32 v3, 04617; GFX1132-NEXT: s_waitcnt lgkmcnt(0)4618; GFX1132-NEXT: s_load_b32 s3, s[0:1], 0x04619; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4620; GFX1132-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4621; GFX1132-NEXT: s_waitcnt lgkmcnt(0)4622; GFX1132-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v04623; GFX1132-NEXT: .LBB7_2: ; %atomicrmw.start4624; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=14625; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)4626; GFX1132-NEXT: v_add_f32_e32 v0, v1, v24627; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4628; GFX1132-NEXT: s_waitcnt vmcnt(0)4629; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14630; GFX1132-NEXT: v_mov_b32_e32 v1, v04631; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s24632; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4633; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s24634; GFX1132-NEXT: s_cbranch_execnz .LBB7_24635; GFX1132-NEXT: .LBB7_3:4636; GFX1132-NEXT: s_endpgm4637;4638; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4639; GFX7LESS-DPP: ; %bb.0:4640; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04641; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14642; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -14643; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0004644; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s114645; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 04646; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], exec4647; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s0, 04648; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s1, v04649; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04650; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4651; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB7_34652; GFX7LESS-DPP-NEXT: ; %bb.1:4653; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[0:1]4654; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x94655; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000004656; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 04657; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000004658; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 04659; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)4660; GFX7LESS-DPP-NEXT: s_load_dword s2, s[0:1], 0x04661; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0004662; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]4663; GFX7LESS-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4664; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v04665; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)4666; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s24667; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -14668; GFX7LESS-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4669; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=14670; GFX7LESS-DPP-NEXT: v_add_f32_e32 v0, v1, v24671; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)4672; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v14673; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v04674; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc4675; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)4676; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v14677; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]4678; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v34679; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]4680; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB7_24681; GFX7LESS-DPP-NEXT: .LBB7_3:4682; GFX7LESS-DPP-NEXT: s_endpgm4683;4684; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4685; GFX9-DPP: ; %bb.0:4686; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04687; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14688; GFX9-DPP-NEXT: s_mov_b32 s14, -14689; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec4690; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000004691; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04692; GFX9-DPP-NEXT: s_add_u32 s12, s12, s114693; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v04694; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 04695; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04696; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4697; GFX9-DPP-NEXT: s_cbranch_execz .LBB7_34698; GFX9-DPP-NEXT: ; %bb.1:4699; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 04700; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]4701; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000004702; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000004703; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]4704; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244705; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 04706; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 04707; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)4708; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x04709; GFX9-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4710; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)4711; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s44712; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v04713; GFX9-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4714; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=14715; GFX9-DPP-NEXT: v_add_f32_e32 v0, v1, v24716; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4717; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)4718; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14719; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4720; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v04721; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]4722; GFX9-DPP-NEXT: s_cbranch_execnz .LBB7_24723; GFX9-DPP-NEXT: .LBB7_3:4724; GFX9-DPP-NEXT: s_endpgm4725;4726; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4727; GFX1064-DPP: ; %bb.0:4728; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec4729; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04730; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04731; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14732; GFX1064-DPP-NEXT: s_mov_b32 s14, -14733; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160004734; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s114735; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v04736; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 04737; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04738; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc4739; GFX1064-DPP-NEXT: s_cbranch_execz .LBB7_34740; GFX1064-DPP-NEXT: ; %bb.1:4741; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]4742; GFX1064-DPP-NEXT: s_mov_b32 s1, 0x433000004743; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 04744; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]4745; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244746; GFX1064-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4747; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)4748; GFX1064-DPP-NEXT: s_load_dword s2, s[0:1], 0x04749; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)4750; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s24751; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v04752; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 04753; GFX1064-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4754; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=14755; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v24756; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4757; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)4758; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14759; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v04760; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4761; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]4762; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB7_24763; GFX1064-DPP-NEXT: .LBB7_3:4764; GFX1064-DPP-NEXT: s_endpgm4765;4766; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4767; GFX1032-DPP: ; %bb.0:4768; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo4769; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD04770; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 04771; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD14772; GFX1032-DPP-NEXT: s_mov_b32 s14, -14773; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160004774; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s114775; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v04776; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 04777; GFX1032-DPP-NEXT: s_mov_b32 s2, 04778; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo4779; GFX1032-DPP-NEXT: s_cbranch_execz .LBB7_34780; GFX1032-DPP-NEXT: ; %bb.1:4781; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s0, s04782; GFX1032-DPP-NEXT: s_mov_b32 s1, 0x433000004783; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 04784; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[0:1]4785; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244786; GFX1032-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4787; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)4788; GFX1032-DPP-NEXT: s_load_dword s3, s[0:1], 0x04789; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)4790; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s34791; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v04792; GFX1032-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4793; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=14794; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v24795; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc4796; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)4797; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14798; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v04799; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s24800; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s24801; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB7_24802; GFX1032-DPP-NEXT: .LBB7_3:4803; GFX1032-DPP-NEXT: s_endpgm4804;4805; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4806; GFX1164-DPP: ; %bb.0:4807; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec4808; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000004809; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s04810; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 04811; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec4812; GFX1164-DPP-NEXT: s_clause 0x14813; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:44814; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off4815; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off4816; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v24817; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)4818; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v24819; GFX1164-DPP-NEXT: s_cbranch_execz .LBB7_34820; GFX1164-DPP-NEXT: ; %bb.1:4821; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)4822; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]4823; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x244824; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, 04825; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)4826; GFX1164-DPP-NEXT: s_load_b32 s2, s[0:1], 0x04827; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_2)4828; GFX1164-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4829; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)4830; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s24831; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 04832; GFX1164-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v04833; GFX1164-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4834; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=14835; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)4836; GFX1164-DPP-NEXT: v_add_f32_e32 v0, v1, v24837; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4838; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)4839; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v14840; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v04841; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]4842; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4843; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]4844; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB7_24845; GFX1164-DPP-NEXT: .LBB7_3:4846; GFX1164-DPP-NEXT: s_endpgm4847;4848; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_default_scope_strictfp:4849; GFX1132-DPP: ; %bb.0:4850; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo4851; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4852; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s04853; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 04854; GFX1132-DPP-NEXT: s_mov_b32 s2, 04855; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo4856; GFX1132-DPP-NEXT: s_clause 0x14857; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:44858; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off4859; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off4860; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v24861; GFX1132-DPP-NEXT: s_cbranch_execz .LBB7_34862; GFX1132-DPP-NEXT: ; %bb.1:4863; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)4864; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]4865; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x244866; GFX1132-DPP-NEXT: v_mov_b32_e32 v3, 04867; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)4868; GFX1132-DPP-NEXT: s_load_b32 s3, s[0:1], 0x04869; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)4870; GFX1132-DPP-NEXT: v_cvt_f32_f64_e32 v0, v[0:1]4871; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)4872; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mul_f32 v2, 4.0, v04873; GFX1132-DPP-NEXT: .LBB7_2: ; %atomicrmw.start4874; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=14875; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)4876; GFX1132-DPP-NEXT: v_add_f32_e32 v0, v1, v24877; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc4878; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)4879; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v14880; GFX1132-DPP-NEXT: v_mov_b32_e32 v1, v04881; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s24882; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)4883; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s24884; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB7_24885; GFX1132-DPP-NEXT: .LBB7_3:4886; GFX1132-DPP-NEXT: s_endpgm4887 %result = atomicrmw fadd ptr addrspace(1) %ptr, float 4.0 monotonic, align 44888 ret void4889}4890 4891define amdgpu_kernel void @global_atomic_fadd_uni_address_div_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {4892; GFX7LESS-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:4893; GFX7LESS: ; %bb.0:4894; GFX7LESS-NEXT: s_mov_b32 s32, 04895; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04896; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14897; GFX7LESS-NEXT: s_mov_b32 s38, -14898; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0004899; GFX7LESS-NEXT: s_add_u32 s36, s36, s114900; GFX7LESS-NEXT: s_addc_u32 s37, s37, 04901; GFX7LESS-NEXT: s_mov_b32 s14, s104902; GFX7LESS-NEXT: s_mov_b32 s13, s94903; GFX7LESS-NEXT: s_mov_b32 s12, s84904; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]4905; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]4906; GFX7LESS-NEXT: s_add_u32 s8, s34, 444907; GFX7LESS-NEXT: s_addc_u32 s9, s35, 04908; GFX7LESS-NEXT: s_getpc_b64 s[4:5]4909; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44910; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124911; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04912; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v24913; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v14914; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v14915; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v24916; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]4917; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]4918; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]4919; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]4920; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4921; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]4922; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec4923; GFX7LESS-NEXT: v_bfrev_b32_e32 v2, 14924; GFX7LESS-NEXT: .LBB8_1: ; %ComputeLoop4925; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=14926; GFX7LESS-NEXT: s_ff1_i32_b64 s2, s[0:1]4927; GFX7LESS-NEXT: v_readlane_b32 s4, v0, s24928; GFX7LESS-NEXT: s_lshl_b64 s[2:3], 1, s24929; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]4930; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[2:3], s[0:1], 04931; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[2:3]4932; GFX7LESS-NEXT: v_add_f32_e32 v2, s4, v24933; GFX7LESS-NEXT: s_cbranch_vccnz .LBB8_14934; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd4935; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 04936; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v04937; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v04938; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc4939; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]4940; GFX7LESS-NEXT: s_cbranch_execz .LBB8_54941; GFX7LESS-NEXT: ; %bb.3:4942; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x94943; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0004944; GFX7LESS-NEXT: s_mov_b32 s2, -14945; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)4946; GFX7LESS-NEXT: buffer_load_dword v1, off, s[0:3], 04947; GFX7LESS-NEXT: s_mov_b64 s[4:5], 04948; GFX7LESS-NEXT: .LBB8_4: ; %atomicrmw.start4949; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=14950; GFX7LESS-NEXT: s_waitcnt vmcnt(0)4951; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v24952; GFX7LESS-NEXT: s_waitcnt expcnt(0)4953; GFX7LESS-NEXT: v_mov_b32_e32 v4, v14954; GFX7LESS-NEXT: v_mov_b32_e32 v3, v04955; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc4956; GFX7LESS-NEXT: s_waitcnt vmcnt(0)4957; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v14958; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]4959; GFX7LESS-NEXT: v_mov_b32_e32 v1, v34960; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]4961; GFX7LESS-NEXT: s_cbranch_execnz .LBB8_44962; GFX7LESS-NEXT: .LBB8_5:4963; GFX7LESS-NEXT: s_endpgm4964;4965; GFX9-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:4966; GFX9: ; %bb.0:4967; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD04968; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD14969; GFX9-NEXT: s_mov_b32 s38, -14970; GFX9-NEXT: s_mov_b32 s39, 0xe000004971; GFX9-NEXT: s_add_u32 s36, s36, s114972; GFX9-NEXT: s_addc_u32 s37, s37, 04973; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]4974; GFX9-NEXT: s_mov_b32 s12, s84975; GFX9-NEXT: s_add_u32 s8, s34, 444976; GFX9-NEXT: s_mov_b32 s13, s94977; GFX9-NEXT: s_addc_u32 s9, s35, 04978; GFX9-NEXT: s_getpc_b64 s[4:5]4979; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+44980; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+124981; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x04982; GFX9-NEXT: s_mov_b32 s14, s104983; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]4984; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v24985; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v14986; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]4987; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]4988; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]4989; GFX9-NEXT: v_or3_b32 v31, v0, v1, v24990; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]4991; GFX9-NEXT: s_mov_b32 s32, 04992; GFX9-NEXT: s_waitcnt lgkmcnt(0)4993; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]4994; GFX9-NEXT: s_mov_b64 s[0:1], exec4995; GFX9-NEXT: v_bfrev_b32_e32 v2, 14996; GFX9-NEXT: .LBB8_1: ; %ComputeLoop4997; GFX9-NEXT: ; =>This Inner Loop Header: Depth=14998; GFX9-NEXT: s_ff1_i32_b64 s2, s[0:1]4999; GFX9-NEXT: v_readlane_b32 s4, v0, s25000; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s25001; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]5002; GFX9-NEXT: v_add_f32_e32 v2, s4, v25003; GFX9-NEXT: s_cbranch_scc1 .LBB8_15004; GFX9-NEXT: ; %bb.2: ; %ComputeEnd5005; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05006; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05007; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05008; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc5009; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5010; GFX9-NEXT: s_cbranch_execz .LBB8_55011; GFX9-NEXT: ; %bb.3:5012; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245013; GFX9-NEXT: v_mov_b32_e32 v3, 05014; GFX9-NEXT: s_mov_b64 s[2:3], 05015; GFX9-NEXT: s_waitcnt lgkmcnt(0)5016; GFX9-NEXT: global_load_dword v1, v3, s[0:1]5017; GFX9-NEXT: .LBB8_4: ; %atomicrmw.start5018; GFX9-NEXT: ; =>This Inner Loop Header: Depth=15019; GFX9-NEXT: s_waitcnt vmcnt(0)5020; GFX9-NEXT: v_add_f32_e32 v0, v1, v25021; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5022; GFX9-NEXT: s_waitcnt vmcnt(0)5023; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15024; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5025; GFX9-NEXT: v_mov_b32_e32 v1, v05026; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]5027; GFX9-NEXT: s_cbranch_execnz .LBB8_45028; GFX9-NEXT: .LBB8_5:5029; GFX9-NEXT: s_endpgm5030;5031; GFX1064-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5032; GFX1064: ; %bb.0:5033; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05034; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15035; GFX1064-NEXT: s_mov_b32 s38, -15036; GFX1064-NEXT: s_mov_b32 s39, 0x31e160005037; GFX1064-NEXT: s_add_u32 s36, s36, s115038; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]5039; GFX1064-NEXT: s_addc_u32 s37, s37, 05040; GFX1064-NEXT: s_mov_b32 s12, s85041; GFX1064-NEXT: s_add_u32 s8, s34, 445042; GFX1064-NEXT: s_mov_b32 s13, s95043; GFX1064-NEXT: s_addc_u32 s9, s35, 05044; GFX1064-NEXT: s_getpc_b64 s[4:5]5045; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45046; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125047; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v25048; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05049; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v15050; GFX1064-NEXT: s_mov_b32 s14, s105051; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]5052; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]5053; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]5054; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v25055; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]5056; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]5057; GFX1064-NEXT: s_mov_b32 s32, 05058; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5059; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]5060; GFX1064-NEXT: v_bfrev_b32_e32 v2, 15061; GFX1064-NEXT: s_mov_b64 s[0:1], exec5062; GFX1064-NEXT: .LBB8_1: ; %ComputeLoop5063; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=15064; GFX1064-NEXT: s_ff1_i32_b64 s2, s[0:1]5065; GFX1064-NEXT: v_readlane_b32 s3, v0, s25066; GFX1064-NEXT: v_add_f32_e32 v2, s3, v25067; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s25068; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]5069; GFX1064-NEXT: s_cbranch_scc1 .LBB8_15070; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd5071; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05072; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05073; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05074; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc5075; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5076; GFX1064-NEXT: s_cbranch_execz .LBB8_55077; GFX1064-NEXT: ; %bb.3:5078; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245079; GFX1064-NEXT: v_mov_b32_e32 v3, 05080; GFX1064-NEXT: s_mov_b64 s[2:3], 05081; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5082; GFX1064-NEXT: global_load_dword v1, v3, s[0:1]5083; GFX1064-NEXT: .LBB8_4: ; %atomicrmw.start5084; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=15085; GFX1064-NEXT: s_waitcnt vmcnt(0)5086; GFX1064-NEXT: v_add_f32_e32 v0, v1, v25087; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5088; GFX1064-NEXT: s_waitcnt vmcnt(0)5089; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15090; GFX1064-NEXT: v_mov_b32_e32 v1, v05091; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5092; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]5093; GFX1064-NEXT: s_cbranch_execnz .LBB8_45094; GFX1064-NEXT: .LBB8_5:5095; GFX1064-NEXT: s_endpgm5096;5097; GFX1032-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5098; GFX1032: ; %bb.0:5099; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05100; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15101; GFX1032-NEXT: s_mov_b32 s38, -15102; GFX1032-NEXT: s_mov_b32 s39, 0x31c160005103; GFX1032-NEXT: s_add_u32 s36, s36, s115104; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]5105; GFX1032-NEXT: s_addc_u32 s37, s37, 05106; GFX1032-NEXT: s_mov_b32 s12, s85107; GFX1032-NEXT: s_add_u32 s8, s34, 445108; GFX1032-NEXT: s_mov_b32 s13, s95109; GFX1032-NEXT: s_addc_u32 s9, s35, 05110; GFX1032-NEXT: s_getpc_b64 s[4:5]5111; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45112; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125113; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v25114; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05115; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v15116; GFX1032-NEXT: s_mov_b32 s14, s105117; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]5118; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]5119; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]5120; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v25121; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]5122; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]5123; GFX1032-NEXT: s_mov_b32 s32, 05124; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5125; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]5126; GFX1032-NEXT: v_bfrev_b32_e32 v2, 15127; GFX1032-NEXT: s_mov_b32 s0, exec_lo5128; GFX1032-NEXT: .LBB8_1: ; %ComputeLoop5129; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=15130; GFX1032-NEXT: s_ff1_i32_b32 s1, s05131; GFX1032-NEXT: v_readlane_b32 s2, v0, s15132; GFX1032-NEXT: s_lshl_b32 s1, 1, s15133; GFX1032-NEXT: s_andn2_b32 s0, s0, s15134; GFX1032-NEXT: v_add_f32_e32 v2, s2, v25135; GFX1032-NEXT: s_cbranch_scc1 .LBB8_15136; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd5137; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05138; GFX1032-NEXT: s_mov_b32 s2, 05139; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05140; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo5141; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s05142; GFX1032-NEXT: s_cbranch_execz .LBB8_55143; GFX1032-NEXT: ; %bb.3:5144; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245145; GFX1032-NEXT: v_mov_b32_e32 v3, 05146; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5147; GFX1032-NEXT: global_load_dword v1, v3, s[0:1]5148; GFX1032-NEXT: .LBB8_4: ; %atomicrmw.start5149; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=15150; GFX1032-NEXT: s_waitcnt vmcnt(0)5151; GFX1032-NEXT: v_add_f32_e32 v0, v1, v25152; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc5153; GFX1032-NEXT: s_waitcnt vmcnt(0)5154; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15155; GFX1032-NEXT: v_mov_b32_e32 v1, v05156; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s25157; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s25158; GFX1032-NEXT: s_cbranch_execnz .LBB8_45159; GFX1032-NEXT: .LBB8_5:5160; GFX1032-NEXT: s_endpgm5161;5162; GFX1164-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5163; GFX1164: ; %bb.0:5164; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]5165; GFX1164-NEXT: s_mov_b32 s12, s85166; GFX1164-NEXT: s_add_u32 s8, s34, 445167; GFX1164-NEXT: s_mov_b32 s13, s95168; GFX1164-NEXT: s_addc_u32 s9, s35, 05169; GFX1164-NEXT: s_getpc_b64 s[4:5]5170; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45171; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125172; GFX1164-NEXT: v_mov_b32_e32 v31, v05173; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x05174; GFX1164-NEXT: s_mov_b32 s14, s105175; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]5176; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]5177; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]5178; GFX1164-NEXT: s_mov_b32 s32, 05179; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5180; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]5181; GFX1164-NEXT: v_bfrev_b32_e32 v2, 15182; GFX1164-NEXT: s_mov_b64 s[0:1], exec5183; GFX1164-NEXT: .LBB8_1: ; %ComputeLoop5184; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=15185; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)5186; GFX1164-NEXT: s_ctz_i32_b64 s2, s[0:1]5187; GFX1164-NEXT: v_readlane_b32 s3, v0, s25188; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5189; GFX1164-NEXT: v_add_f32_e32 v2, s3, v25190; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s25191; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]5192; GFX1164-NEXT: s_cbranch_scc1 .LBB8_15193; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd5194; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05195; GFX1164-NEXT: s_mov_b64 s[0:1], exec5196; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5197; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05198; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v05199; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]5200; GFX1164-NEXT: s_cbranch_execz .LBB8_55201; GFX1164-NEXT: ; %bb.3:5202; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x245203; GFX1164-NEXT: v_mov_b32_e32 v3, 05204; GFX1164-NEXT: s_mov_b64 s[2:3], 05205; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5206; GFX1164-NEXT: global_load_b32 v1, v3, s[0:1]5207; GFX1164-NEXT: .LBB8_4: ; %atomicrmw.start5208; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=15209; GFX1164-NEXT: s_waitcnt vmcnt(0)5210; GFX1164-NEXT: v_add_f32_e32 v0, v1, v25211; GFX1164-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc5212; GFX1164-NEXT: s_waitcnt vmcnt(0)5213; GFX1164-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15214; GFX1164-NEXT: v_mov_b32_e32 v1, v05215; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5216; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5217; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]5218; GFX1164-NEXT: s_cbranch_execnz .LBB8_45219; GFX1164-NEXT: .LBB8_5:5220; GFX1164-NEXT: s_endpgm5221;5222; GFX1132-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5223; GFX1132: ; %bb.0:5224; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]5225; GFX1132-NEXT: v_mov_b32_e32 v31, v05226; GFX1132-NEXT: s_add_u32 s8, s34, 445227; GFX1132-NEXT: s_addc_u32 s9, s35, 05228; GFX1132-NEXT: s_getpc_b64 s[4:5]5229; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45230; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125231; GFX1132-NEXT: s_mov_b32 s12, s135232; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x05233; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]5234; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]5235; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]5236; GFX1132-NEXT: s_mov_b32 s13, s145237; GFX1132-NEXT: s_mov_b32 s14, s155238; GFX1132-NEXT: s_mov_b32 s32, 05239; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5240; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]5241; GFX1132-NEXT: v_bfrev_b32_e32 v2, 15242; GFX1132-NEXT: s_mov_b32 s0, exec_lo5243; GFX1132-NEXT: .LBB8_1: ; %ComputeLoop5244; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=15245; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)5246; GFX1132-NEXT: s_ctz_i32_b32 s1, s05247; GFX1132-NEXT: v_readlane_b32 s2, v0, s15248; GFX1132-NEXT: s_lshl_b32 s1, 1, s15249; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5250; GFX1132-NEXT: s_and_not1_b32 s0, s0, s15251; GFX1132-NEXT: v_add_f32_e32 v2, s2, v25252; GFX1132-NEXT: s_cbranch_scc1 .LBB8_15253; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd5254; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05255; GFX1132-NEXT: s_mov_b32 s2, 05256; GFX1132-NEXT: s_mov_b32 s0, exec_lo5257; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5258; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v05259; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s05260; GFX1132-NEXT: s_cbranch_execz .LBB8_55261; GFX1132-NEXT: ; %bb.3:5262; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x245263; GFX1132-NEXT: v_mov_b32_e32 v3, 05264; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5265; GFX1132-NEXT: global_load_b32 v1, v3, s[0:1]5266; GFX1132-NEXT: .LBB8_4: ; %atomicrmw.start5267; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=15268; GFX1132-NEXT: s_waitcnt vmcnt(0)5269; GFX1132-NEXT: v_add_f32_e32 v0, v1, v25270; GFX1132-NEXT: global_atomic_cmpswap_b32 v0, v3, v[0:1], s[0:1] glc5271; GFX1132-NEXT: s_waitcnt vmcnt(0)5272; GFX1132-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15273; GFX1132-NEXT: v_mov_b32_e32 v1, v05274; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s25275; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5276; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s25277; GFX1132-NEXT: s_cbranch_execnz .LBB8_45278; GFX1132-NEXT: .LBB8_5:5279; GFX1132-NEXT: s_endpgm5280;5281; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5282; GFX7LESS-DPP: ; %bb.0:5283; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 05284; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD05285; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD15286; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -15287; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0005288; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s115289; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 05290; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s105291; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s95292; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s85293; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5294; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x95295; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0005296; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -15297; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 445298; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 05299; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]5300; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45301; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125302; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05303; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25304; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15305; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v15306; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v25307; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5308; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5309; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]5310; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]5311; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)5312; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5313; GFX7LESS-DPP-NEXT: buffer_load_dword v2, off, s[36:39], 05314; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 05315; GFX7LESS-DPP-NEXT: .LBB8_1: ; %atomicrmw.start5316; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=15317; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)5318; GFX7LESS-DPP-NEXT: v_add_f32_e32 v1, v2, v05319; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)5320; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v25321; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v15322; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[36:39], 0 glc5323; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)5324; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v25325; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]5326; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v35327; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]5328; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB8_15329; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end5330; GFX7LESS-DPP-NEXT: s_endpgm5331;5332; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5333; GFX9-DPP: ; %bb.0:5334; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05335; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15336; GFX9-DPP-NEXT: s_mov_b32 s38, -15337; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000005338; GFX9-DPP-NEXT: s_add_u32 s36, s36, s115339; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 05340; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5341; GFX9-DPP-NEXT: s_mov_b32 s12, s85342; GFX9-DPP-NEXT: s_add_u32 s8, s34, 445343; GFX9-DPP-NEXT: s_mov_b32 s13, s95344; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 05345; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]5346; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45347; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125348; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05349; GFX9-DPP-NEXT: s_mov_b32 s14, s105350; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5351; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25352; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15353; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5354; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5355; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]5356; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v25357; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]5358; GFX9-DPP-NEXT: s_mov_b32 s32, 05359; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5360; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5361; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 05362; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v15363; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15364; GFX9-DPP-NEXT: v_bfrev_b32_e32 v3, 15365; GFX9-DPP-NEXT: v_cndmask_b32_e64 v4, v3, v0, s[0:1]5366; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15367; GFX9-DPP-NEXT: s_nop 15368; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:1 row_mask:0xf bank_mask:0xf5369; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55370; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15371; GFX9-DPP-NEXT: s_nop 15372; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:2 row_mask:0xf bank_mask:0xf5373; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55374; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15375; GFX9-DPP-NEXT: s_nop 15376; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:4 row_mask:0xf bank_mask:0xf5377; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55378; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15379; GFX9-DPP-NEXT: s_nop 15380; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_shr:8 row_mask:0xf bank_mask:0xf5381; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55382; GFX9-DPP-NEXT: v_bfrev_b32_e32 v5, 15383; GFX9-DPP-NEXT: s_nop 15384; GFX9-DPP-NEXT: v_mov_b32_dpp v5, v4 row_bcast:15 row_mask:0xa bank_mask:0xf5385; GFX9-DPP-NEXT: v_add_f32_e32 v4, v4, v55386; GFX9-DPP-NEXT: s_nop 15387; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v4 row_bcast:31 row_mask:0xc bank_mask:0xf5388; GFX9-DPP-NEXT: v_add_f32_e32 v3, v4, v35389; GFX9-DPP-NEXT: v_readlane_b32 s4, v3, 635390; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]5391; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v15392; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5393; GFX9-DPP-NEXT: s_cbranch_execz .LBB8_35394; GFX9-DPP-NEXT: ; %bb.1:5395; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245396; GFX9-DPP-NEXT: v_mov_b32_e32 v2, 05397; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 05398; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5399; GFX9-DPP-NEXT: global_load_dword v1, v2, s[0:1]5400; GFX9-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5401; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=15402; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)5403; GFX9-DPP-NEXT: v_add_f32_e32 v0, s4, v15404; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v2, v[0:1], s[0:1] glc5405; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)5406; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15407; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5408; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v05409; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5410; GFX9-DPP-NEXT: s_cbranch_execnz .LBB8_25411; GFX9-DPP-NEXT: .LBB8_3:5412; GFX9-DPP-NEXT: s_endpgm5413;5414; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5415; GFX1064-DPP: ; %bb.0:5416; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05417; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15418; GFX1064-DPP-NEXT: s_mov_b32 s38, -15419; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160005420; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s115421; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5422; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 05423; GFX1064-DPP-NEXT: s_mov_b32 s12, s85424; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 445425; GFX1064-DPP-NEXT: s_mov_b32 s13, s95426; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 05427; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]5428; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45429; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125430; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25431; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05432; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15433; GFX1064-DPP-NEXT: s_mov_b32 s14, s105434; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5435; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5436; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5437; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v25438; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]5439; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]5440; GFX1064-DPP-NEXT: s_mov_b32 s32, 05441; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)5442; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5443; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15444; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v3, 15445; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s[0:1]5446; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 15447; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf5448; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v4, v35449; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 15450; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf5451; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v55452; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v5, 15453; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf5454; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v45455; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf5456; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v55457; GFX1064-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 05458; GFX1064-DPP-NEXT: v_add_f32_e32 v3, v3, v45459; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 05460; GFX1064-DPP-NEXT: v_readlane_b32 s3, v3, 325461; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]5462; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05463; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15464; GFX1064-DPP-NEXT: v_add_f32_e64 v3, s2, s35465; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]5466; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v05467; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v35468; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05469; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5470; GFX1064-DPP-NEXT: s_cbranch_execz .LBB8_35471; GFX1064-DPP-NEXT: ; %bb.1:5472; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245473; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 05474; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 05475; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)5476; GFX1064-DPP-NEXT: global_load_dword v1, v6, s[0:1]5477; GFX1064-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5478; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=15479; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)5480; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v25481; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc5482; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)5483; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v15484; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v05485; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5486; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5487; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB8_25488; GFX1064-DPP-NEXT: .LBB8_3:5489; GFX1064-DPP-NEXT: s_endpgm5490;5491; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5492; GFX1032-DPP: ; %bb.0:5493; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD05494; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD15495; GFX1032-DPP-NEXT: s_mov_b32 s38, -15496; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160005497; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s115498; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5499; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 05500; GFX1032-DPP-NEXT: s_mov_b32 s12, s85501; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 445502; GFX1032-DPP-NEXT: s_mov_b32 s13, s95503; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 05504; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]5505; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45506; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125507; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v25508; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x05509; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v15510; GFX1032-DPP-NEXT: s_mov_b32 s14, s105511; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5512; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5513; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5514; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v25515; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]5516; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]5517; GFX1032-DPP-NEXT: s_mov_b32 s32, 05518; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)5519; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5520; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -15521; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v3, 15522; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v4, 0x80000000, v0, s05523; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 15524; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v4 row_xmask:1 row_mask:0xf bank_mask:0xf5525; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v4, v35526; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 15527; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf5528; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v55529; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v5, 15530; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v3 row_xmask:4 row_mask:0xf bank_mask:0xf5531; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v45532; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf5533; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v55534; GFX1032-DPP-NEXT: v_permlanex16_b32 v4, v3, 0, 05535; GFX1032-DPP-NEXT: v_add_f32_e32 v3, v3, v45536; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s05537; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05538; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v35539; GFX1032-DPP-NEXT: s_mov_b32 s2, 05540; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05541; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo5542; GFX1032-DPP-NEXT: s_cbranch_execz .LBB8_35543; GFX1032-DPP-NEXT: ; %bb.1:5544; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x245545; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 05546; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)5547; GFX1032-DPP-NEXT: global_load_dword v1, v6, s[0:1]5548; GFX1032-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5549; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=15550; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)5551; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v25552; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v6, v[0:1], s[0:1] glc5553; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)5554; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v15555; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v05556; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s25557; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s25558; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB8_25559; GFX1032-DPP-NEXT: .LBB8_3:5560; GFX1032-DPP-NEXT: s_endpgm5561;5562; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5563; GFX1164-DPP: ; %bb.0:5564; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5565; GFX1164-DPP-NEXT: s_mov_b32 s12, s85566; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 445567; GFX1164-DPP-NEXT: s_mov_b32 s13, s95568; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 05569; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]5570; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45571; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125572; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v05573; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x05574; GFX1164-DPP-NEXT: s_mov_b32 s14, s105575; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5576; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5577; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5578; GFX1164-DPP-NEXT: s_mov_b32 s32, 05579; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)5580; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5581; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15582; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v1, 15583; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s[0:1]5584; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 15585; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5586; GFX1164-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf5587; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v2, v15588; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v2, 15589; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5590; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf5591; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v35592; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 15593; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5594; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf5595; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v25596; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5597; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf5598; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v35599; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5600; GFX1164-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 05601; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v25602; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5603; GFX1164-DPP-NEXT: v_permlane64_b32 v2, v15604; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]5605; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 05606; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -15607; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)5608; GFX1164-DPP-NEXT: v_add_f32_e32 v1, v1, v25609; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]5610; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)5611; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v4, exec_hi, v05612; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v15613; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec5614; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)5615; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v45616; GFX1164-DPP-NEXT: s_cbranch_execz .LBB8_35617; GFX1164-DPP-NEXT: ; %bb.1:5618; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x245619; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 05620; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 05621; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)5622; GFX1164-DPP-NEXT: global_load_b32 v5, v6, s[0:1]5623; GFX1164-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5624; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=15625; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)5626; GFX1164-DPP-NEXT: v_add_f32_e32 v4, v5, v05627; GFX1164-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc5628; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)5629; GFX1164-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v55630; GFX1164-DPP-NEXT: v_mov_b32_e32 v5, v45631; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5632; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5633; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]5634; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB8_25635; GFX1164-DPP-NEXT: .LBB8_3:5636; GFX1164-DPP-NEXT: s_endpgm5637;5638; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_div_value_default_scope_strictfp:5639; GFX1132-DPP: ; %bb.0:5640; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]5641; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v05642; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 445643; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 05644; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]5645; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+45646; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+125647; GFX1132-DPP-NEXT: s_mov_b32 s12, s135648; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x05649; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]5650; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]5651; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]5652; GFX1132-DPP-NEXT: s_mov_b32 s13, s145653; GFX1132-DPP-NEXT: s_mov_b32 s14, s155654; GFX1132-DPP-NEXT: s_mov_b32 s32, 05655; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)5656; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]5657; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -15658; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v1, 15659; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v2, 0x80000000, v0, s05660; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 15661; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5662; GFX1132-DPP-NEXT: v_mov_b32_dpp v1, v2 row_xmask:1 row_mask:0xf bank_mask:0xf5663; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v2, v15664; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v2, 15665; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5666; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:2 row_mask:0xf bank_mask:0xf5667; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v35668; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 15669; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5670; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v1 row_xmask:4 row_mask:0xf bank_mask:0xf5671; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v25672; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5673; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v1 row_xmask:8 row_mask:0xf bank_mask:0xf5674; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v35675; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5676; GFX1132-DPP-NEXT: v_permlanex16_b32 v2, v1, 0, 05677; GFX1132-DPP-NEXT: v_add_f32_e32 v1, v1, v25678; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s05679; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)5680; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v4, exec_lo, 05681; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v15682; GFX1132-DPP-NEXT: s_mov_b32 s2, 05683; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo5684; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)5685; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v45686; GFX1132-DPP-NEXT: s_cbranch_execz .LBB8_35687; GFX1132-DPP-NEXT: ; %bb.1:5688; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x245689; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 05690; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)5691; GFX1132-DPP-NEXT: global_load_b32 v5, v6, s[0:1]5692; GFX1132-DPP-NEXT: .LBB8_2: ; %atomicrmw.start5693; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=15694; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)5695; GFX1132-DPP-NEXT: v_add_f32_e32 v4, v5, v05696; GFX1132-DPP-NEXT: global_atomic_cmpswap_b32 v4, v6, v[4:5], s[0:1] glc5697; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)5698; GFX1132-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v4, v55699; GFX1132-DPP-NEXT: v_mov_b32_e32 v5, v45700; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s25701; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5702; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s25703; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB8_25704; GFX1132-DPP-NEXT: .LBB8_3:5705; GFX1132-DPP-NEXT: s_endpgm5706 %divValue = call float @div.float.value() strictfp5707 %result = atomicrmw fadd ptr addrspace(1) %ptr, float %divValue monotonic, align 45708 ret void5709}5710 5711define amdgpu_kernel void @global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {5712; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5713; GFX7LESS: ; %bb.0:5714; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec5715; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 05716; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v05717; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05718; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc5719; GFX7LESS-NEXT: s_cbranch_execz .LBB9_35720; GFX7LESS-NEXT: ; %bb.1:5721; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x95722; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]5723; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5724; GFX7LESS-NEXT: s_load_dwordx2 s[6:7], s[0:1], 0x05725; GFX7LESS-NEXT: s_mov_b64 s[4:5], 05726; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0005727; GFX7LESS-NEXT: v_cvt_f64_u32_e32 v[0:1], s25728; GFX7LESS-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05729; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)5730; GFX7LESS-NEXT: v_mov_b32_e32 v2, s65731; GFX7LESS-NEXT: v_mov_b32_e32 v3, s75732; GFX7LESS-NEXT: s_mov_b32 s2, -15733; GFX7LESS-NEXT: .LBB9_2: ; %atomicrmw.start5734; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=15735; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5736; GFX7LESS-NEXT: s_waitcnt expcnt(0)5737; GFX7LESS-NEXT: v_mov_b32_e32 v9, v35738; GFX7LESS-NEXT: v_mov_b32_e32 v8, v25739; GFX7LESS-NEXT: v_mov_b32_e32 v7, v15740; GFX7LESS-NEXT: v_mov_b32_e32 v6, v05741; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc5742; GFX7LESS-NEXT: s_waitcnt vmcnt(0)5743; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]5744; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]5745; GFX7LESS-NEXT: v_mov_b32_e32 v2, v65746; GFX7LESS-NEXT: v_mov_b32_e32 v3, v75747; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]5748; GFX7LESS-NEXT: s_cbranch_execnz .LBB9_25749; GFX7LESS-NEXT: .LBB9_3:5750; GFX7LESS-NEXT: s_endpgm5751;5752; GFX9-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5753; GFX9: ; %bb.0:5754; GFX9-NEXT: s_mov_b64 s[2:3], exec5755; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 05756; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v05757; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05758; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc5759; GFX9-NEXT: s_cbranch_execz .LBB9_35760; GFX9-NEXT: ; %bb.1:5761; GFX9-NEXT: s_bcnt1_i32_b64 s2, s[2:3]5762; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245763; GFX9-NEXT: v_cvt_f64_u32_e32 v[0:1], s25764; GFX9-NEXT: s_mov_b64 s[2:3], 05765; GFX9-NEXT: v_mov_b32_e32 v6, 05766; GFX9-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05767; GFX9-NEXT: s_waitcnt lgkmcnt(0)5768; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x05769; GFX9-NEXT: s_waitcnt lgkmcnt(0)5770; GFX9-NEXT: v_mov_b32_e32 v2, s45771; GFX9-NEXT: v_mov_b32_e32 v3, s55772; GFX9-NEXT: .LBB9_2: ; %atomicrmw.start5773; GFX9-NEXT: ; =>This Inner Loop Header: Depth=15774; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5775; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc5776; GFX9-NEXT: s_waitcnt vmcnt(0)5777; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]5778; GFX9-NEXT: v_mov_b32_e32 v3, v15779; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5780; GFX9-NEXT: v_mov_b32_e32 v2, v05781; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]5782; GFX9-NEXT: s_cbranch_execnz .LBB9_25783; GFX9-NEXT: .LBB9_3:5784; GFX9-NEXT: s_endpgm5785;5786; GFX1064-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5787; GFX1064: ; %bb.0:5788; GFX1064-NEXT: s_mov_b64 s[2:3], exec5789; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 05790; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v05791; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05792; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc5793; GFX1064-NEXT: s_cbranch_execz .LBB9_35794; GFX1064-NEXT: ; %bb.1:5795; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245796; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]5797; GFX1064-NEXT: v_mov_b32_e32 v6, 05798; GFX1064-NEXT: v_cvt_f64_u32_e32 v[0:1], s25799; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5800; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x05801; GFX1064-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05802; GFX1064-NEXT: s_waitcnt lgkmcnt(0)5803; GFX1064-NEXT: v_mov_b32_e32 v2, s25804; GFX1064-NEXT: v_mov_b32_e32 v3, s35805; GFX1064-NEXT: s_mov_b64 s[2:3], 05806; GFX1064-NEXT: .LBB9_2: ; %atomicrmw.start5807; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=15808; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5809; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc5810; GFX1064-NEXT: s_waitcnt vmcnt(0)5811; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]5812; GFX1064-NEXT: v_mov_b32_e32 v3, v15813; GFX1064-NEXT: v_mov_b32_e32 v2, v05814; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5815; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]5816; GFX1064-NEXT: s_cbranch_execnz .LBB9_25817; GFX1064-NEXT: .LBB9_3:5818; GFX1064-NEXT: s_endpgm5819;5820; GFX1032-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5821; GFX1032: ; %bb.0:5822; GFX1032-NEXT: s_mov_b32 s3, exec_lo5823; GFX1032-NEXT: s_mov_b32 s2, 05824; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 05825; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v05826; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo5827; GFX1032-NEXT: s_cbranch_execz .LBB9_35828; GFX1032-NEXT: ; %bb.1:5829; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245830; GFX1032-NEXT: s_bcnt1_i32_b32 s3, s35831; GFX1032-NEXT: v_mov_b32_e32 v6, 05832; GFX1032-NEXT: v_cvt_f64_u32_e32 v[0:1], s35833; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5834; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x05835; GFX1032-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05836; GFX1032-NEXT: s_waitcnt lgkmcnt(0)5837; GFX1032-NEXT: v_mov_b32_e32 v2, s45838; GFX1032-NEXT: v_mov_b32_e32 v3, s55839; GFX1032-NEXT: .LBB9_2: ; %atomicrmw.start5840; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=15841; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5842; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc5843; GFX1032-NEXT: s_waitcnt vmcnt(0)5844; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]5845; GFX1032-NEXT: v_mov_b32_e32 v3, v15846; GFX1032-NEXT: v_mov_b32_e32 v2, v05847; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s25848; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s25849; GFX1032-NEXT: s_cbranch_execnz .LBB9_25850; GFX1032-NEXT: .LBB9_3:5851; GFX1032-NEXT: s_endpgm5852;5853; GFX1164-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5854; GFX1164: ; %bb.0:5855; GFX1164-NEXT: s_mov_b64 s[0:1], exec5856; GFX1164-NEXT: s_mov_b64 s[2:3], exec5857; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 05858; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5859; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v05860; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v05861; GFX1164-NEXT: s_cbranch_execz .LBB9_35862; GFX1164-NEXT: ; %bb.1:5863; GFX1164-NEXT: s_bcnt1_i32_b64 s0, s[0:1]5864; GFX1164-NEXT: v_mov_b32_e32 v6, 05865; GFX1164-NEXT: v_cvt_f64_u32_e32 v[0:1], s05866; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x245867; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5868; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x05869; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)5870; GFX1164-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05871; GFX1164-NEXT: s_waitcnt lgkmcnt(0)5872; GFX1164-NEXT: v_mov_b32_e32 v2, s25873; GFX1164-NEXT: v_mov_b32_e32 v3, s35874; GFX1164-NEXT: s_mov_b64 s[2:3], 05875; GFX1164-NEXT: .LBB9_2: ; %atomicrmw.start5876; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=15877; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)5878; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5879; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc5880; GFX1164-NEXT: s_waitcnt vmcnt(0)5881; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]5882; GFX1164-NEXT: v_mov_b32_e32 v3, v15883; GFX1164-NEXT: v_mov_b32_e32 v2, v05884; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5885; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5886; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]5887; GFX1164-NEXT: s_cbranch_execnz .LBB9_25888; GFX1164-NEXT: .LBB9_3:5889; GFX1164-NEXT: s_endpgm5890;5891; GFX1132-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5892; GFX1132: ; %bb.0:5893; GFX1132-NEXT: s_mov_b32 s0, exec_lo5894; GFX1132-NEXT: s_mov_b32 s2, 05895; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 05896; GFX1132-NEXT: s_mov_b32 s1, exec_lo5897; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5898; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v05899; GFX1132-NEXT: s_cbranch_execz .LBB9_35900; GFX1132-NEXT: ; %bb.1:5901; GFX1132-NEXT: s_bcnt1_i32_b32 s0, s05902; GFX1132-NEXT: v_mov_b32_e32 v6, 05903; GFX1132-NEXT: v_cvt_f64_u32_e32 v[0:1], s05904; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x245905; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5906; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x05907; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5908; GFX1132-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05909; GFX1132-NEXT: s_waitcnt lgkmcnt(0)5910; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s55911; GFX1132-NEXT: .LBB9_2: ; %atomicrmw.start5912; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=15913; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)5914; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5915; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc5916; GFX1132-NEXT: s_waitcnt vmcnt(0)5917; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]5918; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v05919; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s25920; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)5921; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s25922; GFX1132-NEXT: s_cbranch_execnz .LBB9_25923; GFX1132-NEXT: .LBB9_3:5924; GFX1132-NEXT: s_endpgm5925;5926; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5927; GFX7LESS-DPP: ; %bb.0:5928; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec5929; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 05930; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v05931; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05932; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5933; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB9_35934; GFX7LESS-DPP-NEXT: ; %bb.1:5935; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x95936; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]5937; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)5938; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[6:7], s[0:1], 0x05939; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 05940; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0005941; GFX7LESS-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s25942; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05943; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)5944; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s65945; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s75946; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -15947; GFX7LESS-DPP-NEXT: .LBB9_2: ; %atomicrmw.start5948; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=15949; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5950; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)5951; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v35952; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v25953; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v15954; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v05955; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc5956; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)5957; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]5958; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]5959; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v65960; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v75961; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]5962; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB9_25963; GFX7LESS-DPP-NEXT: .LBB9_3:5964; GFX7LESS-DPP-NEXT: s_endpgm5965;5966; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:5967; GFX9-DPP: ; %bb.0:5968; GFX9-DPP-NEXT: s_mov_b64 s[2:3], exec5969; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 05970; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v05971; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v05972; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc5973; GFX9-DPP-NEXT: s_cbranch_execz .LBB9_35974; GFX9-DPP-NEXT: ; %bb.1:5975; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]5976; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245977; GFX9-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s25978; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 05979; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 05980; GFX9-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.05981; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5982; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x05983; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)5984; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s45985; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s55986; GFX9-DPP-NEXT: .LBB9_2: ; %atomicrmw.start5987; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=15988; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]5989; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc5990; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)5991; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]5992; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v15993; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]5994; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v05995; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]5996; GFX9-DPP-NEXT: s_cbranch_execnz .LBB9_25997; GFX9-DPP-NEXT: .LBB9_3:5998; GFX9-DPP-NEXT: s_endpgm5999;6000; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:6001; GFX1064-DPP: ; %bb.0:6002; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], exec6003; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 06004; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v06005; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06006; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6007; GFX1064-DPP-NEXT: s_cbranch_execz .LBB9_36008; GFX1064-DPP-NEXT: ; %bb.1:6009; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246010; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]6011; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 06012; GFX1064-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s26013; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)6014; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x06015; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06016; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)6017; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s26018; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s36019; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 06020; GFX1064-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6021; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=16022; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6023; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6024; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)6025; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6026; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v16027; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v06028; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6029; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]6030; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB9_26031; GFX1064-DPP-NEXT: .LBB9_3:6032; GFX1064-DPP-NEXT: s_endpgm6033;6034; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:6035; GFX1032-DPP: ; %bb.0:6036; GFX1032-DPP-NEXT: s_mov_b32 s3, exec_lo6037; GFX1032-DPP-NEXT: s_mov_b32 s2, 06038; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 06039; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06040; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo6041; GFX1032-DPP-NEXT: s_cbranch_execz .LBB9_36042; GFX1032-DPP-NEXT: ; %bb.1:6043; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246044; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s3, s36045; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 06046; GFX1032-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s36047; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)6048; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x06049; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06050; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)6051; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s46052; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s56053; GFX1032-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6054; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=16055; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6056; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6057; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)6058; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6059; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v16060; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v06061; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s26062; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s26063; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB9_26064; GFX1032-DPP-NEXT: .LBB9_3:6065; GFX1032-DPP-NEXT: s_endpgm6066;6067; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:6068; GFX1164-DPP: ; %bb.0:6069; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec6070; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], exec6071; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 06072; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6073; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v06074; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v06075; GFX1164-DPP-NEXT: s_cbranch_execz .LBB9_36076; GFX1164-DPP-NEXT: ; %bb.1:6077; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]6078; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 06079; GFX1164-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s06080; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246081; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)6082; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x06083; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6084; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06085; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)6086; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s26087; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s36088; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 06089; GFX1164-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6090; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=16091; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6092; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6093; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6094; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)6095; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6096; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v16097; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v06098; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6099; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6100; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]6101; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB9_26102; GFX1164-DPP-NEXT: .LBB9_3:6103; GFX1164-DPP-NEXT: s_endpgm6104;6105; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_unsafe:6106; GFX1132-DPP: ; %bb.0:6107; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo6108; GFX1132-DPP-NEXT: s_mov_b32 s2, 06109; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 06110; GFX1132-DPP-NEXT: s_mov_b32 s1, exec_lo6111; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6112; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v06113; GFX1132-DPP-NEXT: s_cbranch_execz .LBB9_36114; GFX1132-DPP-NEXT: ; %bb.1:6115; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, s06116; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 06117; GFX1132-DPP-NEXT: v_cvt_f64_u32_e32 v[0:1], s06118; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x246119; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)6120; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x06121; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6122; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], v[0:1], 4.06123; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)6124; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s56125; GFX1132-DPP-NEXT: .LBB9_2: ; %atomicrmw.start6126; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=16127; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)6128; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6129; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6130; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)6131; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6132; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v06133; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s26134; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6135; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s26136; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB9_26137; GFX1132-DPP-NEXT: .LBB9_3:6138; GFX1132-DPP-NEXT: s_endpgm6139 %result = atomicrmw fadd ptr addrspace(1) %ptr, double 4.0 syncscope("agent") monotonic, align 8, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !16140 ret void6141}6142 6143define amdgpu_kernel void @global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe(ptr addrspace(1) %ptr) #0 {6144; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6145; GFX7LESS: ; %bb.0:6146; GFX7LESS-NEXT: s_mov_b32 s32, 06147; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06148; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16149; GFX7LESS-NEXT: s_mov_b32 s38, -16150; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0006151; GFX7LESS-NEXT: s_add_u32 s36, s36, s116152; GFX7LESS-NEXT: s_addc_u32 s37, s37, 06153; GFX7LESS-NEXT: s_mov_b32 s14, s106154; GFX7LESS-NEXT: s_mov_b32 s13, s96155; GFX7LESS-NEXT: s_mov_b32 s12, s86156; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]6157; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]6158; GFX7LESS-NEXT: s_add_u32 s8, s34, 446159; GFX7LESS-NEXT: s_addc_u32 s9, s35, 06160; GFX7LESS-NEXT: s_getpc_b64 s[4:5]6161; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46162; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126163; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06164; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v26165; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v16166; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v16167; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v26168; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]6169; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]6170; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]6171; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]6172; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)6173; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]6174; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec6175; GFX7LESS-NEXT: v_mov_b32_e32 v4, 06176; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 16177; GFX7LESS-NEXT: .LBB10_1: ; %ComputeLoop6178; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=16179; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]6180; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s46181; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s46182; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s46183; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]6184; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 06185; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]6186; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6187; GFX7LESS-NEXT: s_cbranch_vccnz .LBB10_16188; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd6189; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 06190; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v06191; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06192; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc6193; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6194; GFX7LESS-NEXT: s_cbranch_execz .LBB10_56195; GFX7LESS-NEXT: ; %bb.3:6196; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x96197; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0006198; GFX7LESS-NEXT: s_mov_b32 s2, -16199; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)6200; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 06201; GFX7LESS-NEXT: s_mov_b64 s[4:5], 06202; GFX7LESS-NEXT: .LBB10_4: ; %atomicrmw.start6203; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=16204; GFX7LESS-NEXT: s_waitcnt vmcnt(0)6205; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6206; GFX7LESS-NEXT: s_waitcnt expcnt(0)6207; GFX7LESS-NEXT: v_mov_b32_e32 v9, v36208; GFX7LESS-NEXT: v_mov_b32_e32 v8, v26209; GFX7LESS-NEXT: v_mov_b32_e32 v7, v16210; GFX7LESS-NEXT: v_mov_b32_e32 v6, v06211; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc6212; GFX7LESS-NEXT: s_waitcnt vmcnt(0)6213; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]6214; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]6215; GFX7LESS-NEXT: v_mov_b32_e32 v2, v66216; GFX7LESS-NEXT: v_mov_b32_e32 v3, v76217; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]6218; GFX7LESS-NEXT: s_cbranch_execnz .LBB10_46219; GFX7LESS-NEXT: .LBB10_5:6220; GFX7LESS-NEXT: s_endpgm6221;6222; GFX9-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6223; GFX9: ; %bb.0:6224; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06225; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16226; GFX9-NEXT: s_mov_b32 s38, -16227; GFX9-NEXT: s_mov_b32 s39, 0xe000006228; GFX9-NEXT: s_add_u32 s36, s36, s116229; GFX9-NEXT: s_addc_u32 s37, s37, 06230; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]6231; GFX9-NEXT: s_mov_b32 s12, s86232; GFX9-NEXT: s_add_u32 s8, s34, 446233; GFX9-NEXT: s_mov_b32 s13, s96234; GFX9-NEXT: s_addc_u32 s9, s35, 06235; GFX9-NEXT: s_getpc_b64 s[4:5]6236; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46237; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126238; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06239; GFX9-NEXT: s_mov_b32 s14, s106240; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]6241; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v26242; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v16243; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]6244; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]6245; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]6246; GFX9-NEXT: v_or3_b32 v31, v0, v1, v26247; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]6248; GFX9-NEXT: s_mov_b32 s32, 06249; GFX9-NEXT: s_waitcnt lgkmcnt(0)6250; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]6251; GFX9-NEXT: v_mov_b32_e32 v4, 06252; GFX9-NEXT: s_mov_b64 s[0:1], exec6253; GFX9-NEXT: v_bfrev_b32_e32 v5, 16254; GFX9-NEXT: .LBB10_1: ; %ComputeLoop6255; GFX9-NEXT: ; =>This Inner Loop Header: Depth=16256; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]6257; GFX9-NEXT: v_readlane_b32 s3, v1, s46258; GFX9-NEXT: v_readlane_b32 s2, v0, s46259; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6260; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s46261; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]6262; GFX9-NEXT: s_cbranch_scc1 .LBB10_16263; GFX9-NEXT: ; %bb.2: ; %ComputeEnd6264; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06265; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06266; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06267; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc6268; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6269; GFX9-NEXT: s_cbranch_execz .LBB10_56270; GFX9-NEXT: ; %bb.3:6271; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246272; GFX9-NEXT: v_mov_b32_e32 v6, 06273; GFX9-NEXT: s_mov_b64 s[2:3], 06274; GFX9-NEXT: s_waitcnt lgkmcnt(0)6275; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]6276; GFX9-NEXT: .LBB10_4: ; %atomicrmw.start6277; GFX9-NEXT: ; =>This Inner Loop Header: Depth=16278; GFX9-NEXT: s_waitcnt vmcnt(0)6279; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6280; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6281; GFX9-NEXT: s_waitcnt vmcnt(0)6282; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6283; GFX9-NEXT: v_mov_b32_e32 v3, v16284; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6285; GFX9-NEXT: v_mov_b32_e32 v2, v06286; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]6287; GFX9-NEXT: s_cbranch_execnz .LBB10_46288; GFX9-NEXT: .LBB10_5:6289; GFX9-NEXT: s_endpgm6290;6291; GFX1064-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6292; GFX1064: ; %bb.0:6293; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06294; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16295; GFX1064-NEXT: s_mov_b32 s38, -16296; GFX1064-NEXT: s_mov_b32 s39, 0x31e160006297; GFX1064-NEXT: s_add_u32 s36, s36, s116298; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]6299; GFX1064-NEXT: s_addc_u32 s37, s37, 06300; GFX1064-NEXT: s_mov_b32 s12, s86301; GFX1064-NEXT: s_add_u32 s8, s34, 446302; GFX1064-NEXT: s_mov_b32 s13, s96303; GFX1064-NEXT: s_addc_u32 s9, s35, 06304; GFX1064-NEXT: s_getpc_b64 s[4:5]6305; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46306; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126307; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v26308; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06309; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v16310; GFX1064-NEXT: s_mov_b32 s14, s106311; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]6312; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]6313; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]6314; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v26315; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]6316; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]6317; GFX1064-NEXT: s_mov_b32 s32, 06318; GFX1064-NEXT: s_waitcnt lgkmcnt(0)6319; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]6320; GFX1064-NEXT: v_mov_b32_e32 v4, 06321; GFX1064-NEXT: v_bfrev_b32_e32 v5, 16322; GFX1064-NEXT: s_mov_b64 s[0:1], exec6323; GFX1064-NEXT: .LBB10_1: ; %ComputeLoop6324; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=16325; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]6326; GFX1064-NEXT: v_readlane_b32 s3, v1, s46327; GFX1064-NEXT: v_readlane_b32 s2, v0, s46328; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6329; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s46330; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]6331; GFX1064-NEXT: s_cbranch_scc1 .LBB10_16332; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd6333; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06334; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06335; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v06336; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc6337; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6338; GFX1064-NEXT: s_cbranch_execz .LBB10_56339; GFX1064-NEXT: ; %bb.3:6340; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246341; GFX1064-NEXT: v_mov_b32_e32 v6, 06342; GFX1064-NEXT: s_mov_b64 s[2:3], 06343; GFX1064-NEXT: s_waitcnt lgkmcnt(0)6344; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]6345; GFX1064-NEXT: .LBB10_4: ; %atomicrmw.start6346; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=16347; GFX1064-NEXT: s_waitcnt vmcnt(0)6348; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6349; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6350; GFX1064-NEXT: s_waitcnt vmcnt(0)6351; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6352; GFX1064-NEXT: v_mov_b32_e32 v3, v16353; GFX1064-NEXT: v_mov_b32_e32 v2, v06354; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6355; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]6356; GFX1064-NEXT: s_cbranch_execnz .LBB10_46357; GFX1064-NEXT: .LBB10_5:6358; GFX1064-NEXT: s_endpgm6359;6360; GFX1032-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6361; GFX1032: ; %bb.0:6362; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06363; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16364; GFX1032-NEXT: s_mov_b32 s38, -16365; GFX1032-NEXT: s_mov_b32 s39, 0x31c160006366; GFX1032-NEXT: s_add_u32 s36, s36, s116367; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]6368; GFX1032-NEXT: s_addc_u32 s37, s37, 06369; GFX1032-NEXT: s_mov_b32 s12, s86370; GFX1032-NEXT: s_add_u32 s8, s34, 446371; GFX1032-NEXT: s_mov_b32 s13, s96372; GFX1032-NEXT: s_addc_u32 s9, s35, 06373; GFX1032-NEXT: s_getpc_b64 s[4:5]6374; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46375; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126376; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v26377; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06378; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v16379; GFX1032-NEXT: s_mov_b32 s14, s106380; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]6381; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]6382; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]6383; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v26384; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]6385; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]6386; GFX1032-NEXT: s_mov_b32 s32, 06387; GFX1032-NEXT: s_waitcnt lgkmcnt(0)6388; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]6389; GFX1032-NEXT: v_mov_b32_e32 v4, 06390; GFX1032-NEXT: v_bfrev_b32_e32 v5, 16391; GFX1032-NEXT: s_mov_b32 s0, exec_lo6392; GFX1032-NEXT: .LBB10_1: ; %ComputeLoop6393; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=16394; GFX1032-NEXT: s_ff1_i32_b32 s1, s06395; GFX1032-NEXT: v_readlane_b32 s3, v1, s16396; GFX1032-NEXT: v_readlane_b32 s2, v0, s16397; GFX1032-NEXT: s_lshl_b32 s1, 1, s16398; GFX1032-NEXT: s_andn2_b32 s0, s0, s16399; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6400; GFX1032-NEXT: s_cbranch_scc1 .LBB10_16401; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd6402; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06403; GFX1032-NEXT: s_mov_b32 s2, 06404; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v06405; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo6406; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s06407; GFX1032-NEXT: s_cbranch_execz .LBB10_56408; GFX1032-NEXT: ; %bb.3:6409; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246410; GFX1032-NEXT: v_mov_b32_e32 v6, 06411; GFX1032-NEXT: s_waitcnt lgkmcnt(0)6412; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]6413; GFX1032-NEXT: .LBB10_4: ; %atomicrmw.start6414; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=16415; GFX1032-NEXT: s_waitcnt vmcnt(0)6416; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6417; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc6418; GFX1032-NEXT: s_waitcnt vmcnt(0)6419; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6420; GFX1032-NEXT: v_mov_b32_e32 v3, v16421; GFX1032-NEXT: v_mov_b32_e32 v2, v06422; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s26423; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s26424; GFX1032-NEXT: s_cbranch_execnz .LBB10_46425; GFX1032-NEXT: .LBB10_5:6426; GFX1032-NEXT: s_endpgm6427;6428; GFX1164-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6429; GFX1164: ; %bb.0:6430; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]6431; GFX1164-NEXT: s_mov_b32 s12, s86432; GFX1164-NEXT: s_add_u32 s8, s34, 446433; GFX1164-NEXT: s_mov_b32 s13, s96434; GFX1164-NEXT: s_addc_u32 s9, s35, 06435; GFX1164-NEXT: s_getpc_b64 s[4:5]6436; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46437; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126438; GFX1164-NEXT: v_mov_b32_e32 v31, v06439; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x06440; GFX1164-NEXT: s_mov_b32 s14, s106441; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]6442; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]6443; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]6444; GFX1164-NEXT: s_mov_b32 s32, 06445; GFX1164-NEXT: s_waitcnt lgkmcnt(0)6446; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]6447; GFX1164-NEXT: v_mov_b32_e32 v4, 06448; GFX1164-NEXT: v_bfrev_b32_e32 v5, 16449; GFX1164-NEXT: s_mov_b64 s[0:1], exec6450; GFX1164-NEXT: .LBB10_1: ; %ComputeLoop6451; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=16452; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)6453; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]6454; GFX1164-NEXT: v_readlane_b32 s3, v1, s46455; GFX1164-NEXT: v_readlane_b32 s2, v0, s46456; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6457; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6458; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s46459; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]6460; GFX1164-NEXT: s_cbranch_scc1 .LBB10_16461; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd6462; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06463; GFX1164-NEXT: s_mov_b64 s[0:1], exec6464; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6465; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v06466; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v06467; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]6468; GFX1164-NEXT: s_cbranch_execz .LBB10_56469; GFX1164-NEXT: ; %bb.3:6470; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x246471; GFX1164-NEXT: v_mov_b32_e32 v6, 06472; GFX1164-NEXT: s_mov_b64 s[2:3], 06473; GFX1164-NEXT: s_waitcnt lgkmcnt(0)6474; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]6475; GFX1164-NEXT: .LBB10_4: ; %atomicrmw.start6476; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=16477; GFX1164-NEXT: s_waitcnt vmcnt(0)6478; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6479; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6480; GFX1164-NEXT: s_waitcnt vmcnt(0)6481; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]6482; GFX1164-NEXT: v_mov_b32_e32 v3, v16483; GFX1164-NEXT: v_mov_b32_e32 v2, v06484; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6485; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6486; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]6487; GFX1164-NEXT: s_cbranch_execnz .LBB10_46488; GFX1164-NEXT: .LBB10_5:6489; GFX1164-NEXT: s_endpgm6490;6491; GFX1132-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6492; GFX1132: ; %bb.0:6493; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]6494; GFX1132-NEXT: v_mov_b32_e32 v31, v06495; GFX1132-NEXT: s_add_u32 s8, s34, 446496; GFX1132-NEXT: s_addc_u32 s9, s35, 06497; GFX1132-NEXT: s_getpc_b64 s[4:5]6498; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46499; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126500; GFX1132-NEXT: s_mov_b32 s12, s136501; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x06502; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]6503; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]6504; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]6505; GFX1132-NEXT: s_mov_b32 s13, s146506; GFX1132-NEXT: s_mov_b32 s14, s156507; GFX1132-NEXT: s_mov_b32 s32, 06508; GFX1132-NEXT: s_waitcnt lgkmcnt(0)6509; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]6510; GFX1132-NEXT: v_mov_b32_e32 v4, 06511; GFX1132-NEXT: v_bfrev_b32_e32 v5, 16512; GFX1132-NEXT: s_mov_b32 s0, exec_lo6513; GFX1132-NEXT: .LBB10_1: ; %ComputeLoop6514; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=16515; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)6516; GFX1132-NEXT: s_ctz_i32_b32 s1, s06517; GFX1132-NEXT: v_readlane_b32 s3, v1, s16518; GFX1132-NEXT: v_readlane_b32 s2, v0, s16519; GFX1132-NEXT: s_lshl_b32 s1, 1, s16520; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6521; GFX1132-NEXT: s_and_not1_b32 s0, s0, s16522; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]6523; GFX1132-NEXT: s_cbranch_scc1 .LBB10_16524; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd6525; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06526; GFX1132-NEXT: s_mov_b32 s2, 06527; GFX1132-NEXT: s_mov_b32 s0, exec_lo6528; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)6529; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v06530; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s06531; GFX1132-NEXT: s_cbranch_execz .LBB10_56532; GFX1132-NEXT: ; %bb.3:6533; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x246534; GFX1132-NEXT: v_mov_b32_e32 v6, 06535; GFX1132-NEXT: s_waitcnt lgkmcnt(0)6536; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]6537; GFX1132-NEXT: .LBB10_4: ; %atomicrmw.start6538; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=16539; GFX1132-NEXT: s_waitcnt vmcnt(0)6540; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]6541; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc6542; GFX1132-NEXT: s_waitcnt vmcnt(0)6543; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]6544; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v06545; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s26546; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6547; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s26548; GFX1132-NEXT: s_cbranch_execnz .LBB10_46549; GFX1132-NEXT: .LBB10_5:6550; GFX1132-NEXT: s_endpgm6551;6552; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6553; GFX7LESS-DPP: ; %bb.0:6554; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 06555; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD06556; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD16557; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -16558; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0006559; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s116560; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 06561; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s106562; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s96563; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s86564; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6565; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x96566; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0006567; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -16568; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 446569; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 06570; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]6571; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46572; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126573; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06574; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v26575; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v16576; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v16577; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v26578; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6579; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6580; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]6581; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]6582; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)6583; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6584; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 06585; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 06586; GFX7LESS-DPP-NEXT: .LBB10_1: ; %atomicrmw.start6587; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=16588; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)6589; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[0:1]6590; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)6591; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v56592; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v46593; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v36594; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v26595; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc6596; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)6597; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]6598; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]6599; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v66600; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v76601; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]6602; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB10_16603; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end6604; GFX7LESS-DPP-NEXT: s_endpgm6605;6606; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6607; GFX9-DPP: ; %bb.0:6608; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06609; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16610; GFX9-DPP-NEXT: s_mov_b32 s38, -16611; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000006612; GFX9-DPP-NEXT: s_add_u32 s36, s36, s116613; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 06614; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]6615; GFX9-DPP-NEXT: s_mov_b32 s12, s86616; GFX9-DPP-NEXT: s_add_u32 s8, s34, 446617; GFX9-DPP-NEXT: s_mov_b32 s13, s96618; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 06619; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]6620; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46621; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126622; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06623; GFX9-DPP-NEXT: s_mov_b32 s14, s106624; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6625; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v26626; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v16627; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6628; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6629; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]6630; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v26631; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]6632; GFX9-DPP-NEXT: s_mov_b32 s32, 06633; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)6634; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6635; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -16636; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 16637; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]6638; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]6639; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16640; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06641; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 06642; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf6643; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf6644; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6645; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16646; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06647; GFX9-DPP-NEXT: s_nop 06648; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf6649; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf6650; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6651; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16652; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06653; GFX9-DPP-NEXT: s_nop 06654; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf6655; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf6656; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6657; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16658; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06659; GFX9-DPP-NEXT: s_nop 06660; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf6661; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf6662; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6663; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 16664; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 06665; GFX9-DPP-NEXT: s_nop 06666; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf6667; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf6668; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]6669; GFX9-DPP-NEXT: s_nop 16670; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf6671; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf6672; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]6673; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]6674; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 06675; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 06676; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v16677; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -16678; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 636679; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 636680; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]6681; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]6682; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v16683; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc6684; GFX9-DPP-NEXT: s_cbranch_execz .LBB10_36685; GFX9-DPP-NEXT: ; %bb.1:6686; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x246687; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 06688; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)6689; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]6690; GFX9-DPP-NEXT: .LBB10_2: ; %atomicrmw.start6691; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=16692; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)6693; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], s[0:1]6694; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc6695; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)6696; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]6697; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v26698; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]6699; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v16700; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]6701; GFX9-DPP-NEXT: s_cbranch_execnz .LBB10_26702; GFX9-DPP-NEXT: .LBB10_3:6703; GFX9-DPP-NEXT: s_endpgm6704;6705; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6706; GFX1064-DPP: ; %bb.0:6707; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06708; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16709; GFX1064-DPP-NEXT: s_mov_b32 s38, -16710; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160006711; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s116712; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]6713; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 06714; GFX1064-DPP-NEXT: s_mov_b32 s12, s86715; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 446716; GFX1064-DPP-NEXT: s_mov_b32 s13, s96717; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 06718; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]6719; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46720; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126721; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v26722; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06723; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v16724; GFX1064-DPP-NEXT: s_mov_b32 s14, s106725; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6726; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6727; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6728; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v26729; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]6730; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]6731; GFX1064-DPP-NEXT: s_mov_b32 s32, 06732; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)6733; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6734; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -16735; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 16736; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 06737; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]6738; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]6739; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf6740; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf6741; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]6742; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 16743; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 06744; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf6745; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf6746; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6747; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 16748; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 06749; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf6750; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf6751; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6752; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 16753; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 06754; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf6755; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf6756; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6757; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 06758; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 06759; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6760; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 06761; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 06762; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 326763; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 326764; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]6765; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]6766; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06767; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 06768; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v06769; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v36770; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v46771; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v76772; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc6773; GFX1064-DPP-NEXT: s_cbranch_execz .LBB10_36774; GFX1064-DPP-NEXT: ; %bb.1:6775; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246776; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 06777; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)6778; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]6779; GFX1064-DPP-NEXT: .LBB10_2: ; %atomicrmw.start6780; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=16781; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)6782; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]6783; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc6784; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)6785; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]6786; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v86787; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v76788; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6789; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]6790; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB10_26791; GFX1064-DPP-NEXT: .LBB10_3:6792; GFX1064-DPP-NEXT: s_endpgm6793;6794; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6795; GFX1032-DPP: ; %bb.0:6796; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD06797; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD16798; GFX1032-DPP-NEXT: s_mov_b32 s38, -16799; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160006800; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s116801; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]6802; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 06803; GFX1032-DPP-NEXT: s_mov_b32 s12, s86804; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 446805; GFX1032-DPP-NEXT: s_mov_b32 s13, s96806; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 06807; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]6808; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46809; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126810; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v26811; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x06812; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v16813; GFX1032-DPP-NEXT: s_mov_b32 s14, s106814; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6815; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6816; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6817; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v26818; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]6819; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]6820; GFX1032-DPP-NEXT: s_mov_b32 s32, 06821; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)6822; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6823; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -16824; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 16825; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 06826; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s06827; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s06828; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf6829; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf6830; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]6831; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 16832; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 06833; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf6834; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf6835; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6836; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 16837; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 06838; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf6839; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf6840; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6841; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 16842; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 06843; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf6844; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf6845; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6846; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 06847; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 06848; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]6849; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s06850; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 06851; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v36852; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 06853; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v46854; GFX1032-DPP-NEXT: s_mov_b32 s2, 06855; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v76856; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo6857; GFX1032-DPP-NEXT: s_cbranch_execz .LBB10_36858; GFX1032-DPP-NEXT: ; %bb.1:6859; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x246860; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)6861; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]6862; GFX1032-DPP-NEXT: .LBB10_2: ; %atomicrmw.start6863; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=16864; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)6865; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]6866; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc6867; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)6868; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]6869; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v86870; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v76871; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s26872; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s26873; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB10_26874; GFX1032-DPP-NEXT: .LBB10_3:6875; GFX1032-DPP-NEXT: s_endpgm6876;6877; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6878; GFX1164-DPP: ; %bb.0:6879; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]6880; GFX1164-DPP-NEXT: s_mov_b32 s12, s86881; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 446882; GFX1164-DPP-NEXT: s_mov_b32 s13, s96883; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 06884; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]6885; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46886; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126887; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v06888; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x06889; GFX1164-DPP-NEXT: s_mov_b32 s14, s106890; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6891; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6892; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6893; GFX1164-DPP-NEXT: s_mov_b32 s32, 06894; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)6895; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6896; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -16897; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 16898; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 06899; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]6900; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]6901; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6902; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf6903; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf6904; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)6905; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]6906; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 16907; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 06908; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf6909; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6910; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf6911; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]6912; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 16913; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 06914; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6915; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf6916; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf6917; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)6918; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]6919; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 16920; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 06921; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf6922; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6923; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf6924; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]6925; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)6926; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 06927; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 06928; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6929; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]6930; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v36931; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6932; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v26933; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]6934; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]6935; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)6936; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 06937; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 06938; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec6939; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)6940; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v06941; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)6942; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v26943; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v36944; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v66945; GFX1164-DPP-NEXT: s_cbranch_execz .LBB10_36946; GFX1164-DPP-NEXT: ; %bb.1:6947; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x246948; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 06949; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)6950; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]6951; GFX1164-DPP-NEXT: .LBB10_2: ; %atomicrmw.start6952; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=16953; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)6954; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]6955; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc6956; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)6957; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]6958; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v76959; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v66960; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]6961; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)6962; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]6963; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB10_26964; GFX1164-DPP-NEXT: .LBB10_3:6965; GFX1164-DPP-NEXT: s_endpgm6966;6967; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_align4_unsafe:6968; GFX1132-DPP: ; %bb.0:6969; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]6970; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v06971; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 446972; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 06973; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]6974; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+46975; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+126976; GFX1132-DPP-NEXT: s_mov_b32 s12, s136977; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x06978; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]6979; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]6980; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]6981; GFX1132-DPP-NEXT: s_mov_b32 s13, s146982; GFX1132-DPP-NEXT: s_mov_b32 s14, s156983; GFX1132-DPP-NEXT: s_mov_b32 s32, 06984; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)6985; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]6986; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -16987; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 16988; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 06989; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s06990; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s06991; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6992; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf6993; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf6994; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)6995; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]6996; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 16997; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 06998; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf6999; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7000; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf7001; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7002; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 17003; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 07004; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)7005; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf7006; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf7007; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)7008; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7009; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 17010; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 07011; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf7012; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7013; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf7014; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7015; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)7016; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 07017; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 07018; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)7019; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]7020; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s07021; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v27022; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 07023; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)7024; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v37025; GFX1132-DPP-NEXT: s_mov_b32 s2, 07026; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo7027; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v67028; GFX1132-DPP-NEXT: s_cbranch_execz .LBB10_37029; GFX1132-DPP-NEXT: ; %bb.1:7030; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x247031; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7032; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]7033; GFX1132-DPP-NEXT: .LBB10_2: ; %atomicrmw.start7034; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=17035; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7036; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]7037; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc7038; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7039; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]7040; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v67041; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s27042; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7043; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27044; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB10_27045; GFX1132-DPP-NEXT: .LBB10_3:7046; GFX1132-DPP-NEXT: s_endpgm7047 %divValue = call double @div.float.value()7048 %result = atomicrmw fadd ptr addrspace(1) %ptr, double %divValue syncscope("agent") monotonic, align 8, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !17049 ret void7050}7051 7052define amdgpu_kernel void @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {7053; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7054; GFX7LESS: ; %bb.0:7055; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07056; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17057; GFX7LESS-NEXT: s_mov_b32 s14, -17058; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0007059; GFX7LESS-NEXT: s_add_u32 s12, s12, s117060; GFX7LESS-NEXT: s_addc_u32 s13, s13, 07061; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec7062; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 07063; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v07064; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07065; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc7066; GFX7LESS-NEXT: s_cbranch_execz .LBB11_37067; GFX7LESS-NEXT: ; %bb.1:7068; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97069; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[2:3]7070; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000007071; GFX7LESS-NEXT: v_mov_b32_e32 v0, 07072; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000007073; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7074; GFX7LESS-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x07075; GFX7LESS-NEXT: s_mov_b64 s[4:5], 07076; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0007077; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]7078; GFX7LESS-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7079; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7080; GFX7LESS-NEXT: v_mov_b32_e32 v2, s87081; GFX7LESS-NEXT: v_mov_b32_e32 v3, s97082; GFX7LESS-NEXT: s_mov_b32 s2, -17083; GFX7LESS-NEXT: .LBB11_2: ; %atomicrmw.start7084; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=17085; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7086; GFX7LESS-NEXT: s_waitcnt expcnt(0)7087; GFX7LESS-NEXT: v_mov_b32_e32 v9, v37088; GFX7LESS-NEXT: v_mov_b32_e32 v8, v27089; GFX7LESS-NEXT: v_mov_b32_e32 v7, v17090; GFX7LESS-NEXT: v_mov_b32_e32 v6, v07091; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc7092; GFX7LESS-NEXT: s_waitcnt vmcnt(0)7093; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]7094; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7095; GFX7LESS-NEXT: v_mov_b32_e32 v2, v67096; GFX7LESS-NEXT: v_mov_b32_e32 v3, v77097; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]7098; GFX7LESS-NEXT: s_cbranch_execnz .LBB11_27099; GFX7LESS-NEXT: .LBB11_3:7100; GFX7LESS-NEXT: s_endpgm7101;7102; GFX9-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7103; GFX9: ; %bb.0:7104; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07105; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17106; GFX9-NEXT: s_mov_b32 s14, -17107; GFX9-NEXT: s_mov_b64 s[0:1], exec7108; GFX9-NEXT: s_mov_b32 s15, 0xe000007109; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07110; GFX9-NEXT: s_add_u32 s12, s12, s117111; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07112; GFX9-NEXT: s_addc_u32 s13, s13, 07113; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07114; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc7115; GFX9-NEXT: s_cbranch_execz .LBB11_37116; GFX9-NEXT: ; %bb.1:7117; GFX9-NEXT: v_mov_b32_e32 v0, 07118; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]7119; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000007120; GFX9-NEXT: s_mov_b32 s1, 0x433000007121; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]7122; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247123; GFX9-NEXT: s_mov_b64 s[2:3], 07124; GFX9-NEXT: v_mov_b32_e32 v6, 07125; GFX9-NEXT: s_waitcnt lgkmcnt(0)7126; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07127; GFX9-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7128; GFX9-NEXT: s_waitcnt lgkmcnt(0)7129; GFX9-NEXT: v_mov_b32_e32 v2, s47130; GFX9-NEXT: v_mov_b32_e32 v3, s57131; GFX9-NEXT: .LBB11_2: ; %atomicrmw.start7132; GFX9-NEXT: ; =>This Inner Loop Header: Depth=17133; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7134; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7135; GFX9-NEXT: s_waitcnt vmcnt(0)7136; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7137; GFX9-NEXT: v_mov_b32_e32 v3, v17138; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7139; GFX9-NEXT: v_mov_b32_e32 v2, v07140; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]7141; GFX9-NEXT: s_cbranch_execnz .LBB11_27142; GFX9-NEXT: .LBB11_3:7143; GFX9-NEXT: s_endpgm7144;7145; GFX1064-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7146; GFX1064: ; %bb.0:7147; GFX1064-NEXT: s_mov_b64 s[0:1], exec7148; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07149; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07150; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17151; GFX1064-NEXT: s_mov_b32 s14, -17152; GFX1064-NEXT: s_mov_b32 s15, 0x31e160007153; GFX1064-NEXT: s_add_u32 s12, s12, s117154; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07155; GFX1064-NEXT: s_addc_u32 s13, s13, 07156; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07157; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc7158; GFX1064-NEXT: s_cbranch_execz .LBB11_37159; GFX1064-NEXT: ; %bb.1:7160; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[0:1]7161; GFX1064-NEXT: s_mov_b32 s3, 0x433000007162; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247163; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]7164; GFX1064-NEXT: v_mov_b32_e32 v6, 07165; GFX1064-NEXT: s_waitcnt lgkmcnt(0)7166; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x07167; GFX1064-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7168; GFX1064-NEXT: s_waitcnt lgkmcnt(0)7169; GFX1064-NEXT: v_mov_b32_e32 v2, s27170; GFX1064-NEXT: v_mov_b32_e32 v3, s37171; GFX1064-NEXT: s_mov_b64 s[2:3], 07172; GFX1064-NEXT: .LBB11_2: ; %atomicrmw.start7173; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=17174; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7175; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7176; GFX1064-NEXT: s_waitcnt vmcnt(0)7177; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7178; GFX1064-NEXT: v_mov_b32_e32 v3, v17179; GFX1064-NEXT: v_mov_b32_e32 v2, v07180; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7181; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]7182; GFX1064-NEXT: s_cbranch_execnz .LBB11_27183; GFX1064-NEXT: .LBB11_3:7184; GFX1064-NEXT: s_endpgm7185;7186; GFX1032-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7187; GFX1032: ; %bb.0:7188; GFX1032-NEXT: s_mov_b32 s0, exec_lo7189; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07190; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07191; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17192; GFX1032-NEXT: s_mov_b32 s14, -17193; GFX1032-NEXT: s_mov_b32 s15, 0x31c160007194; GFX1032-NEXT: s_add_u32 s12, s12, s117195; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07196; GFX1032-NEXT: s_addc_u32 s13, s13, 07197; GFX1032-NEXT: s_mov_b32 s2, 07198; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo7199; GFX1032-NEXT: s_cbranch_execz .LBB11_37200; GFX1032-NEXT: ; %bb.1:7201; GFX1032-NEXT: s_bcnt1_i32_b32 s6, s07202; GFX1032-NEXT: s_mov_b32 s7, 0x433000007203; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247204; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]7205; GFX1032-NEXT: v_mov_b32_e32 v6, 07206; GFX1032-NEXT: s_waitcnt lgkmcnt(0)7207; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07208; GFX1032-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7209; GFX1032-NEXT: s_waitcnt lgkmcnt(0)7210; GFX1032-NEXT: v_mov_b32_e32 v2, s47211; GFX1032-NEXT: v_mov_b32_e32 v3, s57212; GFX1032-NEXT: .LBB11_2: ; %atomicrmw.start7213; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=17214; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7215; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7216; GFX1032-NEXT: s_waitcnt vmcnt(0)7217; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7218; GFX1032-NEXT: v_mov_b32_e32 v3, v17219; GFX1032-NEXT: v_mov_b32_e32 v2, v07220; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s27221; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s27222; GFX1032-NEXT: s_cbranch_execnz .LBB11_27223; GFX1032-NEXT: .LBB11_3:7224; GFX1032-NEXT: s_endpgm7225;7226; GFX1164-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7227; GFX1164: ; %bb.0:7228; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec7229; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000007230; GFX1164-NEXT: v_mov_b32_e32 v1, s07231; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07232; GFX1164-NEXT: s_mov_b64 s[0:1], exec7233; GFX1164-NEXT: s_clause 0x17234; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:47235; GFX1164-NEXT: scratch_store_b32 off, v1, off7236; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off7237; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v27238; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)7239; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v27240; GFX1164-NEXT: s_cbranch_execz .LBB11_37241; GFX1164-NEXT: ; %bb.1:7242; GFX1164-NEXT: s_waitcnt vmcnt(0)7243; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7244; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x247245; GFX1164-NEXT: v_mov_b32_e32 v6, 07246; GFX1164-NEXT: s_waitcnt lgkmcnt(0)7247; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x07248; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2)7249; GFX1164-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7250; GFX1164-NEXT: s_waitcnt lgkmcnt(0)7251; GFX1164-NEXT: v_mov_b32_e32 v2, s27252; GFX1164-NEXT: v_mov_b32_e32 v3, s37253; GFX1164-NEXT: s_mov_b64 s[2:3], 07254; GFX1164-NEXT: .LBB11_2: ; %atomicrmw.start7255; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=17256; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)7257; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7258; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7259; GFX1164-NEXT: s_waitcnt vmcnt(0)7260; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7261; GFX1164-NEXT: v_mov_b32_e32 v3, v17262; GFX1164-NEXT: v_mov_b32_e32 v2, v07263; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7264; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7265; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]7266; GFX1164-NEXT: s_cbranch_execnz .LBB11_27267; GFX1164-NEXT: .LBB11_3:7268; GFX1164-NEXT: s_endpgm7269;7270; GFX1132-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7271; GFX1132: ; %bb.0:7272; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo7273; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7274; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s07275; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07276; GFX1132-NEXT: s_mov_b32 s2, 07277; GFX1132-NEXT: s_mov_b32 s0, exec_lo7278; GFX1132-NEXT: s_clause 0x17279; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:47280; GFX1132-NEXT: scratch_store_b32 off, v1, off7281; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off7282; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v27283; GFX1132-NEXT: s_cbranch_execz .LBB11_37284; GFX1132-NEXT: ; %bb.1:7285; GFX1132-NEXT: s_waitcnt vmcnt(0)7286; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7287; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x247288; GFX1132-NEXT: v_mov_b32_e32 v6, 07289; GFX1132-NEXT: s_waitcnt lgkmcnt(0)7290; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x07291; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2)7292; GFX1132-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7293; GFX1132-NEXT: s_waitcnt lgkmcnt(0)7294; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s57295; GFX1132-NEXT: .LBB11_2: ; %atomicrmw.start7296; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=17297; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)7298; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7299; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7300; GFX1132-NEXT: s_waitcnt vmcnt(0)7301; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7302; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v07303; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s27304; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7305; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27306; GFX1132-NEXT: s_cbranch_execnz .LBB11_27307; GFX1132-NEXT: .LBB11_3:7308; GFX1132-NEXT: s_endpgm7309;7310; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7311; GFX7LESS-DPP: ; %bb.0:7312; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07313; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17314; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -17315; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0007316; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s117317; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 07318; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec7319; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 07320; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v07321; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07322; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc7323; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB11_37324; GFX7LESS-DPP-NEXT: ; %bb.1:7325; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x97326; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[2:3]7327; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000007328; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 07329; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000007330; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)7331; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x07332; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 07333; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0007334; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]7335; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7336; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)7337; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s87338; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s97339; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -17340; GFX7LESS-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7341; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=17342; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7343; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)7344; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v37345; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v27346; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v17347; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v07348; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc7349; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)7350; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]7351; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7352; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v67353; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v77354; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]7355; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB11_27356; GFX7LESS-DPP-NEXT: .LBB11_3:7357; GFX7LESS-DPP-NEXT: s_endpgm7358;7359; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7360; GFX9-DPP: ; %bb.0:7361; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07362; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17363; GFX9-DPP-NEXT: s_mov_b32 s14, -17364; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec7365; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000007366; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07367; GFX9-DPP-NEXT: s_add_u32 s12, s12, s117368; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07369; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 07370; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07371; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc7372; GFX9-DPP-NEXT: s_cbranch_execz .LBB11_37373; GFX9-DPP-NEXT: ; %bb.1:7374; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 07375; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]7376; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000007377; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000007378; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]7379; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247380; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 07381; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 07382; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)7383; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07384; GFX9-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7385; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)7386; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s47387; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s57388; GFX9-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7389; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=17390; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7391; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7392; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)7393; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7394; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v17395; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7396; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v07397; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]7398; GFX9-DPP-NEXT: s_cbranch_execnz .LBB11_27399; GFX9-DPP-NEXT: .LBB11_3:7400; GFX9-DPP-NEXT: s_endpgm7401;7402; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7403; GFX1064-DPP: ; %bb.0:7404; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec7405; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07406; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07407; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17408; GFX1064-DPP-NEXT: s_mov_b32 s14, -17409; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160007410; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s117411; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v07412; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 07413; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07414; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc7415; GFX1064-DPP-NEXT: s_cbranch_execz .LBB11_37416; GFX1064-DPP-NEXT: ; %bb.1:7417; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[0:1]7418; GFX1064-DPP-NEXT: s_mov_b32 s3, 0x433000007419; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247420; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]7421; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 07422; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)7423; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x07424; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7425; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)7426; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s27427; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s37428; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 07429; GFX1064-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7430; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=17431; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7432; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7433; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)7434; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7435; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v17436; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v07437; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7438; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]7439; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB11_27440; GFX1064-DPP-NEXT: .LBB11_3:7441; GFX1064-DPP-NEXT: s_endpgm7442;7443; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7444; GFX1032-DPP: ; %bb.0:7445; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo7446; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD07447; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 07448; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD17449; GFX1032-DPP-NEXT: s_mov_b32 s14, -17450; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160007451; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s117452; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07453; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 07454; GFX1032-DPP-NEXT: s_mov_b32 s2, 07455; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo7456; GFX1032-DPP-NEXT: s_cbranch_execz .LBB11_37457; GFX1032-DPP-NEXT: ; %bb.1:7458; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s6, s07459; GFX1032-DPP-NEXT: s_mov_b32 s7, 0x433000007460; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x247461; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]7462; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 07463; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)7464; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x07465; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7466; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)7467; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s47468; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s57469; GFX1032-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7470; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=17471; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7472; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7473; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)7474; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7475; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v17476; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v07477; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s27478; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s27479; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB11_27480; GFX1032-DPP-NEXT: .LBB11_3:7481; GFX1032-DPP-NEXT: s_endpgm7482;7483; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7484; GFX1164-DPP: ; %bb.0:7485; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec7486; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000007487; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s07488; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07489; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec7490; GFX1164-DPP-NEXT: s_clause 0x17491; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:47492; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off7493; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off7494; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v27495; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)7496; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v27497; GFX1164-DPP-NEXT: s_cbranch_execz .LBB11_37498; GFX1164-DPP-NEXT: ; %bb.1:7499; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)7500; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7501; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x247502; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 07503; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)7504; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x07505; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)7506; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7507; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)7508; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s27509; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s37510; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 07511; GFX1164-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7512; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=17513; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)7514; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7515; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7516; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)7517; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7518; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v17519; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v07520; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7521; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7522; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]7523; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB11_27524; GFX1164-DPP-NEXT: .LBB11_3:7525; GFX1164-DPP-NEXT: s_endpgm7526;7527; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp:7528; GFX1132-DPP: ; %bb.0:7529; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo7530; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7531; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s07532; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 07533; GFX1132-DPP-NEXT: s_mov_b32 s2, 07534; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo7535; GFX1132-DPP-NEXT: s_clause 0x17536; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:47537; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off7538; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off7539; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v27540; GFX1132-DPP-NEXT: s_cbranch_execz .LBB11_37541; GFX1132-DPP-NEXT: ; %bb.1:7542; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7543; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]7544; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x247545; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 07546; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7547; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x07548; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)7549; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]7550; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)7551; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s57552; GFX1132-DPP-NEXT: .LBB11_2: ; %atomicrmw.start7553; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=17554; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)7555; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7556; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7557; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)7558; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7559; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v07560; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s27561; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7562; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27563; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB11_27564; GFX1132-DPP-NEXT: .LBB11_3:7565; GFX1132-DPP-NEXT: s_endpgm7566 %result = atomicrmw fadd ptr addrspace(1) %ptr, double 4.0 syncscope("one-as") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !17567 ret void7568}7569 7570define amdgpu_kernel void @global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {7571; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7572; GFX7LESS: ; %bb.0:7573; GFX7LESS-NEXT: s_mov_b32 s32, 07574; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07575; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17576; GFX7LESS-NEXT: s_mov_b32 s38, -17577; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0007578; GFX7LESS-NEXT: s_add_u32 s36, s36, s117579; GFX7LESS-NEXT: s_addc_u32 s37, s37, 07580; GFX7LESS-NEXT: s_mov_b32 s14, s107581; GFX7LESS-NEXT: s_mov_b32 s13, s97582; GFX7LESS-NEXT: s_mov_b32 s12, s87583; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]7584; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]7585; GFX7LESS-NEXT: s_add_u32 s8, s34, 447586; GFX7LESS-NEXT: s_addc_u32 s9, s35, 07587; GFX7LESS-NEXT: s_getpc_b64 s[4:5]7588; GFX7LESS-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47589; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127590; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07591; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v27592; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v17593; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v17594; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v27595; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]7596; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]7597; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]7598; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]7599; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7600; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]7601; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec7602; GFX7LESS-NEXT: v_mov_b32_e32 v4, 07603; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 17604; GFX7LESS-NEXT: .LBB12_1: ; %ComputeLoop7605; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=17606; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]7607; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s47608; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s47609; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s47610; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]7611; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 07612; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]7613; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7614; GFX7LESS-NEXT: s_cbranch_vccnz .LBB12_17615; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd7616; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 07617; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v07618; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07619; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc7620; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7621; GFX7LESS-NEXT: s_cbranch_execz .LBB12_57622; GFX7LESS-NEXT: ; %bb.3:7623; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x97624; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0007625; GFX7LESS-NEXT: s_mov_b32 s2, -17626; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)7627; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 07628; GFX7LESS-NEXT: s_mov_b64 s[4:5], 07629; GFX7LESS-NEXT: .LBB12_4: ; %atomicrmw.start7630; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=17631; GFX7LESS-NEXT: s_waitcnt vmcnt(0)7632; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7633; GFX7LESS-NEXT: s_waitcnt expcnt(0)7634; GFX7LESS-NEXT: v_mov_b32_e32 v9, v37635; GFX7LESS-NEXT: v_mov_b32_e32 v8, v27636; GFX7LESS-NEXT: v_mov_b32_e32 v7, v17637; GFX7LESS-NEXT: v_mov_b32_e32 v6, v07638; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc7639; GFX7LESS-NEXT: s_waitcnt vmcnt(0)7640; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]7641; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]7642; GFX7LESS-NEXT: v_mov_b32_e32 v2, v67643; GFX7LESS-NEXT: v_mov_b32_e32 v3, v77644; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]7645; GFX7LESS-NEXT: s_cbranch_execnz .LBB12_47646; GFX7LESS-NEXT: .LBB12_5:7647; GFX7LESS-NEXT: s_endpgm7648;7649; GFX9-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7650; GFX9: ; %bb.0:7651; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07652; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17653; GFX9-NEXT: s_mov_b32 s38, -17654; GFX9-NEXT: s_mov_b32 s39, 0xe000007655; GFX9-NEXT: s_add_u32 s36, s36, s117656; GFX9-NEXT: s_addc_u32 s37, s37, 07657; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]7658; GFX9-NEXT: s_mov_b32 s12, s87659; GFX9-NEXT: s_add_u32 s8, s34, 447660; GFX9-NEXT: s_mov_b32 s13, s97661; GFX9-NEXT: s_addc_u32 s9, s35, 07662; GFX9-NEXT: s_getpc_b64 s[4:5]7663; GFX9-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47664; GFX9-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127665; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07666; GFX9-NEXT: s_mov_b32 s14, s107667; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]7668; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v27669; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v17670; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]7671; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]7672; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]7673; GFX9-NEXT: v_or3_b32 v31, v0, v1, v27674; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]7675; GFX9-NEXT: s_mov_b32 s32, 07676; GFX9-NEXT: s_waitcnt lgkmcnt(0)7677; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]7678; GFX9-NEXT: v_mov_b32_e32 v4, 07679; GFX9-NEXT: s_mov_b64 s[0:1], exec7680; GFX9-NEXT: v_bfrev_b32_e32 v5, 17681; GFX9-NEXT: .LBB12_1: ; %ComputeLoop7682; GFX9-NEXT: ; =>This Inner Loop Header: Depth=17683; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]7684; GFX9-NEXT: v_readlane_b32 s3, v1, s47685; GFX9-NEXT: v_readlane_b32 s2, v0, s47686; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7687; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s47688; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]7689; GFX9-NEXT: s_cbranch_scc1 .LBB12_17690; GFX9-NEXT: ; %bb.2: ; %ComputeEnd7691; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07692; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07693; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07694; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc7695; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7696; GFX9-NEXT: s_cbranch_execz .LBB12_57697; GFX9-NEXT: ; %bb.3:7698; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x247699; GFX9-NEXT: v_mov_b32_e32 v6, 07700; GFX9-NEXT: s_mov_b64 s[2:3], 07701; GFX9-NEXT: s_waitcnt lgkmcnt(0)7702; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]7703; GFX9-NEXT: .LBB12_4: ; %atomicrmw.start7704; GFX9-NEXT: ; =>This Inner Loop Header: Depth=17705; GFX9-NEXT: s_waitcnt vmcnt(0)7706; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7707; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7708; GFX9-NEXT: s_waitcnt vmcnt(0)7709; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7710; GFX9-NEXT: v_mov_b32_e32 v3, v17711; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7712; GFX9-NEXT: v_mov_b32_e32 v2, v07713; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]7714; GFX9-NEXT: s_cbranch_execnz .LBB12_47715; GFX9-NEXT: .LBB12_5:7716; GFX9-NEXT: s_endpgm7717;7718; GFX1064-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7719; GFX1064: ; %bb.0:7720; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07721; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17722; GFX1064-NEXT: s_mov_b32 s38, -17723; GFX1064-NEXT: s_mov_b32 s39, 0x31e160007724; GFX1064-NEXT: s_add_u32 s36, s36, s117725; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]7726; GFX1064-NEXT: s_addc_u32 s37, s37, 07727; GFX1064-NEXT: s_mov_b32 s12, s87728; GFX1064-NEXT: s_add_u32 s8, s34, 447729; GFX1064-NEXT: s_mov_b32 s13, s97730; GFX1064-NEXT: s_addc_u32 s9, s35, 07731; GFX1064-NEXT: s_getpc_b64 s[4:5]7732; GFX1064-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47733; GFX1064-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127734; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v27735; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07736; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v17737; GFX1064-NEXT: s_mov_b32 s14, s107738; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]7739; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]7740; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]7741; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v27742; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]7743; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]7744; GFX1064-NEXT: s_mov_b32 s32, 07745; GFX1064-NEXT: s_waitcnt lgkmcnt(0)7746; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]7747; GFX1064-NEXT: v_mov_b32_e32 v4, 07748; GFX1064-NEXT: v_bfrev_b32_e32 v5, 17749; GFX1064-NEXT: s_mov_b64 s[0:1], exec7750; GFX1064-NEXT: .LBB12_1: ; %ComputeLoop7751; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=17752; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]7753; GFX1064-NEXT: v_readlane_b32 s3, v1, s47754; GFX1064-NEXT: v_readlane_b32 s2, v0, s47755; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7756; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s47757; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]7758; GFX1064-NEXT: s_cbranch_scc1 .LBB12_17759; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd7760; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07761; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07762; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v07763; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc7764; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7765; GFX1064-NEXT: s_cbranch_execz .LBB12_57766; GFX1064-NEXT: ; %bb.3:7767; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x247768; GFX1064-NEXT: v_mov_b32_e32 v6, 07769; GFX1064-NEXT: s_mov_b64 s[2:3], 07770; GFX1064-NEXT: s_waitcnt lgkmcnt(0)7771; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]7772; GFX1064-NEXT: .LBB12_4: ; %atomicrmw.start7773; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=17774; GFX1064-NEXT: s_waitcnt vmcnt(0)7775; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7776; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7777; GFX1064-NEXT: s_waitcnt vmcnt(0)7778; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7779; GFX1064-NEXT: v_mov_b32_e32 v3, v17780; GFX1064-NEXT: v_mov_b32_e32 v2, v07781; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7782; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]7783; GFX1064-NEXT: s_cbranch_execnz .LBB12_47784; GFX1064-NEXT: .LBB12_5:7785; GFX1064-NEXT: s_endpgm7786;7787; GFX1032-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7788; GFX1032: ; %bb.0:7789; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD07790; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD17791; GFX1032-NEXT: s_mov_b32 s38, -17792; GFX1032-NEXT: s_mov_b32 s39, 0x31c160007793; GFX1032-NEXT: s_add_u32 s36, s36, s117794; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]7795; GFX1032-NEXT: s_addc_u32 s37, s37, 07796; GFX1032-NEXT: s_mov_b32 s12, s87797; GFX1032-NEXT: s_add_u32 s8, s34, 447798; GFX1032-NEXT: s_mov_b32 s13, s97799; GFX1032-NEXT: s_addc_u32 s9, s35, 07800; GFX1032-NEXT: s_getpc_b64 s[4:5]7801; GFX1032-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47802; GFX1032-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127803; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v27804; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x07805; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v17806; GFX1032-NEXT: s_mov_b32 s14, s107807; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]7808; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]7809; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]7810; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v27811; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]7812; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]7813; GFX1032-NEXT: s_mov_b32 s32, 07814; GFX1032-NEXT: s_waitcnt lgkmcnt(0)7815; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]7816; GFX1032-NEXT: v_mov_b32_e32 v4, 07817; GFX1032-NEXT: v_bfrev_b32_e32 v5, 17818; GFX1032-NEXT: s_mov_b32 s0, exec_lo7819; GFX1032-NEXT: .LBB12_1: ; %ComputeLoop7820; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=17821; GFX1032-NEXT: s_ff1_i32_b32 s1, s07822; GFX1032-NEXT: v_readlane_b32 s3, v1, s17823; GFX1032-NEXT: v_readlane_b32 s2, v0, s17824; GFX1032-NEXT: s_lshl_b32 s1, 1, s17825; GFX1032-NEXT: s_andn2_b32 s0, s0, s17826; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7827; GFX1032-NEXT: s_cbranch_scc1 .LBB12_17828; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd7829; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07830; GFX1032-NEXT: s_mov_b32 s2, 07831; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v07832; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo7833; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s07834; GFX1032-NEXT: s_cbranch_execz .LBB12_57835; GFX1032-NEXT: ; %bb.3:7836; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x247837; GFX1032-NEXT: v_mov_b32_e32 v6, 07838; GFX1032-NEXT: s_waitcnt lgkmcnt(0)7839; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]7840; GFX1032-NEXT: .LBB12_4: ; %atomicrmw.start7841; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=17842; GFX1032-NEXT: s_waitcnt vmcnt(0)7843; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7844; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc7845; GFX1032-NEXT: s_waitcnt vmcnt(0)7846; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7847; GFX1032-NEXT: v_mov_b32_e32 v3, v17848; GFX1032-NEXT: v_mov_b32_e32 v2, v07849; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s27850; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s27851; GFX1032-NEXT: s_cbranch_execnz .LBB12_47852; GFX1032-NEXT: .LBB12_5:7853; GFX1032-NEXT: s_endpgm7854;7855; GFX1164-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7856; GFX1164: ; %bb.0:7857; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]7858; GFX1164-NEXT: s_mov_b32 s12, s87859; GFX1164-NEXT: s_add_u32 s8, s34, 447860; GFX1164-NEXT: s_mov_b32 s13, s97861; GFX1164-NEXT: s_addc_u32 s9, s35, 07862; GFX1164-NEXT: s_getpc_b64 s[4:5]7863; GFX1164-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47864; GFX1164-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127865; GFX1164-NEXT: v_mov_b32_e32 v31, v07866; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x07867; GFX1164-NEXT: s_mov_b32 s14, s107868; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]7869; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]7870; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]7871; GFX1164-NEXT: s_mov_b32 s32, 07872; GFX1164-NEXT: s_waitcnt lgkmcnt(0)7873; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]7874; GFX1164-NEXT: v_mov_b32_e32 v4, 07875; GFX1164-NEXT: v_bfrev_b32_e32 v5, 17876; GFX1164-NEXT: s_mov_b64 s[0:1], exec7877; GFX1164-NEXT: .LBB12_1: ; %ComputeLoop7878; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=17879; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)7880; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]7881; GFX1164-NEXT: v_readlane_b32 s3, v1, s47882; GFX1164-NEXT: v_readlane_b32 s2, v0, s47883; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)7884; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7885; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s47886; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]7887; GFX1164-NEXT: s_cbranch_scc1 .LBB12_17888; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd7889; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07890; GFX1164-NEXT: s_mov_b64 s[0:1], exec7891; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7892; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v07893; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v07894; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]7895; GFX1164-NEXT: s_cbranch_execz .LBB12_57896; GFX1164-NEXT: ; %bb.3:7897; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x247898; GFX1164-NEXT: v_mov_b32_e32 v6, 07899; GFX1164-NEXT: s_mov_b64 s[2:3], 07900; GFX1164-NEXT: s_waitcnt lgkmcnt(0)7901; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]7902; GFX1164-NEXT: .LBB12_4: ; %atomicrmw.start7903; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=17904; GFX1164-NEXT: s_waitcnt vmcnt(0)7905; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7906; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7907; GFX1164-NEXT: s_waitcnt vmcnt(0)7908; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]7909; GFX1164-NEXT: v_mov_b32_e32 v3, v17910; GFX1164-NEXT: v_mov_b32_e32 v2, v07911; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]7912; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7913; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]7914; GFX1164-NEXT: s_cbranch_execnz .LBB12_47915; GFX1164-NEXT: .LBB12_5:7916; GFX1164-NEXT: s_endpgm7917;7918; GFX1132-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7919; GFX1132: ; %bb.0:7920; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]7921; GFX1132-NEXT: v_mov_b32_e32 v31, v07922; GFX1132-NEXT: s_add_u32 s8, s34, 447923; GFX1132-NEXT: s_addc_u32 s9, s35, 07924; GFX1132-NEXT: s_getpc_b64 s[4:5]7925; GFX1132-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47926; GFX1132-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+127927; GFX1132-NEXT: s_mov_b32 s12, s137928; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x07929; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]7930; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]7931; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]7932; GFX1132-NEXT: s_mov_b32 s13, s147933; GFX1132-NEXT: s_mov_b32 s14, s157934; GFX1132-NEXT: s_mov_b32 s32, 07935; GFX1132-NEXT: s_waitcnt lgkmcnt(0)7936; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]7937; GFX1132-NEXT: v_mov_b32_e32 v4, 07938; GFX1132-NEXT: v_bfrev_b32_e32 v5, 17939; GFX1132-NEXT: s_mov_b32 s0, exec_lo7940; GFX1132-NEXT: .LBB12_1: ; %ComputeLoop7941; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=17942; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)7943; GFX1132-NEXT: s_ctz_i32_b32 s1, s07944; GFX1132-NEXT: v_readlane_b32 s3, v1, s17945; GFX1132-NEXT: v_readlane_b32 s2, v0, s17946; GFX1132-NEXT: s_lshl_b32 s1, 1, s17947; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7948; GFX1132-NEXT: s_and_not1_b32 s0, s0, s17949; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]7950; GFX1132-NEXT: s_cbranch_scc1 .LBB12_17951; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd7952; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 07953; GFX1132-NEXT: s_mov_b32 s2, 07954; GFX1132-NEXT: s_mov_b32 s0, exec_lo7955; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)7956; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v07957; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s07958; GFX1132-NEXT: s_cbranch_execz .LBB12_57959; GFX1132-NEXT: ; %bb.3:7960; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x247961; GFX1132-NEXT: v_mov_b32_e32 v6, 07962; GFX1132-NEXT: s_waitcnt lgkmcnt(0)7963; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]7964; GFX1132-NEXT: .LBB12_4: ; %atomicrmw.start7965; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=17966; GFX1132-NEXT: s_waitcnt vmcnt(0)7967; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]7968; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc7969; GFX1132-NEXT: s_waitcnt vmcnt(0)7970; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]7971; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v07972; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s27973; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)7974; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s27975; GFX1132-NEXT: s_cbranch_execnz .LBB12_47976; GFX1132-NEXT: .LBB12_5:7977; GFX1132-NEXT: s_endpgm7978;7979; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:7980; GFX7LESS-DPP: ; %bb.0:7981; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 07982; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD07983; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD17984; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -17985; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0007986; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s117987; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 07988; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s107989; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s97990; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s87991; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]7992; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x97993; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0007994; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -17995; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 447996; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 07997; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]7998; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+47999; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128000; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08001; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28002; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18003; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v18004; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v28005; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8006; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8007; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]8008; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]8009; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)8010; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8011; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 08012; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 08013; GFX7LESS-DPP-NEXT: .LBB12_1: ; %atomicrmw.start8014; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=18015; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)8016; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[0:1]8017; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)8018; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v58019; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v48020; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v38021; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v28022; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc8023; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)8024; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]8025; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]8026; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v68027; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v78028; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]8029; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB12_18030; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end8031; GFX7LESS-DPP-NEXT: s_endpgm8032;8033; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:8034; GFX9-DPP: ; %bb.0:8035; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08036; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18037; GFX9-DPP-NEXT: s_mov_b32 s38, -18038; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000008039; GFX9-DPP-NEXT: s_add_u32 s36, s36, s118040; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 08041; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8042; GFX9-DPP-NEXT: s_mov_b32 s12, s88043; GFX9-DPP-NEXT: s_add_u32 s8, s34, 448044; GFX9-DPP-NEXT: s_mov_b32 s13, s98045; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 08046; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]8047; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48048; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128049; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08050; GFX9-DPP-NEXT: s_mov_b32 s14, s108051; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8052; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28053; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18054; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8055; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8056; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]8057; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v28058; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]8059; GFX9-DPP-NEXT: s_mov_b32 s32, 08060; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)8061; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8062; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18063; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 18064; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]8065; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]8066; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18067; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08068; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 08069; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf8070; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf8071; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8072; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18073; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08074; GFX9-DPP-NEXT: s_nop 08075; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf8076; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf8077; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8078; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18079; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08080; GFX9-DPP-NEXT: s_nop 08081; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf8082; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf8083; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8084; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18085; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08086; GFX9-DPP-NEXT: s_nop 08087; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf8088; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf8089; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8090; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 18091; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 08092; GFX9-DPP-NEXT: s_nop 08093; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf8094; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf8095; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]8096; GFX9-DPP-NEXT: s_nop 18097; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf8098; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf8099; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]8100; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]8101; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 08102; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 08103; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v18104; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18105; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 638106; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 638107; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]8108; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]8109; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v18110; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc8111; GFX9-DPP-NEXT: s_cbranch_execz .LBB12_38112; GFX9-DPP-NEXT: ; %bb.1:8113; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x248114; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 08115; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)8116; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]8117; GFX9-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8118; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=18119; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)8120; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], s[0:1]8121; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc8122; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)8123; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]8124; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v28125; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]8126; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v18127; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]8128; GFX9-DPP-NEXT: s_cbranch_execnz .LBB12_28129; GFX9-DPP-NEXT: .LBB12_3:8130; GFX9-DPP-NEXT: s_endpgm8131;8132; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:8133; GFX1064-DPP: ; %bb.0:8134; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08135; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18136; GFX1064-DPP-NEXT: s_mov_b32 s38, -18137; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160008138; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s118139; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8140; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 08141; GFX1064-DPP-NEXT: s_mov_b32 s12, s88142; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 448143; GFX1064-DPP-NEXT: s_mov_b32 s13, s98144; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 08145; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]8146; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48147; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128148; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28149; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08150; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18151; GFX1064-DPP-NEXT: s_mov_b32 s14, s108152; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8153; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8154; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8155; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v28156; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]8157; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]8158; GFX1064-DPP-NEXT: s_mov_b32 s32, 08159; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)8160; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8161; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18162; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 18163; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 08164; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]8165; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]8166; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf8167; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8168; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]8169; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 18170; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 08171; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf8172; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8173; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8174; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 18175; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 08176; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf8177; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8178; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8179; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 18180; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 08181; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf8182; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8183; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8184; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 08185; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08186; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8187; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 08188; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 08189; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 328190; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 328191; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]8192; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]8193; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08194; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 08195; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v08196; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v38197; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v48198; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v78199; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8200; GFX1064-DPP-NEXT: s_cbranch_execz .LBB12_38201; GFX1064-DPP-NEXT: ; %bb.1:8202; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248203; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 08204; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)8205; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]8206; GFX1064-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8207; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=18208; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)8209; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]8210; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc8211; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)8212; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]8213; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v88214; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v78215; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8216; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]8217; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB12_28218; GFX1064-DPP-NEXT: .LBB12_3:8219; GFX1064-DPP-NEXT: s_endpgm8220;8221; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:8222; GFX1032-DPP: ; %bb.0:8223; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD08224; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD18225; GFX1032-DPP-NEXT: s_mov_b32 s38, -18226; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160008227; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s118228; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8229; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 08230; GFX1032-DPP-NEXT: s_mov_b32 s12, s88231; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 448232; GFX1032-DPP-NEXT: s_mov_b32 s13, s98233; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 08234; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]8235; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48236; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128237; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v28238; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x08239; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v18240; GFX1032-DPP-NEXT: s_mov_b32 s14, s108241; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8242; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8243; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8244; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v28245; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]8246; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]8247; GFX1032-DPP-NEXT: s_mov_b32 s32, 08248; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)8249; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8250; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -18251; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 18252; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 08253; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s08254; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s08255; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf8256; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8257; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]8258; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 18259; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 08260; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf8261; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8262; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8263; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 18264; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 08265; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf8266; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8267; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8268; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 18269; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 08270; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf8271; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8272; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8273; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 08274; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08275; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]8276; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s08277; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 08278; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v38279; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 08280; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v48281; GFX1032-DPP-NEXT: s_mov_b32 s2, 08282; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v78283; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo8284; GFX1032-DPP-NEXT: s_cbranch_execz .LBB12_38285; GFX1032-DPP-NEXT: ; %bb.1:8286; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x248287; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)8288; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]8289; GFX1032-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8290; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=18291; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)8292; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]8293; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc8294; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)8295; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]8296; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v88297; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v78298; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s28299; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s28300; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB12_28301; GFX1032-DPP-NEXT: .LBB12_3:8302; GFX1032-DPP-NEXT: s_endpgm8303;8304; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:8305; GFX1164-DPP: ; %bb.0:8306; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8307; GFX1164-DPP-NEXT: s_mov_b32 s12, s88308; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 448309; GFX1164-DPP-NEXT: s_mov_b32 s13, s98310; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 08311; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]8312; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48313; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128314; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v08315; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x08316; GFX1164-DPP-NEXT: s_mov_b32 s14, s108317; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8318; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8319; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8320; GFX1164-DPP-NEXT: s_mov_b32 s32, 08321; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)8322; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8323; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -18324; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 18325; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 08326; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]8327; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]8328; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8329; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8330; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf8331; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8332; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]8333; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 18334; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 08335; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8336; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8337; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf8338; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8339; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 18340; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 08341; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8342; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8343; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf8344; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8345; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8346; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 18347; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 08348; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8349; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8350; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf8351; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8352; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)8353; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08354; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 08355; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8356; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8357; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v38358; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8359; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v28360; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8361; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]8362; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)8363; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 08364; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 08365; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec8366; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)8367; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v08368; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)8369; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v28370; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v38371; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v68372; GFX1164-DPP-NEXT: s_cbranch_execz .LBB12_38373; GFX1164-DPP-NEXT: ; %bb.1:8374; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x248375; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 08376; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)8377; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]8378; GFX1164-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8379; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=18380; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)8381; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]8382; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc8383; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)8384; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]8385; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v78386; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v68387; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8388; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8389; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]8390; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB12_28391; GFX1164-DPP-NEXT: .LBB12_3:8392; GFX1164-DPP-NEXT: s_endpgm8393;8394; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp:8395; GFX1132-DPP: ; %bb.0:8396; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]8397; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v08398; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 448399; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 08400; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]8401; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+48402; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+128403; GFX1132-DPP-NEXT: s_mov_b32 s12, s138404; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x08405; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]8406; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]8407; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]8408; GFX1132-DPP-NEXT: s_mov_b32 s13, s148409; GFX1132-DPP-NEXT: s_mov_b32 s14, s158410; GFX1132-DPP-NEXT: s_mov_b32 s32, 08411; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)8412; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]8413; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -18414; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 18415; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 08416; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s08417; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s08418; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8419; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf8420; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf8421; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8422; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]8423; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 18424; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 08425; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf8426; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8427; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf8428; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8429; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 18430; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 08431; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)8432; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf8433; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf8434; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)8435; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8436; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 18437; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 08438; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf8439; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8440; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf8441; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8442; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)8443; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 08444; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 08445; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)8446; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]8447; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s08448; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v28449; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 08450; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)8451; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v38452; GFX1132-DPP-NEXT: s_mov_b32 s2, 08453; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo8454; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v68455; GFX1132-DPP-NEXT: s_cbranch_execz .LBB12_38456; GFX1132-DPP-NEXT: ; %bb.1:8457; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x248458; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)8459; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]8460; GFX1132-DPP-NEXT: .LBB12_2: ; %atomicrmw.start8461; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=18462; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)8463; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]8464; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc8465; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)8466; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]8467; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v68468; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s28469; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8470; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s28471; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB12_28472; GFX1132-DPP-NEXT: .LBB12_3:8473; GFX1132-DPP-NEXT: s_endpgm8474 %divValue = call double @div.double.value() strictfp8475 %result = atomicrmw fadd ptr addrspace(1) %ptr, double %divValue syncscope("one-as") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !18476 ret void8477}8478 8479define amdgpu_kernel void @global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp(ptr addrspace(1) %ptr) #2{8480; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8481; GFX7LESS: ; %bb.0:8482; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08483; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18484; GFX7LESS-NEXT: s_mov_b32 s14, -18485; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f0008486; GFX7LESS-NEXT: s_add_u32 s12, s12, s118487; GFX7LESS-NEXT: s_addc_u32 s13, s13, 08488; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec8489; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 08490; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v08491; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08492; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc8493; GFX7LESS-NEXT: s_cbranch_execz .LBB13_38494; GFX7LESS-NEXT: ; %bb.1:8495; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x98496; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[2:3]8497; GFX7LESS-NEXT: s_mov_b32 s7, 0x433000008498; GFX7LESS-NEXT: v_mov_b32_e32 v0, 08499; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc33000008500; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)8501; GFX7LESS-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x08502; GFX7LESS-NEXT: s_mov_b64 s[4:5], 08503; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0008504; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]8505; GFX7LESS-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8506; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)8507; GFX7LESS-NEXT: v_mov_b32_e32 v2, s88508; GFX7LESS-NEXT: v_mov_b32_e32 v3, s98509; GFX7LESS-NEXT: s_mov_b32 s2, -18510; GFX7LESS-NEXT: .LBB13_2: ; %atomicrmw.start8511; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=18512; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8513; GFX7LESS-NEXT: s_waitcnt expcnt(0)8514; GFX7LESS-NEXT: v_mov_b32_e32 v9, v38515; GFX7LESS-NEXT: v_mov_b32_e32 v8, v28516; GFX7LESS-NEXT: v_mov_b32_e32 v7, v18517; GFX7LESS-NEXT: v_mov_b32_e32 v6, v08518; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc8519; GFX7LESS-NEXT: s_waitcnt vmcnt(0)8520; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]8521; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]8522; GFX7LESS-NEXT: v_mov_b32_e32 v2, v68523; GFX7LESS-NEXT: v_mov_b32_e32 v3, v78524; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]8525; GFX7LESS-NEXT: s_cbranch_execnz .LBB13_28526; GFX7LESS-NEXT: .LBB13_3:8527; GFX7LESS-NEXT: s_endpgm8528;8529; GFX9-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8530; GFX9: ; %bb.0:8531; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08532; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18533; GFX9-NEXT: s_mov_b32 s14, -18534; GFX9-NEXT: s_mov_b64 s[0:1], exec8535; GFX9-NEXT: s_mov_b32 s15, 0xe000008536; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08537; GFX9-NEXT: s_add_u32 s12, s12, s118538; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v08539; GFX9-NEXT: s_addc_u32 s13, s13, 08540; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08541; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc8542; GFX9-NEXT: s_cbranch_execz .LBB13_38543; GFX9-NEXT: ; %bb.1:8544; GFX9-NEXT: v_mov_b32_e32 v0, 08545; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]8546; GFX9-NEXT: v_mov_b32_e32 v1, 0xc33000008547; GFX9-NEXT: s_mov_b32 s1, 0x433000008548; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]8549; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248550; GFX9-NEXT: s_mov_b64 s[2:3], 08551; GFX9-NEXT: v_mov_b32_e32 v6, 08552; GFX9-NEXT: s_waitcnt lgkmcnt(0)8553; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x08554; GFX9-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8555; GFX9-NEXT: s_waitcnt lgkmcnt(0)8556; GFX9-NEXT: v_mov_b32_e32 v2, s48557; GFX9-NEXT: v_mov_b32_e32 v3, s58558; GFX9-NEXT: .LBB13_2: ; %atomicrmw.start8559; GFX9-NEXT: ; =>This Inner Loop Header: Depth=18560; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8561; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8562; GFX9-NEXT: s_waitcnt vmcnt(0)8563; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8564; GFX9-NEXT: v_mov_b32_e32 v3, v18565; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8566; GFX9-NEXT: v_mov_b32_e32 v2, v08567; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]8568; GFX9-NEXT: s_cbranch_execnz .LBB13_28569; GFX9-NEXT: .LBB13_3:8570; GFX9-NEXT: s_endpgm8571;8572; GFX1064-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8573; GFX1064: ; %bb.0:8574; GFX1064-NEXT: s_mov_b64 s[0:1], exec8575; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08576; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08577; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18578; GFX1064-NEXT: s_mov_b32 s14, -18579; GFX1064-NEXT: s_mov_b32 s15, 0x31e160008580; GFX1064-NEXT: s_add_u32 s12, s12, s118581; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v08582; GFX1064-NEXT: s_addc_u32 s13, s13, 08583; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08584; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc8585; GFX1064-NEXT: s_cbranch_execz .LBB13_38586; GFX1064-NEXT: ; %bb.1:8587; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[0:1]8588; GFX1064-NEXT: s_mov_b32 s3, 0x433000008589; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248590; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]8591; GFX1064-NEXT: v_mov_b32_e32 v6, 08592; GFX1064-NEXT: s_waitcnt lgkmcnt(0)8593; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x08594; GFX1064-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8595; GFX1064-NEXT: s_waitcnt lgkmcnt(0)8596; GFX1064-NEXT: v_mov_b32_e32 v2, s28597; GFX1064-NEXT: v_mov_b32_e32 v3, s38598; GFX1064-NEXT: s_mov_b64 s[2:3], 08599; GFX1064-NEXT: .LBB13_2: ; %atomicrmw.start8600; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=18601; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8602; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8603; GFX1064-NEXT: s_waitcnt vmcnt(0)8604; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8605; GFX1064-NEXT: v_mov_b32_e32 v3, v18606; GFX1064-NEXT: v_mov_b32_e32 v2, v08607; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8608; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]8609; GFX1064-NEXT: s_cbranch_execnz .LBB13_28610; GFX1064-NEXT: .LBB13_3:8611; GFX1064-NEXT: s_endpgm8612;8613; GFX1032-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8614; GFX1032: ; %bb.0:8615; GFX1032-NEXT: s_mov_b32 s0, exec_lo8616; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08617; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08618; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18619; GFX1032-NEXT: s_mov_b32 s14, -18620; GFX1032-NEXT: s_mov_b32 s15, 0x31c160008621; GFX1032-NEXT: s_add_u32 s12, s12, s118622; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08623; GFX1032-NEXT: s_addc_u32 s13, s13, 08624; GFX1032-NEXT: s_mov_b32 s2, 08625; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo8626; GFX1032-NEXT: s_cbranch_execz .LBB13_38627; GFX1032-NEXT: ; %bb.1:8628; GFX1032-NEXT: s_bcnt1_i32_b32 s6, s08629; GFX1032-NEXT: s_mov_b32 s7, 0x433000008630; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248631; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]8632; GFX1032-NEXT: v_mov_b32_e32 v6, 08633; GFX1032-NEXT: s_waitcnt lgkmcnt(0)8634; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x08635; GFX1032-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8636; GFX1032-NEXT: s_waitcnt lgkmcnt(0)8637; GFX1032-NEXT: v_mov_b32_e32 v2, s48638; GFX1032-NEXT: v_mov_b32_e32 v3, s58639; GFX1032-NEXT: .LBB13_2: ; %atomicrmw.start8640; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=18641; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8642; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8643; GFX1032-NEXT: s_waitcnt vmcnt(0)8644; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8645; GFX1032-NEXT: v_mov_b32_e32 v3, v18646; GFX1032-NEXT: v_mov_b32_e32 v2, v08647; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s28648; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s28649; GFX1032-NEXT: s_cbranch_execnz .LBB13_28650; GFX1032-NEXT: .LBB13_3:8651; GFX1032-NEXT: s_endpgm8652;8653; GFX1164-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8654; GFX1164: ; %bb.0:8655; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec8656; GFX1164-NEXT: v_mov_b32_e32 v0, 0x433000008657; GFX1164-NEXT: v_mov_b32_e32 v1, s08658; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08659; GFX1164-NEXT: s_mov_b64 s[0:1], exec8660; GFX1164-NEXT: s_clause 0x18661; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:48662; GFX1164-NEXT: scratch_store_b32 off, v1, off8663; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off8664; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v28665; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)8666; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v28667; GFX1164-NEXT: s_cbranch_execz .LBB13_38668; GFX1164-NEXT: ; %bb.1:8669; GFX1164-NEXT: s_waitcnt vmcnt(0)8670; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]8671; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x248672; GFX1164-NEXT: v_mov_b32_e32 v6, 08673; GFX1164-NEXT: s_waitcnt lgkmcnt(0)8674; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x08675; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2)8676; GFX1164-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8677; GFX1164-NEXT: s_waitcnt lgkmcnt(0)8678; GFX1164-NEXT: v_mov_b32_e32 v2, s28679; GFX1164-NEXT: v_mov_b32_e32 v3, s38680; GFX1164-NEXT: s_mov_b64 s[2:3], 08681; GFX1164-NEXT: .LBB13_2: ; %atomicrmw.start8682; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=18683; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)8684; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8685; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc8686; GFX1164-NEXT: s_waitcnt vmcnt(0)8687; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8688; GFX1164-NEXT: v_mov_b32_e32 v3, v18689; GFX1164-NEXT: v_mov_b32_e32 v2, v08690; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8691; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8692; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]8693; GFX1164-NEXT: s_cbranch_execnz .LBB13_28694; GFX1164-NEXT: .LBB13_3:8695; GFX1164-NEXT: s_endpgm8696;8697; GFX1132-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8698; GFX1132: ; %bb.0:8699; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo8700; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8701; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s08702; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08703; GFX1132-NEXT: s_mov_b32 s2, 08704; GFX1132-NEXT: s_mov_b32 s0, exec_lo8705; GFX1132-NEXT: s_clause 0x18706; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:48707; GFX1132-NEXT: scratch_store_b32 off, v1, off8708; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off8709; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v28710; GFX1132-NEXT: s_cbranch_execz .LBB13_38711; GFX1132-NEXT: ; %bb.1:8712; GFX1132-NEXT: s_waitcnt vmcnt(0)8713; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]8714; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x248715; GFX1132-NEXT: v_mov_b32_e32 v6, 08716; GFX1132-NEXT: s_waitcnt lgkmcnt(0)8717; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x08718; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2)8719; GFX1132-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8720; GFX1132-NEXT: s_waitcnt lgkmcnt(0)8721; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s58722; GFX1132-NEXT: .LBB13_2: ; %atomicrmw.start8723; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=18724; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)8725; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8726; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc8727; GFX1132-NEXT: s_waitcnt vmcnt(0)8728; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8729; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v08730; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s28731; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8732; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s28733; GFX1132-NEXT: s_cbranch_execnz .LBB13_28734; GFX1132-NEXT: .LBB13_3:8735; GFX1132-NEXT: s_endpgm8736;8737; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8738; GFX7LESS-DPP: ; %bb.0:8739; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08740; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18741; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -18742; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f0008743; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s118744; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 08745; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec8746; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 08747; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v08748; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08749; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc8750; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB13_38751; GFX7LESS-DPP-NEXT: ; %bb.1:8752; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x98753; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[2:3]8754; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x433000008755; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 08756; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000008757; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)8758; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x08759; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 08760; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf0008761; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]8762; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8763; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)8764; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s88765; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s98766; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -18767; GFX7LESS-DPP-NEXT: .LBB13_2: ; %atomicrmw.start8768; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=18769; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8770; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)8771; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v38772; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v28773; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v18774; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v08775; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc8776; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)8777; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]8778; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]8779; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v68780; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v78781; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]8782; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB13_28783; GFX7LESS-DPP-NEXT: .LBB13_3:8784; GFX7LESS-DPP-NEXT: s_endpgm8785;8786; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8787; GFX9-DPP: ; %bb.0:8788; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08789; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18790; GFX9-DPP-NEXT: s_mov_b32 s14, -18791; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec8792; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe000008793; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08794; GFX9-DPP-NEXT: s_add_u32 s12, s12, s118795; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v08796; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 08797; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08798; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc8799; GFX9-DPP-NEXT: s_cbranch_execz .LBB13_38800; GFX9-DPP-NEXT: ; %bb.1:8801; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 08802; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]8803; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc33000008804; GFX9-DPP-NEXT: s_mov_b32 s1, 0x433000008805; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]8806; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248807; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 08808; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 08809; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)8810; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x08811; GFX9-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8812; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)8813; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s48814; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s58815; GFX9-DPP-NEXT: .LBB13_2: ; %atomicrmw.start8816; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=18817; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8818; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8819; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)8820; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8821; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v18822; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8823; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v08824; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]8825; GFX9-DPP-NEXT: s_cbranch_execnz .LBB13_28826; GFX9-DPP-NEXT: .LBB13_3:8827; GFX9-DPP-NEXT: s_endpgm8828;8829; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8830; GFX1064-DPP: ; %bb.0:8831; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec8832; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08833; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08834; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18835; GFX1064-DPP-NEXT: s_mov_b32 s14, -18836; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e160008837; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s118838; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v08839; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 08840; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v08841; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc8842; GFX1064-DPP-NEXT: s_cbranch_execz .LBB13_38843; GFX1064-DPP-NEXT: ; %bb.1:8844; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[0:1]8845; GFX1064-DPP-NEXT: s_mov_b32 s3, 0x433000008846; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248847; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]8848; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 08849; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)8850; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x08851; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8852; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)8853; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s28854; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s38855; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 08856; GFX1064-DPP-NEXT: .LBB13_2: ; %atomicrmw.start8857; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=18858; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8859; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8860; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)8861; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8862; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v18863; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v08864; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8865; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]8866; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB13_28867; GFX1064-DPP-NEXT: .LBB13_3:8868; GFX1064-DPP-NEXT: s_endpgm8869;8870; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8871; GFX1032-DPP: ; %bb.0:8872; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo8873; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD08874; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 08875; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD18876; GFX1032-DPP-NEXT: s_mov_b32 s14, -18877; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c160008878; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s118879; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v08880; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 08881; GFX1032-DPP-NEXT: s_mov_b32 s2, 08882; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo8883; GFX1032-DPP-NEXT: s_cbranch_execz .LBB13_38884; GFX1032-DPP-NEXT: ; %bb.1:8885; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s6, s08886; GFX1032-DPP-NEXT: s_mov_b32 s7, 0x433000008887; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x248888; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]8889; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 08890; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)8891; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x08892; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8893; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)8894; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s48895; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s58896; GFX1032-DPP-NEXT: .LBB13_2: ; %atomicrmw.start8897; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=18898; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8899; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc8900; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)8901; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8902; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v18903; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v08904; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s28905; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s28906; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB13_28907; GFX1032-DPP-NEXT: .LBB13_3:8908; GFX1032-DPP-NEXT: s_endpgm8909;8910; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8911; GFX1164-DPP: ; %bb.0:8912; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec8913; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x433000008914; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s08915; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08916; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec8917; GFX1164-DPP-NEXT: s_clause 0x18918; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:48919; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off8920; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off8921; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v28922; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)8923; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v28924; GFX1164-DPP-NEXT: s_cbranch_execz .LBB13_38925; GFX1164-DPP-NEXT: ; %bb.1:8926; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)8927; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]8928; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x248929; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 08930; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)8931; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x08932; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)8933; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8934; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)8935; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s28936; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s38937; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 08938; GFX1164-DPP-NEXT: .LBB13_2: ; %atomicrmw.start8939; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=18940; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)8941; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8942; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc8943; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)8944; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]8945; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v18946; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v08947; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]8948; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8949; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]8950; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB13_28951; GFX1164-DPP-NEXT: .LBB13_3:8952; GFX1164-DPP-NEXT: s_endpgm8953;8954; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_agent_scope_strictfp:8955; GFX1132-DPP: ; %bb.0:8956; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo8957; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8958; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s08959; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 08960; GFX1132-DPP-NEXT: s_mov_b32 s2, 08961; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo8962; GFX1132-DPP-NEXT: s_clause 0x18963; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:48964; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off8965; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off8966; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v28967; GFX1132-DPP-NEXT: s_cbranch_execz .LBB13_38968; GFX1132-DPP-NEXT: ; %bb.1:8969; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)8970; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]8971; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x248972; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 08973; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)8974; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x08975; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)8976; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]8977; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)8978; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s58979; GFX1132-DPP-NEXT: .LBB13_2: ; %atomicrmw.start8980; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=18981; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)8982; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]8983; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc8984; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)8985; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]8986; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v08987; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s28988; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)8989; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s28990; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB13_28991; GFX1132-DPP-NEXT: .LBB13_3:8992; GFX1132-DPP-NEXT: s_endpgm8993 %result = atomicrmw fadd ptr addrspace(1) %ptr, double 4.0 syncscope("agent") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !18994 ret void8995}8996 8997define amdgpu_kernel void @global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe(ptr addrspace(1) %ptr) #0 {8998; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:8999; GFX7LESS: ; %bb.0:9000; GFX7LESS-NEXT: s_mov_b32 s32, 09001; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09002; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19003; GFX7LESS-NEXT: s_mov_b32 s38, -19004; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0009005; GFX7LESS-NEXT: s_add_u32 s36, s36, s119006; GFX7LESS-NEXT: s_addc_u32 s37, s37, 09007; GFX7LESS-NEXT: s_mov_b32 s14, s109008; GFX7LESS-NEXT: s_mov_b32 s13, s99009; GFX7LESS-NEXT: s_mov_b32 s12, s89010; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]9011; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]9012; GFX7LESS-NEXT: s_add_u32 s8, s34, 449013; GFX7LESS-NEXT: s_addc_u32 s9, s35, 09014; GFX7LESS-NEXT: s_getpc_b64 s[4:5]9015; GFX7LESS-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49016; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129017; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09018; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v29019; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v19020; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v19021; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v29022; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]9023; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]9024; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]9025; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]9026; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)9027; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]9028; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec9029; GFX7LESS-NEXT: v_mov_b32_e32 v4, 09030; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 19031; GFX7LESS-NEXT: .LBB14_1: ; %ComputeLoop9032; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=19033; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]9034; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s49035; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s49036; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s49037; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]9038; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 09039; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]9040; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9041; GFX7LESS-NEXT: s_cbranch_vccnz .LBB14_19042; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd9043; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 09044; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v09045; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09046; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc9047; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9048; GFX7LESS-NEXT: s_cbranch_execz .LBB14_59049; GFX7LESS-NEXT: ; %bb.3:9050; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x99051; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0009052; GFX7LESS-NEXT: s_mov_b32 s2, -19053; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)9054; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 09055; GFX7LESS-NEXT: s_mov_b64 s[4:5], 09056; GFX7LESS-NEXT: .LBB14_4: ; %atomicrmw.start9057; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=19058; GFX7LESS-NEXT: s_waitcnt vmcnt(0)9059; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9060; GFX7LESS-NEXT: s_waitcnt expcnt(0)9061; GFX7LESS-NEXT: v_mov_b32_e32 v9, v39062; GFX7LESS-NEXT: v_mov_b32_e32 v8, v29063; GFX7LESS-NEXT: v_mov_b32_e32 v7, v19064; GFX7LESS-NEXT: v_mov_b32_e32 v6, v09065; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc9066; GFX7LESS-NEXT: s_waitcnt vmcnt(0)9067; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]9068; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]9069; GFX7LESS-NEXT: v_mov_b32_e32 v2, v69070; GFX7LESS-NEXT: v_mov_b32_e32 v3, v79071; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]9072; GFX7LESS-NEXT: s_cbranch_execnz .LBB14_49073; GFX7LESS-NEXT: .LBB14_5:9074; GFX7LESS-NEXT: s_endpgm9075;9076; GFX9-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9077; GFX9: ; %bb.0:9078; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09079; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19080; GFX9-NEXT: s_mov_b32 s38, -19081; GFX9-NEXT: s_mov_b32 s39, 0xe000009082; GFX9-NEXT: s_add_u32 s36, s36, s119083; GFX9-NEXT: s_addc_u32 s37, s37, 09084; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]9085; GFX9-NEXT: s_mov_b32 s12, s89086; GFX9-NEXT: s_add_u32 s8, s34, 449087; GFX9-NEXT: s_mov_b32 s13, s99088; GFX9-NEXT: s_addc_u32 s9, s35, 09089; GFX9-NEXT: s_getpc_b64 s[4:5]9090; GFX9-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49091; GFX9-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129092; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09093; GFX9-NEXT: s_mov_b32 s14, s109094; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]9095; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v29096; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v19097; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]9098; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]9099; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]9100; GFX9-NEXT: v_or3_b32 v31, v0, v1, v29101; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]9102; GFX9-NEXT: s_mov_b32 s32, 09103; GFX9-NEXT: s_waitcnt lgkmcnt(0)9104; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]9105; GFX9-NEXT: v_mov_b32_e32 v4, 09106; GFX9-NEXT: s_mov_b64 s[0:1], exec9107; GFX9-NEXT: v_bfrev_b32_e32 v5, 19108; GFX9-NEXT: .LBB14_1: ; %ComputeLoop9109; GFX9-NEXT: ; =>This Inner Loop Header: Depth=19110; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]9111; GFX9-NEXT: v_readlane_b32 s3, v1, s49112; GFX9-NEXT: v_readlane_b32 s2, v0, s49113; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9114; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s49115; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]9116; GFX9-NEXT: s_cbranch_scc1 .LBB14_19117; GFX9-NEXT: ; %bb.2: ; %ComputeEnd9118; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09119; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09120; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09121; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc9122; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9123; GFX9-NEXT: s_cbranch_execz .LBB14_59124; GFX9-NEXT: ; %bb.3:9125; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249126; GFX9-NEXT: v_mov_b32_e32 v6, 09127; GFX9-NEXT: s_mov_b64 s[2:3], 09128; GFX9-NEXT: s_waitcnt lgkmcnt(0)9129; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]9130; GFX9-NEXT: .LBB14_4: ; %atomicrmw.start9131; GFX9-NEXT: ; =>This Inner Loop Header: Depth=19132; GFX9-NEXT: s_waitcnt vmcnt(0)9133; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9134; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9135; GFX9-NEXT: s_waitcnt vmcnt(0)9136; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9137; GFX9-NEXT: v_mov_b32_e32 v3, v19138; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9139; GFX9-NEXT: v_mov_b32_e32 v2, v09140; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]9141; GFX9-NEXT: s_cbranch_execnz .LBB14_49142; GFX9-NEXT: .LBB14_5:9143; GFX9-NEXT: s_endpgm9144;9145; GFX1064-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9146; GFX1064: ; %bb.0:9147; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09148; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19149; GFX1064-NEXT: s_mov_b32 s38, -19150; GFX1064-NEXT: s_mov_b32 s39, 0x31e160009151; GFX1064-NEXT: s_add_u32 s36, s36, s119152; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]9153; GFX1064-NEXT: s_addc_u32 s37, s37, 09154; GFX1064-NEXT: s_mov_b32 s12, s89155; GFX1064-NEXT: s_add_u32 s8, s34, 449156; GFX1064-NEXT: s_mov_b32 s13, s99157; GFX1064-NEXT: s_addc_u32 s9, s35, 09158; GFX1064-NEXT: s_getpc_b64 s[4:5]9159; GFX1064-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49160; GFX1064-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129161; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v29162; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09163; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v19164; GFX1064-NEXT: s_mov_b32 s14, s109165; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]9166; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]9167; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]9168; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v29169; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]9170; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]9171; GFX1064-NEXT: s_mov_b32 s32, 09172; GFX1064-NEXT: s_waitcnt lgkmcnt(0)9173; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]9174; GFX1064-NEXT: v_mov_b32_e32 v4, 09175; GFX1064-NEXT: v_bfrev_b32_e32 v5, 19176; GFX1064-NEXT: s_mov_b64 s[0:1], exec9177; GFX1064-NEXT: .LBB14_1: ; %ComputeLoop9178; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=19179; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]9180; GFX1064-NEXT: v_readlane_b32 s3, v1, s49181; GFX1064-NEXT: v_readlane_b32 s2, v0, s49182; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9183; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s49184; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]9185; GFX1064-NEXT: s_cbranch_scc1 .LBB14_19186; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd9187; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09188; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09189; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09190; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc9191; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9192; GFX1064-NEXT: s_cbranch_execz .LBB14_59193; GFX1064-NEXT: ; %bb.3:9194; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249195; GFX1064-NEXT: v_mov_b32_e32 v6, 09196; GFX1064-NEXT: s_mov_b64 s[2:3], 09197; GFX1064-NEXT: s_waitcnt lgkmcnt(0)9198; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]9199; GFX1064-NEXT: .LBB14_4: ; %atomicrmw.start9200; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=19201; GFX1064-NEXT: s_waitcnt vmcnt(0)9202; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9203; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9204; GFX1064-NEXT: s_waitcnt vmcnt(0)9205; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9206; GFX1064-NEXT: v_mov_b32_e32 v3, v19207; GFX1064-NEXT: v_mov_b32_e32 v2, v09208; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9209; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]9210; GFX1064-NEXT: s_cbranch_execnz .LBB14_49211; GFX1064-NEXT: .LBB14_5:9212; GFX1064-NEXT: s_endpgm9213;9214; GFX1032-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9215; GFX1032: ; %bb.0:9216; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09217; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19218; GFX1032-NEXT: s_mov_b32 s38, -19219; GFX1032-NEXT: s_mov_b32 s39, 0x31c160009220; GFX1032-NEXT: s_add_u32 s36, s36, s119221; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]9222; GFX1032-NEXT: s_addc_u32 s37, s37, 09223; GFX1032-NEXT: s_mov_b32 s12, s89224; GFX1032-NEXT: s_add_u32 s8, s34, 449225; GFX1032-NEXT: s_mov_b32 s13, s99226; GFX1032-NEXT: s_addc_u32 s9, s35, 09227; GFX1032-NEXT: s_getpc_b64 s[4:5]9228; GFX1032-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49229; GFX1032-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129230; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v29231; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09232; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v19233; GFX1032-NEXT: s_mov_b32 s14, s109234; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]9235; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]9236; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]9237; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v29238; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]9239; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]9240; GFX1032-NEXT: s_mov_b32 s32, 09241; GFX1032-NEXT: s_waitcnt lgkmcnt(0)9242; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]9243; GFX1032-NEXT: v_mov_b32_e32 v4, 09244; GFX1032-NEXT: v_bfrev_b32_e32 v5, 19245; GFX1032-NEXT: s_mov_b32 s0, exec_lo9246; GFX1032-NEXT: .LBB14_1: ; %ComputeLoop9247; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=19248; GFX1032-NEXT: s_ff1_i32_b32 s1, s09249; GFX1032-NEXT: v_readlane_b32 s3, v1, s19250; GFX1032-NEXT: v_readlane_b32 s2, v0, s19251; GFX1032-NEXT: s_lshl_b32 s1, 1, s19252; GFX1032-NEXT: s_andn2_b32 s0, s0, s19253; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9254; GFX1032-NEXT: s_cbranch_scc1 .LBB14_19255; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd9256; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09257; GFX1032-NEXT: s_mov_b32 s2, 09258; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v09259; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo9260; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s09261; GFX1032-NEXT: s_cbranch_execz .LBB14_59262; GFX1032-NEXT: ; %bb.3:9263; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249264; GFX1032-NEXT: v_mov_b32_e32 v6, 09265; GFX1032-NEXT: s_waitcnt lgkmcnt(0)9266; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]9267; GFX1032-NEXT: .LBB14_4: ; %atomicrmw.start9268; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=19269; GFX1032-NEXT: s_waitcnt vmcnt(0)9270; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9271; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc9272; GFX1032-NEXT: s_waitcnt vmcnt(0)9273; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9274; GFX1032-NEXT: v_mov_b32_e32 v3, v19275; GFX1032-NEXT: v_mov_b32_e32 v2, v09276; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s29277; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s29278; GFX1032-NEXT: s_cbranch_execnz .LBB14_49279; GFX1032-NEXT: .LBB14_5:9280; GFX1032-NEXT: s_endpgm9281;9282; GFX1164-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9283; GFX1164: ; %bb.0:9284; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]9285; GFX1164-NEXT: s_mov_b32 s12, s89286; GFX1164-NEXT: s_add_u32 s8, s34, 449287; GFX1164-NEXT: s_mov_b32 s13, s99288; GFX1164-NEXT: s_addc_u32 s9, s35, 09289; GFX1164-NEXT: s_getpc_b64 s[4:5]9290; GFX1164-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49291; GFX1164-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129292; GFX1164-NEXT: v_mov_b32_e32 v31, v09293; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x09294; GFX1164-NEXT: s_mov_b32 s14, s109295; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]9296; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]9297; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]9298; GFX1164-NEXT: s_mov_b32 s32, 09299; GFX1164-NEXT: s_waitcnt lgkmcnt(0)9300; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]9301; GFX1164-NEXT: v_mov_b32_e32 v4, 09302; GFX1164-NEXT: v_bfrev_b32_e32 v5, 19303; GFX1164-NEXT: s_mov_b64 s[0:1], exec9304; GFX1164-NEXT: .LBB14_1: ; %ComputeLoop9305; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=19306; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)9307; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]9308; GFX1164-NEXT: v_readlane_b32 s3, v1, s49309; GFX1164-NEXT: v_readlane_b32 s2, v0, s49310; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9311; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9312; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s49313; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]9314; GFX1164-NEXT: s_cbranch_scc1 .LBB14_19315; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd9316; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09317; GFX1164-NEXT: s_mov_b64 s[0:1], exec9318; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9319; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v09320; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v09321; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9322; GFX1164-NEXT: s_cbranch_execz .LBB14_59323; GFX1164-NEXT: ; %bb.3:9324; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x249325; GFX1164-NEXT: v_mov_b32_e32 v6, 09326; GFX1164-NEXT: s_mov_b64 s[2:3], 09327; GFX1164-NEXT: s_waitcnt lgkmcnt(0)9328; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]9329; GFX1164-NEXT: .LBB14_4: ; %atomicrmw.start9330; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=19331; GFX1164-NEXT: s_waitcnt vmcnt(0)9332; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9333; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9334; GFX1164-NEXT: s_waitcnt vmcnt(0)9335; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]9336; GFX1164-NEXT: v_mov_b32_e32 v3, v19337; GFX1164-NEXT: v_mov_b32_e32 v2, v09338; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9339; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9340; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]9341; GFX1164-NEXT: s_cbranch_execnz .LBB14_49342; GFX1164-NEXT: .LBB14_5:9343; GFX1164-NEXT: s_endpgm9344;9345; GFX1132-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9346; GFX1132: ; %bb.0:9347; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]9348; GFX1132-NEXT: v_mov_b32_e32 v31, v09349; GFX1132-NEXT: s_add_u32 s8, s34, 449350; GFX1132-NEXT: s_addc_u32 s9, s35, 09351; GFX1132-NEXT: s_getpc_b64 s[4:5]9352; GFX1132-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49353; GFX1132-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129354; GFX1132-NEXT: s_mov_b32 s12, s139355; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x09356; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]9357; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]9358; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]9359; GFX1132-NEXT: s_mov_b32 s13, s149360; GFX1132-NEXT: s_mov_b32 s14, s159361; GFX1132-NEXT: s_mov_b32 s32, 09362; GFX1132-NEXT: s_waitcnt lgkmcnt(0)9363; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]9364; GFX1132-NEXT: v_mov_b32_e32 v4, 09365; GFX1132-NEXT: v_bfrev_b32_e32 v5, 19366; GFX1132-NEXT: s_mov_b32 s0, exec_lo9367; GFX1132-NEXT: .LBB14_1: ; %ComputeLoop9368; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=19369; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)9370; GFX1132-NEXT: s_ctz_i32_b32 s1, s09371; GFX1132-NEXT: v_readlane_b32 s3, v1, s19372; GFX1132-NEXT: v_readlane_b32 s2, v0, s19373; GFX1132-NEXT: s_lshl_b32 s1, 1, s19374; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9375; GFX1132-NEXT: s_and_not1_b32 s0, s0, s19376; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9377; GFX1132-NEXT: s_cbranch_scc1 .LBB14_19378; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd9379; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09380; GFX1132-NEXT: s_mov_b32 s2, 09381; GFX1132-NEXT: s_mov_b32 s0, exec_lo9382; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)9383; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v09384; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s09385; GFX1132-NEXT: s_cbranch_execz .LBB14_59386; GFX1132-NEXT: ; %bb.3:9387; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x249388; GFX1132-NEXT: v_mov_b32_e32 v6, 09389; GFX1132-NEXT: s_waitcnt lgkmcnt(0)9390; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]9391; GFX1132-NEXT: .LBB14_4: ; %atomicrmw.start9392; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=19393; GFX1132-NEXT: s_waitcnt vmcnt(0)9394; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9395; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc9396; GFX1132-NEXT: s_waitcnt vmcnt(0)9397; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]9398; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v09399; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s29400; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9401; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s29402; GFX1132-NEXT: s_cbranch_execnz .LBB14_49403; GFX1132-NEXT: .LBB14_5:9404; GFX1132-NEXT: s_endpgm9405;9406; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9407; GFX7LESS-DPP: ; %bb.0:9408; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 09409; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD09410; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD19411; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -19412; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f0009413; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s119414; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 09415; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s109416; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s99417; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s89418; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9419; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x99420; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf0009421; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -19422; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 449423; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 09424; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]9425; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49426; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129427; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09428; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29429; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19430; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v19431; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v29432; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9433; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9434; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]9435; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]9436; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)9437; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9438; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 09439; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 09440; GFX7LESS-DPP-NEXT: .LBB14_1: ; %atomicrmw.start9441; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=19442; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)9443; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[0:1]9444; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)9445; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v59446; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v49447; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v39448; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v29449; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc9450; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)9451; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]9452; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]9453; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v69454; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v79455; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]9456; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB14_19457; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end9458; GFX7LESS-DPP-NEXT: s_endpgm9459;9460; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9461; GFX9-DPP: ; %bb.0:9462; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09463; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19464; GFX9-DPP-NEXT: s_mov_b32 s38, -19465; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe000009466; GFX9-DPP-NEXT: s_add_u32 s36, s36, s119467; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 09468; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9469; GFX9-DPP-NEXT: s_mov_b32 s12, s89470; GFX9-DPP-NEXT: s_add_u32 s8, s34, 449471; GFX9-DPP-NEXT: s_mov_b32 s13, s99472; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 09473; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]9474; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49475; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129476; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09477; GFX9-DPP-NEXT: s_mov_b32 s14, s109478; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9479; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29480; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19481; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9482; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9483; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]9484; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v29485; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]9486; GFX9-DPP-NEXT: s_mov_b32 s32, 09487; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)9488; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9489; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19490; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 19491; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]9492; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]9493; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19494; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09495; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 09496; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf9497; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf9498; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9499; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19500; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09501; GFX9-DPP-NEXT: s_nop 09502; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf9503; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf9504; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9505; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19506; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09507; GFX9-DPP-NEXT: s_nop 09508; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf9509; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf9510; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9511; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19512; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09513; GFX9-DPP-NEXT: s_nop 09514; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf9515; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf9516; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9517; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 19518; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 09519; GFX9-DPP-NEXT: s_nop 09520; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf9521; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf9522; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]9523; GFX9-DPP-NEXT: s_nop 19524; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf9525; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf9526; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]9527; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]9528; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 09529; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 09530; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v19531; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19532; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 639533; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 639534; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]9535; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]9536; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v19537; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc9538; GFX9-DPP-NEXT: s_cbranch_execz .LBB14_39539; GFX9-DPP-NEXT: ; %bb.1:9540; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x249541; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 09542; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)9543; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]9544; GFX9-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9545; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=19546; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)9547; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], s[0:1]9548; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc9549; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)9550; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]9551; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v29552; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]9553; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v19554; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]9555; GFX9-DPP-NEXT: s_cbranch_execnz .LBB14_29556; GFX9-DPP-NEXT: .LBB14_3:9557; GFX9-DPP-NEXT: s_endpgm9558;9559; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9560; GFX1064-DPP: ; %bb.0:9561; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09562; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19563; GFX1064-DPP-NEXT: s_mov_b32 s38, -19564; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e160009565; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s119566; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9567; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 09568; GFX1064-DPP-NEXT: s_mov_b32 s12, s89569; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 449570; GFX1064-DPP-NEXT: s_mov_b32 s13, s99571; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 09572; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]9573; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49574; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129575; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29576; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09577; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19578; GFX1064-DPP-NEXT: s_mov_b32 s14, s109579; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9580; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9581; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9582; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v29583; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]9584; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]9585; GFX1064-DPP-NEXT: s_mov_b32 s32, 09586; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)9587; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9588; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19589; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 19590; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 09591; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]9592; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]9593; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf9594; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf9595; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]9596; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 19597; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 09598; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf9599; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf9600; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9601; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 19602; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 09603; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf9604; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf9605; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9606; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 19607; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 09608; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf9609; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf9610; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9611; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 09612; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 09613; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9614; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 09615; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 09616; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 329617; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 329618; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]9619; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]9620; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09621; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 09622; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v09623; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v39624; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v49625; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v79626; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc9627; GFX1064-DPP-NEXT: s_cbranch_execz .LBB14_39628; GFX1064-DPP-NEXT: ; %bb.1:9629; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249630; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 09631; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)9632; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]9633; GFX1064-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9634; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=19635; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)9636; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]9637; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc9638; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)9639; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]9640; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v89641; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v79642; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9643; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]9644; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB14_29645; GFX1064-DPP-NEXT: .LBB14_3:9646; GFX1064-DPP-NEXT: s_endpgm9647;9648; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9649; GFX1032-DPP: ; %bb.0:9650; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09651; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19652; GFX1032-DPP-NEXT: s_mov_b32 s38, -19653; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c160009654; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s119655; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9656; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 09657; GFX1032-DPP-NEXT: s_mov_b32 s12, s89658; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 449659; GFX1032-DPP-NEXT: s_mov_b32 s13, s99660; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 09661; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]9662; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49663; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129664; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v29665; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09666; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v19667; GFX1032-DPP-NEXT: s_mov_b32 s14, s109668; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9669; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9670; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9671; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v29672; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]9673; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]9674; GFX1032-DPP-NEXT: s_mov_b32 s32, 09675; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)9676; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9677; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -19678; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 19679; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 09680; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s09681; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s09682; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf9683; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf9684; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]9685; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 19686; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 09687; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf9688; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf9689; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9690; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 19691; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 09692; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf9693; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf9694; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9695; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 19696; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 09697; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf9698; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf9699; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9700; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 09701; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 09702; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]9703; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s09704; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 09705; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v39706; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 09707; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v49708; GFX1032-DPP-NEXT: s_mov_b32 s2, 09709; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v79710; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo9711; GFX1032-DPP-NEXT: s_cbranch_execz .LBB14_39712; GFX1032-DPP-NEXT: ; %bb.1:9713; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x249714; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)9715; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]9716; GFX1032-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9717; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=19718; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)9719; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]9720; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc9721; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)9722; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]9723; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v89724; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v79725; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s29726; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s29727; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB14_29728; GFX1032-DPP-NEXT: .LBB14_3:9729; GFX1032-DPP-NEXT: s_endpgm9730;9731; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9732; GFX1164-DPP: ; %bb.0:9733; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9734; GFX1164-DPP-NEXT: s_mov_b32 s12, s89735; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 449736; GFX1164-DPP-NEXT: s_mov_b32 s13, s99737; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 09738; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]9739; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49740; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129741; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v09742; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x09743; GFX1164-DPP-NEXT: s_mov_b32 s14, s109744; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9745; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9746; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9747; GFX1164-DPP-NEXT: s_mov_b32 s32, 09748; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)9749; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9750; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -19751; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 19752; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 09753; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]9754; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]9755; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9756; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf9757; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf9758; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)9759; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]9760; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 19761; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 09762; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf9763; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9764; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf9765; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9766; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 19767; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 09768; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9769; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf9770; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf9771; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)9772; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9773; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 19774; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 09775; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf9776; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9777; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf9778; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9779; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)9780; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 09781; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 09782; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9783; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9784; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v39785; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9786; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v29787; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9788; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]9789; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)9790; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 09791; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 09792; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec9793; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)9794; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v09795; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)9796; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v29797; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v39798; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v69799; GFX1164-DPP-NEXT: s_cbranch_execz .LBB14_39800; GFX1164-DPP-NEXT: ; %bb.1:9801; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x249802; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 09803; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)9804; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]9805; GFX1164-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9806; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=19807; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)9808; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]9809; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc9810; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)9811; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]9812; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v79813; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v69814; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]9815; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9816; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]9817; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB14_29818; GFX1164-DPP-NEXT: .LBB14_3:9819; GFX1164-DPP-NEXT: s_endpgm9820;9821; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe:9822; GFX1132-DPP: ; %bb.0:9823; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]9824; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v09825; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 449826; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 09827; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]9828; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.double.value@gotpcrel32@lo+49829; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.double.value@gotpcrel32@hi+129830; GFX1132-DPP-NEXT: s_mov_b32 s12, s139831; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x09832; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]9833; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]9834; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]9835; GFX1132-DPP-NEXT: s_mov_b32 s13, s149836; GFX1132-DPP-NEXT: s_mov_b32 s14, s159837; GFX1132-DPP-NEXT: s_mov_b32 s32, 09838; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)9839; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]9840; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -19841; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 19842; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 09843; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s09844; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s09845; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9846; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf9847; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf9848; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)9849; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]9850; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 19851; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 09852; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf9853; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9854; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf9855; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9856; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 19857; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 09858; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9859; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf9860; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf9861; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)9862; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9863; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 19864; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 09865; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf9866; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9867; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf9868; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9869; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)9870; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 09871; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 09872; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9873; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]9874; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s09875; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v29876; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 09877; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)9878; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v39879; GFX1132-DPP-NEXT: s_mov_b32 s2, 09880; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo9881; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v69882; GFX1132-DPP-NEXT: s_cbranch_execz .LBB14_39883; GFX1132-DPP-NEXT: ; %bb.1:9884; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x249885; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)9886; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]9887; GFX1132-DPP-NEXT: .LBB14_2: ; %atomicrmw.start9888; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=19889; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)9890; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]9891; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc9892; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)9893; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]9894; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v69895; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s29896; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)9897; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s29898; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB14_29899; GFX1132-DPP-NEXT: .LBB14_3:9900; GFX1132-DPP-NEXT: s_endpgm9901 %divValue = call double @div.double.value()9902 %result = atomicrmw fadd ptr addrspace(1) %ptr, double %divValue syncscope("agent") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !19903 ret void9904}9905 9906define amdgpu_kernel void @global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp(ptr addrspace(1) %ptr) #1 {9907; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:9908; GFX7LESS: ; %bb.0:9909; GFX7LESS-NEXT: s_mov_b32 s32, 09910; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09911; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19912; GFX7LESS-NEXT: s_mov_b32 s38, -19913; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f0009914; GFX7LESS-NEXT: s_add_u32 s36, s36, s119915; GFX7LESS-NEXT: s_addc_u32 s37, s37, 09916; GFX7LESS-NEXT: s_mov_b32 s14, s109917; GFX7LESS-NEXT: s_mov_b32 s13, s99918; GFX7LESS-NEXT: s_mov_b32 s12, s89919; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]9920; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]9921; GFX7LESS-NEXT: s_add_u32 s8, s34, 449922; GFX7LESS-NEXT: s_addc_u32 s9, s35, 09923; GFX7LESS-NEXT: s_getpc_b64 s[4:5]9924; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+49925; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+129926; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x09927; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v29928; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v19929; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v19930; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v29931; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]9932; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]9933; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]9934; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]9935; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)9936; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]9937; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec9938; GFX7LESS-NEXT: v_mov_b32_e32 v4, 09939; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 19940; GFX7LESS-NEXT: .LBB15_1: ; %ComputeLoop9941; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=19942; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]9943; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s49944; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s49945; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s49946; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]9947; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 09948; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]9949; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]9950; GFX7LESS-NEXT: s_cbranch_vccnz .LBB15_19951; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd9952; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 09953; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v09954; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v09955; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc9956; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]9957; GFX7LESS-NEXT: s_cbranch_execz .LBB15_59958; GFX7LESS-NEXT: ; %bb.3:9959; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x99960; GFX7LESS-NEXT: s_mov_b32 s3, 0xf0009961; GFX7LESS-NEXT: s_mov_b32 s2, -19962; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)9963; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 09964; GFX7LESS-NEXT: s_mov_b64 s[4:5], 09965; GFX7LESS-NEXT: .LBB15_4: ; %atomicrmw.start9966; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=19967; GFX7LESS-NEXT: s_waitcnt vmcnt(0)9968; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]9969; GFX7LESS-NEXT: s_waitcnt expcnt(0)9970; GFX7LESS-NEXT: v_mov_b32_e32 v9, v39971; GFX7LESS-NEXT: v_mov_b32_e32 v8, v29972; GFX7LESS-NEXT: v_mov_b32_e32 v7, v19973; GFX7LESS-NEXT: v_mov_b32_e32 v6, v09974; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc9975; GFX7LESS-NEXT: s_waitcnt vmcnt(0)9976; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]9977; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]9978; GFX7LESS-NEXT: v_mov_b32_e32 v2, v69979; GFX7LESS-NEXT: v_mov_b32_e32 v3, v79980; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]9981; GFX7LESS-NEXT: s_cbranch_execnz .LBB15_49982; GFX7LESS-NEXT: .LBB15_5:9983; GFX7LESS-NEXT: s_endpgm9984;9985; GFX9-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:9986; GFX9: ; %bb.0:9987; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD09988; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD19989; GFX9-NEXT: s_mov_b32 s38, -19990; GFX9-NEXT: s_mov_b32 s39, 0xe000009991; GFX9-NEXT: s_add_u32 s36, s36, s119992; GFX9-NEXT: s_addc_u32 s37, s37, 09993; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]9994; GFX9-NEXT: s_mov_b32 s12, s89995; GFX9-NEXT: s_add_u32 s8, s34, 449996; GFX9-NEXT: s_mov_b32 s13, s99997; GFX9-NEXT: s_addc_u32 s9, s35, 09998; GFX9-NEXT: s_getpc_b64 s[4:5]9999; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410000; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210001; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010002; GFX9-NEXT: s_mov_b32 s14, s1010003; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]10004; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v210005; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v110006; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]10007; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]10008; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]10009; GFX9-NEXT: v_or3_b32 v31, v0, v1, v210010; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]10011; GFX9-NEXT: s_mov_b32 s32, 010012; GFX9-NEXT: s_waitcnt lgkmcnt(0)10013; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]10014; GFX9-NEXT: v_mov_b32_e32 v4, 010015; GFX9-NEXT: s_mov_b64 s[0:1], exec10016; GFX9-NEXT: v_bfrev_b32_e32 v5, 110017; GFX9-NEXT: .LBB15_1: ; %ComputeLoop10018; GFX9-NEXT: ; =>This Inner Loop Header: Depth=110019; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]10020; GFX9-NEXT: v_readlane_b32 s3, v1, s410021; GFX9-NEXT: v_readlane_b32 s2, v0, s410022; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10023; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s410024; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]10025; GFX9-NEXT: s_cbranch_scc1 .LBB15_110026; GFX9-NEXT: ; %bb.2: ; %ComputeEnd10027; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010028; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010029; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010030; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc10031; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10032; GFX9-NEXT: s_cbranch_execz .LBB15_510033; GFX9-NEXT: ; %bb.3:10034; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410035; GFX9-NEXT: v_mov_b32_e32 v6, 010036; GFX9-NEXT: s_mov_b64 s[2:3], 010037; GFX9-NEXT: s_waitcnt lgkmcnt(0)10038; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]10039; GFX9-NEXT: .LBB15_4: ; %atomicrmw.start10040; GFX9-NEXT: ; =>This Inner Loop Header: Depth=110041; GFX9-NEXT: s_waitcnt vmcnt(0)10042; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10043; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10044; GFX9-NEXT: s_waitcnt vmcnt(0)10045; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10046; GFX9-NEXT: v_mov_b32_e32 v3, v110047; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10048; GFX9-NEXT: v_mov_b32_e32 v2, v010049; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]10050; GFX9-NEXT: s_cbranch_execnz .LBB15_410051; GFX9-NEXT: .LBB15_5:10052; GFX9-NEXT: s_endpgm10053;10054; GFX1064-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10055; GFX1064: ; %bb.0:10056; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010057; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110058; GFX1064-NEXT: s_mov_b32 s38, -110059; GFX1064-NEXT: s_mov_b32 s39, 0x31e1600010060; GFX1064-NEXT: s_add_u32 s36, s36, s1110061; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]10062; GFX1064-NEXT: s_addc_u32 s37, s37, 010063; GFX1064-NEXT: s_mov_b32 s12, s810064; GFX1064-NEXT: s_add_u32 s8, s34, 4410065; GFX1064-NEXT: s_mov_b32 s13, s910066; GFX1064-NEXT: s_addc_u32 s9, s35, 010067; GFX1064-NEXT: s_getpc_b64 s[4:5]10068; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410069; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210070; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v210071; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010072; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v110073; GFX1064-NEXT: s_mov_b32 s14, s1010074; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]10075; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]10076; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]10077; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v210078; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]10079; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]10080; GFX1064-NEXT: s_mov_b32 s32, 010081; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10082; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]10083; GFX1064-NEXT: v_mov_b32_e32 v4, 010084; GFX1064-NEXT: v_bfrev_b32_e32 v5, 110085; GFX1064-NEXT: s_mov_b64 s[0:1], exec10086; GFX1064-NEXT: .LBB15_1: ; %ComputeLoop10087; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=110088; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]10089; GFX1064-NEXT: v_readlane_b32 s3, v1, s410090; GFX1064-NEXT: v_readlane_b32 s2, v0, s410091; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10092; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s410093; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]10094; GFX1064-NEXT: s_cbranch_scc1 .LBB15_110095; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd10096; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010097; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010098; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010099; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc10100; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10101; GFX1064-NEXT: s_cbranch_execz .LBB15_510102; GFX1064-NEXT: ; %bb.3:10103; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410104; GFX1064-NEXT: v_mov_b32_e32 v6, 010105; GFX1064-NEXT: s_mov_b64 s[2:3], 010106; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10107; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]10108; GFX1064-NEXT: .LBB15_4: ; %atomicrmw.start10109; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=110110; GFX1064-NEXT: s_waitcnt vmcnt(0)10111; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10112; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10113; GFX1064-NEXT: s_waitcnt vmcnt(0)10114; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10115; GFX1064-NEXT: v_mov_b32_e32 v3, v110116; GFX1064-NEXT: v_mov_b32_e32 v2, v010117; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10118; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]10119; GFX1064-NEXT: s_cbranch_execnz .LBB15_410120; GFX1064-NEXT: .LBB15_5:10121; GFX1064-NEXT: s_endpgm10122;10123; GFX1032-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10124; GFX1032: ; %bb.0:10125; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010126; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110127; GFX1032-NEXT: s_mov_b32 s38, -110128; GFX1032-NEXT: s_mov_b32 s39, 0x31c1600010129; GFX1032-NEXT: s_add_u32 s36, s36, s1110130; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]10131; GFX1032-NEXT: s_addc_u32 s37, s37, 010132; GFX1032-NEXT: s_mov_b32 s12, s810133; GFX1032-NEXT: s_add_u32 s8, s34, 4410134; GFX1032-NEXT: s_mov_b32 s13, s910135; GFX1032-NEXT: s_addc_u32 s9, s35, 010136; GFX1032-NEXT: s_getpc_b64 s[4:5]10137; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410138; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210139; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v210140; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010141; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v110142; GFX1032-NEXT: s_mov_b32 s14, s1010143; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]10144; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]10145; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]10146; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v210147; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]10148; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]10149; GFX1032-NEXT: s_mov_b32 s32, 010150; GFX1032-NEXT: s_waitcnt lgkmcnt(0)10151; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]10152; GFX1032-NEXT: v_mov_b32_e32 v4, 010153; GFX1032-NEXT: v_bfrev_b32_e32 v5, 110154; GFX1032-NEXT: s_mov_b32 s0, exec_lo10155; GFX1032-NEXT: .LBB15_1: ; %ComputeLoop10156; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=110157; GFX1032-NEXT: s_ff1_i32_b32 s1, s010158; GFX1032-NEXT: v_readlane_b32 s3, v1, s110159; GFX1032-NEXT: v_readlane_b32 s2, v0, s110160; GFX1032-NEXT: s_lshl_b32 s1, 1, s110161; GFX1032-NEXT: s_andn2_b32 s0, s0, s110162; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10163; GFX1032-NEXT: s_cbranch_scc1 .LBB15_110164; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd10165; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010166; GFX1032-NEXT: s_mov_b32 s2, 010167; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v010168; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo10169; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s010170; GFX1032-NEXT: s_cbranch_execz .LBB15_510171; GFX1032-NEXT: ; %bb.3:10172; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410173; GFX1032-NEXT: v_mov_b32_e32 v6, 010174; GFX1032-NEXT: s_waitcnt lgkmcnt(0)10175; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]10176; GFX1032-NEXT: .LBB15_4: ; %atomicrmw.start10177; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=110178; GFX1032-NEXT: s_waitcnt vmcnt(0)10179; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10180; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10181; GFX1032-NEXT: s_waitcnt vmcnt(0)10182; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]10183; GFX1032-NEXT: v_mov_b32_e32 v3, v110184; GFX1032-NEXT: v_mov_b32_e32 v2, v010185; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s210186; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s210187; GFX1032-NEXT: s_cbranch_execnz .LBB15_410188; GFX1032-NEXT: .LBB15_5:10189; GFX1032-NEXT: s_endpgm10190;10191; GFX1164-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10192; GFX1164: ; %bb.0:10193; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]10194; GFX1164-NEXT: s_mov_b32 s12, s810195; GFX1164-NEXT: s_add_u32 s8, s34, 4410196; GFX1164-NEXT: s_mov_b32 s13, s910197; GFX1164-NEXT: s_addc_u32 s9, s35, 010198; GFX1164-NEXT: s_getpc_b64 s[4:5]10199; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410200; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210201; GFX1164-NEXT: v_mov_b32_e32 v31, v010202; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x010203; GFX1164-NEXT: s_mov_b32 s14, s1010204; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]10205; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]10206; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]10207; GFX1164-NEXT: s_mov_b32 s32, 010208; GFX1164-NEXT: s_waitcnt lgkmcnt(0)10209; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]10210; GFX1164-NEXT: v_mov_b32_e32 v4, 010211; GFX1164-NEXT: v_bfrev_b32_e32 v5, 110212; GFX1164-NEXT: s_mov_b64 s[0:1], exec10213; GFX1164-NEXT: .LBB15_1: ; %ComputeLoop10214; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=110215; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)10216; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]10217; GFX1164-NEXT: v_readlane_b32 s3, v1, s410218; GFX1164-NEXT: v_readlane_b32 s2, v0, s410219; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10220; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10221; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s410222; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]10223; GFX1164-NEXT: s_cbranch_scc1 .LBB15_110224; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd10225; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010226; GFX1164-NEXT: s_mov_b64 s[0:1], exec10227; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10228; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v010229; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v010230; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]10231; GFX1164-NEXT: s_cbranch_execz .LBB15_510232; GFX1164-NEXT: ; %bb.3:10233; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410234; GFX1164-NEXT: v_mov_b32_e32 v6, 010235; GFX1164-NEXT: s_mov_b64 s[2:3], 010236; GFX1164-NEXT: s_waitcnt lgkmcnt(0)10237; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]10238; GFX1164-NEXT: .LBB15_4: ; %atomicrmw.start10239; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=110240; GFX1164-NEXT: s_waitcnt vmcnt(0)10241; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10242; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc10243; GFX1164-NEXT: s_waitcnt vmcnt(0)10244; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10245; GFX1164-NEXT: v_mov_b32_e32 v3, v110246; GFX1164-NEXT: v_mov_b32_e32 v2, v010247; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10248; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10249; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]10250; GFX1164-NEXT: s_cbranch_execnz .LBB15_410251; GFX1164-NEXT: .LBB15_5:10252; GFX1164-NEXT: s_endpgm10253;10254; GFX1132-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10255; GFX1132: ; %bb.0:10256; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]10257; GFX1132-NEXT: v_mov_b32_e32 v31, v010258; GFX1132-NEXT: s_add_u32 s8, s34, 4410259; GFX1132-NEXT: s_addc_u32 s9, s35, 010260; GFX1132-NEXT: s_getpc_b64 s[4:5]10261; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410262; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210263; GFX1132-NEXT: s_mov_b32 s12, s1310264; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x010265; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]10266; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]10267; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]10268; GFX1132-NEXT: s_mov_b32 s13, s1410269; GFX1132-NEXT: s_mov_b32 s14, s1510270; GFX1132-NEXT: s_mov_b32 s32, 010271; GFX1132-NEXT: s_waitcnt lgkmcnt(0)10272; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]10273; GFX1132-NEXT: v_mov_b32_e32 v4, 010274; GFX1132-NEXT: v_bfrev_b32_e32 v5, 110275; GFX1132-NEXT: s_mov_b32 s0, exec_lo10276; GFX1132-NEXT: .LBB15_1: ; %ComputeLoop10277; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=110278; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)10279; GFX1132-NEXT: s_ctz_i32_b32 s1, s010280; GFX1132-NEXT: v_readlane_b32 s3, v1, s110281; GFX1132-NEXT: v_readlane_b32 s2, v0, s110282; GFX1132-NEXT: s_lshl_b32 s1, 1, s110283; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10284; GFX1132-NEXT: s_and_not1_b32 s0, s0, s110285; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]10286; GFX1132-NEXT: s_cbranch_scc1 .LBB15_110287; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd10288; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010289; GFX1132-NEXT: s_mov_b32 s2, 010290; GFX1132-NEXT: s_mov_b32 s0, exec_lo10291; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)10292; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v010293; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s010294; GFX1132-NEXT: s_cbranch_execz .LBB15_510295; GFX1132-NEXT: ; %bb.3:10296; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410297; GFX1132-NEXT: v_mov_b32_e32 v6, 010298; GFX1132-NEXT: s_waitcnt lgkmcnt(0)10299; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]10300; GFX1132-NEXT: .LBB15_4: ; %atomicrmw.start10301; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=110302; GFX1132-NEXT: s_waitcnt vmcnt(0)10303; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10304; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc10305; GFX1132-NEXT: s_waitcnt vmcnt(0)10306; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]10307; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v010308; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s210309; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10310; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s210311; GFX1132-NEXT: s_cbranch_execnz .LBB15_410312; GFX1132-NEXT: .LBB15_5:10313; GFX1132-NEXT: s_endpgm10314;10315; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10316; GFX7LESS-DPP: ; %bb.0:10317; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 010318; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD010319; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD110320; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -110321; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f00010322; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s1110323; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 010324; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s1010325; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s910326; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s810327; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10328; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x910329; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf00010330; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -110331; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 4410332; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 010333; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]10334; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410335; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210336; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010337; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210338; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110339; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v110340; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v210341; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10342; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10343; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]10344; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]10345; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)10346; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10347; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 010348; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 010349; GFX7LESS-DPP-NEXT: .LBB15_1: ; %atomicrmw.start10350; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=110351; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)10352; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[0:1]10353; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)10354; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v510355; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v410356; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v310357; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v210358; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc10359; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)10360; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]10361; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]10362; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v610363; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v710364; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]10365; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB15_110366; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end10367; GFX7LESS-DPP-NEXT: s_endpgm10368;10369; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10370; GFX9-DPP: ; %bb.0:10371; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010372; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110373; GFX9-DPP-NEXT: s_mov_b32 s38, -110374; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe0000010375; GFX9-DPP-NEXT: s_add_u32 s36, s36, s1110376; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 010377; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10378; GFX9-DPP-NEXT: s_mov_b32 s12, s810379; GFX9-DPP-NEXT: s_add_u32 s8, s34, 4410380; GFX9-DPP-NEXT: s_mov_b32 s13, s910381; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 010382; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]10383; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410384; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210385; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010386; GFX9-DPP-NEXT: s_mov_b32 s14, s1010387; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10388; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210389; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110390; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10391; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10392; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10393; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v210394; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10395; GFX9-DPP-NEXT: s_mov_b32 s32, 010396; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)10397; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10398; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110399; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 110400; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]10401; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]10402; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110403; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010404; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 010405; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf10406; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf10407; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10408; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110409; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010410; GFX9-DPP-NEXT: s_nop 010411; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf10412; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf10413; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10414; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110415; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010416; GFX9-DPP-NEXT: s_nop 010417; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf10418; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf10419; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10420; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110421; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010422; GFX9-DPP-NEXT: s_nop 010423; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf10424; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf10425; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10426; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 110427; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 010428; GFX9-DPP-NEXT: s_nop 010429; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf10430; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf10431; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]10432; GFX9-DPP-NEXT: s_nop 110433; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf10434; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf10435; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10436; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]10437; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 010438; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 010439; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v110440; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110441; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 6310442; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 6310443; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]10444; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]10445; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v110446; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc10447; GFX9-DPP-NEXT: s_cbranch_execz .LBB15_310448; GFX9-DPP-NEXT: ; %bb.1:10449; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x2410450; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 010451; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)10452; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]10453; GFX9-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10454; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=110455; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)10456; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], s[0:1]10457; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc10458; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)10459; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]10460; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v210461; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]10462; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v110463; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]10464; GFX9-DPP-NEXT: s_cbranch_execnz .LBB15_210465; GFX9-DPP-NEXT: .LBB15_3:10466; GFX9-DPP-NEXT: s_endpgm10467;10468; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10469; GFX1064-DPP: ; %bb.0:10470; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010471; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110472; GFX1064-DPP-NEXT: s_mov_b32 s38, -110473; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e1600010474; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s1110475; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10476; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 010477; GFX1064-DPP-NEXT: s_mov_b32 s12, s810478; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 4410479; GFX1064-DPP-NEXT: s_mov_b32 s13, s910480; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 010481; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]10482; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410483; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210484; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210485; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010486; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110487; GFX1064-DPP-NEXT: s_mov_b32 s14, s1010488; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10489; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10490; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10491; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v210492; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10493; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10494; GFX1064-DPP-NEXT: s_mov_b32 s32, 010495; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)10496; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10497; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110498; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 110499; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 010500; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]10501; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]10502; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf10503; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10504; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10505; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 110506; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 010507; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf10508; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10509; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10510; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 110511; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 010512; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf10513; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10514; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10515; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 110516; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 010517; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf10518; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10519; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10520; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 010521; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010522; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10523; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 010524; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 010525; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 3210526; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 3210527; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]10528; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]10529; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010530; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 010531; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v010532; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v310533; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v410534; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v710535; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc10536; GFX1064-DPP-NEXT: s_cbranch_execz .LBB15_310537; GFX1064-DPP-NEXT: ; %bb.1:10538; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410539; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 010540; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)10541; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]10542; GFX1064-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10543; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=110544; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)10545; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]10546; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc10547; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)10548; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]10549; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v810550; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v710551; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10552; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]10553; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB15_210554; GFX1064-DPP-NEXT: .LBB15_3:10555; GFX1064-DPP-NEXT: s_endpgm10556;10557; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10558; GFX1032-DPP: ; %bb.0:10559; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD010560; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD110561; GFX1032-DPP-NEXT: s_mov_b32 s38, -110562; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c1600010563; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s1110564; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10565; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 010566; GFX1032-DPP-NEXT: s_mov_b32 s12, s810567; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 4410568; GFX1032-DPP-NEXT: s_mov_b32 s13, s910569; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 010570; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]10571; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410572; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210573; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v210574; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x010575; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v110576; GFX1032-DPP-NEXT: s_mov_b32 s14, s1010577; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10578; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10579; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10580; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v210581; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]10582; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]10583; GFX1032-DPP-NEXT: s_mov_b32 s32, 010584; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)10585; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10586; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -110587; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 110588; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 010589; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s010590; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s010591; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf10592; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10593; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]10594; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110595; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010596; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf10597; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10598; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10599; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110600; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010601; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf10602; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10603; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10604; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 110605; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 010606; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf10607; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10608; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10609; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 010610; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010611; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]10612; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s010613; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 010614; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v310615; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 010616; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v410617; GFX1032-DPP-NEXT: s_mov_b32 s2, 010618; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v710619; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo10620; GFX1032-DPP-NEXT: s_cbranch_execz .LBB15_310621; GFX1032-DPP-NEXT: ; %bb.1:10622; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2410623; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)10624; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]10625; GFX1032-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10626; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=110627; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)10628; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]10629; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc10630; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)10631; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]10632; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v810633; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v710634; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s210635; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s210636; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB15_210637; GFX1032-DPP-NEXT: .LBB15_3:10638; GFX1032-DPP-NEXT: s_endpgm10639;10640; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10641; GFX1164-DPP: ; %bb.0:10642; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10643; GFX1164-DPP-NEXT: s_mov_b32 s12, s810644; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 4410645; GFX1164-DPP-NEXT: s_mov_b32 s13, s910646; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 010647; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]10648; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410649; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210650; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v010651; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x010652; GFX1164-DPP-NEXT: s_mov_b32 s14, s1010653; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10654; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10655; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10656; GFX1164-DPP-NEXT: s_mov_b32 s32, 010657; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)10658; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10659; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -110660; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 110661; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 010662; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]10663; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]10664; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10665; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10666; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf10667; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10668; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]10669; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110670; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010671; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10672; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10673; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf10674; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10675; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110676; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010677; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10678; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10679; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf10680; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10681; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10682; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 110683; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 010684; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10685; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10686; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf10687; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10688; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)10689; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010690; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 010691; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10692; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10693; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v310694; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10695; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v210696; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10697; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]10698; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)10699; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 010700; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 010701; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec10702; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)10703; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v010704; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)10705; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v210706; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v310707; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v610708; GFX1164-DPP-NEXT: s_cbranch_execz .LBB15_310709; GFX1164-DPP-NEXT: ; %bb.1:10710; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410711; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 010712; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)10713; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]10714; GFX1164-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10715; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=110716; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)10717; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]10718; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc10719; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)10720; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]10721; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v710722; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v610723; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10724; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10725; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]10726; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB15_210727; GFX1164-DPP-NEXT: .LBB15_3:10728; GFX1164-DPP-NEXT: s_endpgm10729;10730; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_agent_scope_unsafe_structfp:10731; GFX1132-DPP: ; %bb.0:10732; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]10733; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v010734; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 4410735; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 010736; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]10737; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+410738; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1210739; GFX1132-DPP-NEXT: s_mov_b32 s12, s1310740; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x010741; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]10742; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]10743; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]10744; GFX1132-DPP-NEXT: s_mov_b32 s13, s1410745; GFX1132-DPP-NEXT: s_mov_b32 s14, s1510746; GFX1132-DPP-NEXT: s_mov_b32 s32, 010747; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)10748; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]10749; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -110750; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 110751; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 010752; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s010753; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s010754; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10755; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf10756; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf10757; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10758; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]10759; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 110760; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 010761; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf10762; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10763; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf10764; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10765; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 110766; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 010767; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)10768; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf10769; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf10770; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)10771; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10772; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 110773; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 010774; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf10775; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10776; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf10777; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10778; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)10779; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 010780; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 010781; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10782; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]10783; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s010784; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v210785; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 010786; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)10787; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v310788; GFX1132-DPP-NEXT: s_mov_b32 s2, 010789; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo10790; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v610791; GFX1132-DPP-NEXT: s_cbranch_execz .LBB15_310792; GFX1132-DPP-NEXT: ; %bb.1:10793; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2410794; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)10795; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]10796; GFX1132-DPP-NEXT: .LBB15_2: ; %atomicrmw.start10797; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=110798; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)10799; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]10800; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc10801; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)10802; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]10803; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v610804; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s210805; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)10806; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s210807; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB15_210808; GFX1132-DPP-NEXT: .LBB15_3:10809; GFX1132-DPP-NEXT: s_endpgm10810 %divValue = call double @div.float.value() strictfp10811 %result = atomicrmw fadd ptr addrspace(1) %ptr, double %divValue syncscope("agent") monotonic, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !110812 ret void10813}10814 10815define amdgpu_kernel void @global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {10816; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:10817; GFX7LESS: ; %bb.0:10818; GFX7LESS-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD010819; GFX7LESS-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD110820; GFX7LESS-NEXT: s_mov_b32 s14, -110821; GFX7LESS-NEXT: s_mov_b32 s15, 0xe8f00010822; GFX7LESS-NEXT: s_add_u32 s12, s12, s1110823; GFX7LESS-NEXT: s_addc_u32 s13, s13, 010824; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec10825; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 010826; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v010827; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010828; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc10829; GFX7LESS-NEXT: s_cbranch_execz .LBB16_310830; GFX7LESS-NEXT: ; %bb.1:10831; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x910832; GFX7LESS-NEXT: s_bcnt1_i32_b64 s6, s[2:3]10833; GFX7LESS-NEXT: s_mov_b32 s7, 0x4330000010834; GFX7LESS-NEXT: v_mov_b32_e32 v0, 010835; GFX7LESS-NEXT: v_mov_b32_e32 v1, 0xc330000010836; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)10837; GFX7LESS-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x010838; GFX7LESS-NEXT: s_mov_b64 s[4:5], 010839; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00010840; GFX7LESS-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]10841; GFX7LESS-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]10842; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)10843; GFX7LESS-NEXT: v_mov_b32_e32 v2, s810844; GFX7LESS-NEXT: v_mov_b32_e32 v3, s910845; GFX7LESS-NEXT: s_mov_b32 s2, -110846; GFX7LESS-NEXT: .LBB16_2: ; %atomicrmw.start10847; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=110848; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10849; GFX7LESS-NEXT: s_waitcnt expcnt(0)10850; GFX7LESS-NEXT: v_mov_b32_e32 v9, v310851; GFX7LESS-NEXT: v_mov_b32_e32 v8, v210852; GFX7LESS-NEXT: v_mov_b32_e32 v7, v110853; GFX7LESS-NEXT: v_mov_b32_e32 v6, v010854; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc10855; GFX7LESS-NEXT: s_waitcnt vmcnt(0)10856; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]10857; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]10858; GFX7LESS-NEXT: v_mov_b32_e32 v2, v610859; GFX7LESS-NEXT: v_mov_b32_e32 v3, v710860; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]10861; GFX7LESS-NEXT: s_cbranch_execnz .LBB16_210862; GFX7LESS-NEXT: .LBB16_3:10863; GFX7LESS-NEXT: s_endpgm10864;10865; GFX9-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:10866; GFX9: ; %bb.0:10867; GFX9-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD010868; GFX9-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD110869; GFX9-NEXT: s_mov_b32 s14, -110870; GFX9-NEXT: s_mov_b64 s[0:1], exec10871; GFX9-NEXT: s_mov_b32 s15, 0xe0000010872; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 010873; GFX9-NEXT: s_add_u32 s12, s12, s1110874; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v010875; GFX9-NEXT: s_addc_u32 s13, s13, 010876; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010877; GFX9-NEXT: s_and_saveexec_b64 s[2:3], vcc10878; GFX9-NEXT: s_cbranch_execz .LBB16_310879; GFX9-NEXT: ; %bb.1:10880; GFX9-NEXT: v_mov_b32_e32 v0, 010881; GFX9-NEXT: s_bcnt1_i32_b64 s0, s[0:1]10882; GFX9-NEXT: v_mov_b32_e32 v1, 0xc330000010883; GFX9-NEXT: s_mov_b32 s1, 0x4330000010884; GFX9-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]10885; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410886; GFX9-NEXT: s_mov_b64 s[2:3], 010887; GFX9-NEXT: v_mov_b32_e32 v6, 010888; GFX9-NEXT: s_waitcnt lgkmcnt(0)10889; GFX9-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x010890; GFX9-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]10891; GFX9-NEXT: s_waitcnt lgkmcnt(0)10892; GFX9-NEXT: v_mov_b32_e32 v2, s410893; GFX9-NEXT: v_mov_b32_e32 v3, s510894; GFX9-NEXT: .LBB16_2: ; %atomicrmw.start10895; GFX9-NEXT: ; =>This Inner Loop Header: Depth=110896; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10897; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10898; GFX9-NEXT: s_waitcnt vmcnt(0)10899; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10900; GFX9-NEXT: v_mov_b32_e32 v3, v110901; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10902; GFX9-NEXT: v_mov_b32_e32 v2, v010903; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]10904; GFX9-NEXT: s_cbranch_execnz .LBB16_210905; GFX9-NEXT: .LBB16_3:10906; GFX9-NEXT: s_endpgm10907;10908; GFX1064-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:10909; GFX1064: ; %bb.0:10910; GFX1064-NEXT: s_mov_b64 s[0:1], exec10911; GFX1064-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD010912; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 010913; GFX1064-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD110914; GFX1064-NEXT: s_mov_b32 s14, -110915; GFX1064-NEXT: s_mov_b32 s15, 0x31e1600010916; GFX1064-NEXT: s_add_u32 s12, s12, s1110917; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v010918; GFX1064-NEXT: s_addc_u32 s13, s13, 010919; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v010920; GFX1064-NEXT: s_and_saveexec_b64 s[2:3], vcc10921; GFX1064-NEXT: s_cbranch_execz .LBB16_310922; GFX1064-NEXT: ; %bb.1:10923; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[0:1]10924; GFX1064-NEXT: s_mov_b32 s3, 0x4330000010925; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410926; GFX1064-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]10927; GFX1064-NEXT: v_mov_b32_e32 v6, 010928; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10929; GFX1064-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x010930; GFX1064-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]10931; GFX1064-NEXT: s_waitcnt lgkmcnt(0)10932; GFX1064-NEXT: v_mov_b32_e32 v2, s210933; GFX1064-NEXT: v_mov_b32_e32 v3, s310934; GFX1064-NEXT: s_mov_b64 s[2:3], 010935; GFX1064-NEXT: .LBB16_2: ; %atomicrmw.start10936; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=110937; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10938; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10939; GFX1064-NEXT: s_waitcnt vmcnt(0)10940; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]10941; GFX1064-NEXT: v_mov_b32_e32 v3, v110942; GFX1064-NEXT: v_mov_b32_e32 v2, v010943; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]10944; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]10945; GFX1064-NEXT: s_cbranch_execnz .LBB16_210946; GFX1064-NEXT: .LBB16_3:10947; GFX1064-NEXT: s_endpgm10948;10949; GFX1032-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:10950; GFX1032: ; %bb.0:10951; GFX1032-NEXT: s_mov_b32 s0, exec_lo10952; GFX1032-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD010953; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 010954; GFX1032-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD110955; GFX1032-NEXT: s_mov_b32 s14, -110956; GFX1032-NEXT: s_mov_b32 s15, 0x31c1600010957; GFX1032-NEXT: s_add_u32 s12, s12, s1110958; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v010959; GFX1032-NEXT: s_addc_u32 s13, s13, 010960; GFX1032-NEXT: s_mov_b32 s2, 010961; GFX1032-NEXT: s_and_saveexec_b32 s1, vcc_lo10962; GFX1032-NEXT: s_cbranch_execz .LBB16_310963; GFX1032-NEXT: ; %bb.1:10964; GFX1032-NEXT: s_bcnt1_i32_b32 s6, s010965; GFX1032-NEXT: s_mov_b32 s7, 0x4330000010966; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2410967; GFX1032-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]10968; GFX1032-NEXT: v_mov_b32_e32 v6, 010969; GFX1032-NEXT: s_waitcnt lgkmcnt(0)10970; GFX1032-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x010971; GFX1032-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]10972; GFX1032-NEXT: s_waitcnt lgkmcnt(0)10973; GFX1032-NEXT: v_mov_b32_e32 v2, s410974; GFX1032-NEXT: v_mov_b32_e32 v3, s510975; GFX1032-NEXT: .LBB16_2: ; %atomicrmw.start10976; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=110977; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]10978; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc10979; GFX1032-NEXT: s_waitcnt vmcnt(0)10980; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]10981; GFX1032-NEXT: v_mov_b32_e32 v3, v110982; GFX1032-NEXT: v_mov_b32_e32 v2, v010983; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s210984; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s210985; GFX1032-NEXT: s_cbranch_execnz .LBB16_210986; GFX1032-NEXT: .LBB16_3:10987; GFX1032-NEXT: s_endpgm10988;10989; GFX1164-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:10990; GFX1164: ; %bb.0:10991; GFX1164-NEXT: s_bcnt1_i32_b64 s0, exec10992; GFX1164-NEXT: v_mov_b32_e32 v0, 0x4330000010993; GFX1164-NEXT: v_mov_b32_e32 v1, s010994; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 010995; GFX1164-NEXT: s_mov_b64 s[0:1], exec10996; GFX1164-NEXT: s_clause 0x110997; GFX1164-NEXT: scratch_store_b32 off, v0, off offset:410998; GFX1164-NEXT: scratch_store_b32 off, v1, off10999; GFX1164-NEXT: scratch_load_b64 v[0:1], off, off11000; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v211001; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)11002; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v211003; GFX1164-NEXT: s_cbranch_execz .LBB16_311004; GFX1164-NEXT: ; %bb.1:11005; GFX1164-NEXT: s_waitcnt vmcnt(0)11006; GFX1164-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11007; GFX1164-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411008; GFX1164-NEXT: v_mov_b32_e32 v6, 011009; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11010; GFX1164-NEXT: s_load_b64 s[2:3], s[0:1], 0x011011; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_2)11012; GFX1164-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11013; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11014; GFX1164-NEXT: v_mov_b32_e32 v2, s211015; GFX1164-NEXT: v_mov_b32_e32 v3, s311016; GFX1164-NEXT: s_mov_b64 s[2:3], 011017; GFX1164-NEXT: .LBB16_2: ; %atomicrmw.start11018; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=111019; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)11020; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11021; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11022; GFX1164-NEXT: s_waitcnt vmcnt(0)11023; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11024; GFX1164-NEXT: v_mov_b32_e32 v3, v111025; GFX1164-NEXT: v_mov_b32_e32 v2, v011026; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11027; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11028; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]11029; GFX1164-NEXT: s_cbranch_execnz .LBB16_211030; GFX1164-NEXT: .LBB16_3:11031; GFX1164-NEXT: s_endpgm11032;11033; GFX1132-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11034; GFX1132: ; %bb.0:11035; GFX1132-NEXT: s_bcnt1_i32_b32 s0, exec_lo11036; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11037; GFX1132-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s011038; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011039; GFX1132-NEXT: s_mov_b32 s2, 011040; GFX1132-NEXT: s_mov_b32 s0, exec_lo11041; GFX1132-NEXT: s_clause 0x111042; GFX1132-NEXT: scratch_store_b32 off, v0, off offset:411043; GFX1132-NEXT: scratch_store_b32 off, v1, off11044; GFX1132-NEXT: scratch_load_b64 v[0:1], off, off11045; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v211046; GFX1132-NEXT: s_cbranch_execz .LBB16_311047; GFX1132-NEXT: ; %bb.1:11048; GFX1132-NEXT: s_waitcnt vmcnt(0)11049; GFX1132-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11050; GFX1132-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411051; GFX1132-NEXT: v_mov_b32_e32 v6, 011052; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11053; GFX1132-NEXT: s_load_b64 s[4:5], s[0:1], 0x011054; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_2)11055; GFX1132-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11056; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11057; GFX1132-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s511058; GFX1132-NEXT: .LBB16_2: ; %atomicrmw.start11059; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=111060; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)11061; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11062; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11063; GFX1132-NEXT: s_waitcnt vmcnt(0)11064; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11065; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v011066; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s211067; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11068; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s211069; GFX1132-NEXT: s_cbranch_execnz .LBB16_211070; GFX1132-NEXT: .LBB16_3:11071; GFX1132-NEXT: s_endpgm11072;11073; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11074; GFX7LESS-DPP: ; %bb.0:11075; GFX7LESS-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011076; GFX7LESS-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111077; GFX7LESS-DPP-NEXT: s_mov_b32 s14, -111078; GFX7LESS-DPP-NEXT: s_mov_b32 s15, 0xe8f00011079; GFX7LESS-DPP-NEXT: s_add_u32 s12, s12, s1111080; GFX7LESS-DPP-NEXT: s_addc_u32 s13, s13, 011081; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec11082; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 011083; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v011084; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011085; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc11086; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB16_311087; GFX7LESS-DPP-NEXT: ; %bb.1:11088; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x911089; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s6, s[2:3]11090; GFX7LESS-DPP-NEXT: s_mov_b32 s7, 0x4330000011091; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v0, 011092; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, 0xc330000011093; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)11094; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[8:9], s[0:1], 0x011095; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 011096; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf00011097; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], s[6:7], v[0:1]11098; GFX7LESS-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11099; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)11100; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, s811101; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, s911102; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -111103; GFX7LESS-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11104; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=111105; GFX7LESS-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11106; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)11107; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v311108; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v211109; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v111110; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v011111; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc11112; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)11113; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]11114; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]11115; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v2, v611116; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v711117; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]11118; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB16_211119; GFX7LESS-DPP-NEXT: .LBB16_3:11120; GFX7LESS-DPP-NEXT: s_endpgm11121;11122; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11123; GFX9-DPP: ; %bb.0:11124; GFX9-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011125; GFX9-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111126; GFX9-DPP-NEXT: s_mov_b32 s14, -111127; GFX9-DPP-NEXT: s_mov_b64 s[0:1], exec11128; GFX9-DPP-NEXT: s_mov_b32 s15, 0xe0000011129; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011130; GFX9-DPP-NEXT: s_add_u32 s12, s12, s1111131; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v011132; GFX9-DPP-NEXT: s_addc_u32 s13, s13, 011133; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011134; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc11135; GFX9-DPP-NEXT: s_cbranch_execz .LBB16_311136; GFX9-DPP-NEXT: ; %bb.1:11137; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 011138; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]11139; GFX9-DPP-NEXT: v_mov_b32_e32 v1, 0xc330000011140; GFX9-DPP-NEXT: s_mov_b32 s1, 0x4330000011141; GFX9-DPP-NEXT: v_add_f64 v[0:1], s[0:1], v[0:1]11142; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411143; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 011144; GFX9-DPP-NEXT: v_mov_b32_e32 v6, 011145; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)11146; GFX9-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x011147; GFX9-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11148; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)11149; GFX9-DPP-NEXT: v_mov_b32_e32 v2, s411150; GFX9-DPP-NEXT: v_mov_b32_e32 v3, s511151; GFX9-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11152; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=111153; GFX9-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11154; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11155; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)11156; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11157; GFX9-DPP-NEXT: v_mov_b32_e32 v3, v111158; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11159; GFX9-DPP-NEXT: v_mov_b32_e32 v2, v011160; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]11161; GFX9-DPP-NEXT: s_cbranch_execnz .LBB16_211162; GFX9-DPP-NEXT: .LBB16_3:11163; GFX9-DPP-NEXT: s_endpgm11164;11165; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11166; GFX1064-DPP: ; %bb.0:11167; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], exec11168; GFX1064-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011169; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011170; GFX1064-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111171; GFX1064-DPP-NEXT: s_mov_b32 s14, -111172; GFX1064-DPP-NEXT: s_mov_b32 s15, 0x31e1600011173; GFX1064-DPP-NEXT: s_add_u32 s12, s12, s1111174; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v011175; GFX1064-DPP-NEXT: s_addc_u32 s13, s13, 011176; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011177; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc11178; GFX1064-DPP-NEXT: s_cbranch_execz .LBB16_311179; GFX1064-DPP-NEXT: ; %bb.1:11180; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[0:1]11181; GFX1064-DPP-NEXT: s_mov_b32 s3, 0x4330000011182; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411183; GFX1064-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[2:3]11184; GFX1064-DPP-NEXT: v_mov_b32_e32 v6, 011185; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)11186; GFX1064-DPP-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x011187; GFX1064-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11188; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)11189; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, s211190; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, s311191; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 011192; GFX1064-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11193; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=111194; GFX1064-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11195; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11196; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)11197; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11198; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, v111199; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, v011200; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11201; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]11202; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB16_211203; GFX1064-DPP-NEXT: .LBB16_3:11204; GFX1064-DPP-NEXT: s_endpgm11205;11206; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11207; GFX1032-DPP: ; %bb.0:11208; GFX1032-DPP-NEXT: s_mov_b32 s0, exec_lo11209; GFX1032-DPP-NEXT: s_mov_b32 s12, SCRATCH_RSRC_DWORD011210; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 011211; GFX1032-DPP-NEXT: s_mov_b32 s13, SCRATCH_RSRC_DWORD111212; GFX1032-DPP-NEXT: s_mov_b32 s14, -111213; GFX1032-DPP-NEXT: s_mov_b32 s15, 0x31c1600011214; GFX1032-DPP-NEXT: s_add_u32 s12, s12, s1111215; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011216; GFX1032-DPP-NEXT: s_addc_u32 s13, s13, 011217; GFX1032-DPP-NEXT: s_mov_b32 s2, 011218; GFX1032-DPP-NEXT: s_and_saveexec_b32 s1, vcc_lo11219; GFX1032-DPP-NEXT: s_cbranch_execz .LBB16_311220; GFX1032-DPP-NEXT: ; %bb.1:11221; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s6, s011222; GFX1032-DPP-NEXT: s_mov_b32 s7, 0x4330000011223; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2411224; GFX1032-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, s[6:7]11225; GFX1032-DPP-NEXT: v_mov_b32_e32 v6, 011226; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)11227; GFX1032-DPP-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x011228; GFX1032-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11229; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)11230; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, s411231; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, s511232; GFX1032-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11233; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=111234; GFX1032-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11235; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11236; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)11237; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11238; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, v111239; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, v011240; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s211241; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s211242; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB16_211243; GFX1032-DPP-NEXT: .LBB16_3:11244; GFX1032-DPP-NEXT: s_endpgm11245;11246; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11247; GFX1164-DPP: ; %bb.0:11248; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, exec11249; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, 0x4330000011250; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, s011251; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011252; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec11253; GFX1164-DPP-NEXT: s_clause 0x111254; GFX1164-DPP-NEXT: scratch_store_b32 off, v0, off offset:411255; GFX1164-DPP-NEXT: scratch_store_b32 off, v1, off11256; GFX1164-DPP-NEXT: scratch_load_b64 v[0:1], off, off11257; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v2, exec_hi, v211258; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11259; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v211260; GFX1164-DPP-NEXT: s_cbranch_execz .LBB16_311261; GFX1164-DPP-NEXT: ; %bb.1:11262; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)11263; GFX1164-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11264; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411265; GFX1164-DPP-NEXT: v_mov_b32_e32 v6, 011266; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)11267; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[0:1], 0x011268; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)11269; GFX1164-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11270; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)11271; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, s211272; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, s311273; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 011274; GFX1164-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11275; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=111276; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11277; GFX1164-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11278; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11279; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)11280; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11281; GFX1164-DPP-NEXT: v_mov_b32_e32 v3, v111282; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, v011283; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11284; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11285; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]11286; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB16_211287; GFX1164-DPP-NEXT: .LBB16_3:11288; GFX1164-DPP-NEXT: s_endpgm11289;11290; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_uni_value_default_scope_strictfp:11291; GFX1132-DPP: ; %bb.0:11292; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, exec_lo11293; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11294; GFX1132-DPP-NEXT: v_dual_mov_b32 v0, 0x43300000 :: v_dual_mov_b32 v1, s011295; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v2, exec_lo, 011296; GFX1132-DPP-NEXT: s_mov_b32 s2, 011297; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo11298; GFX1132-DPP-NEXT: s_clause 0x111299; GFX1132-DPP-NEXT: scratch_store_b32 off, v0, off offset:411300; GFX1132-DPP-NEXT: scratch_store_b32 off, v1, off11301; GFX1132-DPP-NEXT: scratch_load_b64 v[0:1], off, off11302; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v211303; GFX1132-DPP-NEXT: s_cbranch_execz .LBB16_311304; GFX1132-DPP-NEXT: ; %bb.1:11305; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)11306; GFX1132-DPP-NEXT: v_add_f64 v[0:1], 0xc3300000, v[0:1]11307; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411308; GFX1132-DPP-NEXT: v_mov_b32_e32 v6, 011309; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)11310; GFX1132-DPP-NEXT: s_load_b64 s[4:5], s[0:1], 0x011311; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2)11312; GFX1132-DPP-NEXT: v_mul_f64 v[4:5], 4.0, v[0:1]11313; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)11314; GFX1132-DPP-NEXT: v_dual_mov_b32 v2, s4 :: v_dual_mov_b32 v3, s511315; GFX1132-DPP-NEXT: .LBB16_2: ; %atomicrmw.start11316; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=111317; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)11318; GFX1132-DPP-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11319; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11320; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)11321; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11322; GFX1132-DPP-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v011323; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s211324; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11325; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s211326; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB16_211327; GFX1132-DPP-NEXT: .LBB16_3:11328; GFX1132-DPP-NEXT: s_endpgm11329 %result = atomicrmw fadd ptr addrspace(1) %ptr, double 4.0 monotonic, align 8, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !111330 ret void11331}11332 11333define amdgpu_kernel void @global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp(ptr addrspace(1) %ptr) #2 {11334; GFX7LESS-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11335; GFX7LESS: ; %bb.0:11336; GFX7LESS-NEXT: s_mov_b32 s32, 011337; GFX7LESS-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011338; GFX7LESS-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111339; GFX7LESS-NEXT: s_mov_b32 s38, -111340; GFX7LESS-NEXT: s_mov_b32 s39, 0xe8f00011341; GFX7LESS-NEXT: s_add_u32 s36, s36, s1111342; GFX7LESS-NEXT: s_addc_u32 s37, s37, 011343; GFX7LESS-NEXT: s_mov_b32 s14, s1011344; GFX7LESS-NEXT: s_mov_b32 s13, s911345; GFX7LESS-NEXT: s_mov_b32 s12, s811346; GFX7LESS-NEXT: s_mov_b64 s[10:11], s[6:7]11347; GFX7LESS-NEXT: s_mov_b64 s[34:35], s[4:5]11348; GFX7LESS-NEXT: s_add_u32 s8, s34, 4411349; GFX7LESS-NEXT: s_addc_u32 s9, s35, 011350; GFX7LESS-NEXT: s_getpc_b64 s[4:5]11351; GFX7LESS-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411352; GFX7LESS-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211353; GFX7LESS-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011354; GFX7LESS-NEXT: v_lshlrev_b32_e32 v2, 20, v211355; GFX7LESS-NEXT: v_lshlrev_b32_e32 v1, 10, v111356; GFX7LESS-NEXT: v_or_b32_e32 v0, v0, v111357; GFX7LESS-NEXT: v_or_b32_e32 v31, v0, v211358; GFX7LESS-NEXT: s_mov_b64 s[4:5], s[0:1]11359; GFX7LESS-NEXT: s_mov_b64 s[6:7], s[2:3]11360; GFX7LESS-NEXT: s_mov_b64 s[0:1], s[36:37]11361; GFX7LESS-NEXT: s_mov_b64 s[2:3], s[38:39]11362; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)11363; GFX7LESS-NEXT: s_swappc_b64 s[30:31], s[16:17]11364; GFX7LESS-NEXT: s_mov_b64 s[0:1], exec11365; GFX7LESS-NEXT: v_mov_b32_e32 v4, 011366; GFX7LESS-NEXT: v_bfrev_b32_e32 v5, 111367; GFX7LESS-NEXT: .LBB17_1: ; %ComputeLoop11368; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=111369; GFX7LESS-NEXT: s_ff1_i32_b64 s4, s[0:1]11370; GFX7LESS-NEXT: v_readlane_b32 s3, v1, s411371; GFX7LESS-NEXT: v_readlane_b32 s2, v0, s411372; GFX7LESS-NEXT: s_lshl_b64 s[4:5], 1, s411373; GFX7LESS-NEXT: s_andn2_b64 s[0:1], s[0:1], s[4:5]11374; GFX7LESS-NEXT: v_cmp_ne_u64_e64 s[4:5], s[0:1], 011375; GFX7LESS-NEXT: s_and_b64 vcc, exec, s[4:5]11376; GFX7LESS-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11377; GFX7LESS-NEXT: s_cbranch_vccnz .LBB17_111378; GFX7LESS-NEXT: ; %bb.2: ; %ComputeEnd11379; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, exec_lo, 011380; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, exec_hi, v011381; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011382; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc11383; GFX7LESS-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11384; GFX7LESS-NEXT: s_cbranch_execz .LBB17_511385; GFX7LESS-NEXT: ; %bb.3:11386; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x911387; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00011388; GFX7LESS-NEXT: s_mov_b32 s2, -111389; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)11390; GFX7LESS-NEXT: buffer_load_dwordx2 v[2:3], off, s[0:3], 011391; GFX7LESS-NEXT: s_mov_b64 s[4:5], 011392; GFX7LESS-NEXT: .LBB17_4: ; %atomicrmw.start11393; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=111394; GFX7LESS-NEXT: s_waitcnt vmcnt(0)11395; GFX7LESS-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11396; GFX7LESS-NEXT: s_waitcnt expcnt(0)11397; GFX7LESS-NEXT: v_mov_b32_e32 v9, v311398; GFX7LESS-NEXT: v_mov_b32_e32 v8, v211399; GFX7LESS-NEXT: v_mov_b32_e32 v7, v111400; GFX7LESS-NEXT: v_mov_b32_e32 v6, v011401; GFX7LESS-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[0:3], 0 glc11402; GFX7LESS-NEXT: s_waitcnt vmcnt(0)11403; GFX7LESS-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[2:3]11404; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]11405; GFX7LESS-NEXT: v_mov_b32_e32 v2, v611406; GFX7LESS-NEXT: v_mov_b32_e32 v3, v711407; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]11408; GFX7LESS-NEXT: s_cbranch_execnz .LBB17_411409; GFX7LESS-NEXT: .LBB17_5:11410; GFX7LESS-NEXT: s_endpgm11411;11412; GFX9-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11413; GFX9: ; %bb.0:11414; GFX9-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011415; GFX9-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111416; GFX9-NEXT: s_mov_b32 s38, -111417; GFX9-NEXT: s_mov_b32 s39, 0xe0000011418; GFX9-NEXT: s_add_u32 s36, s36, s1111419; GFX9-NEXT: s_addc_u32 s37, s37, 011420; GFX9-NEXT: s_mov_b64 s[34:35], s[4:5]11421; GFX9-NEXT: s_mov_b32 s12, s811422; GFX9-NEXT: s_add_u32 s8, s34, 4411423; GFX9-NEXT: s_mov_b32 s13, s911424; GFX9-NEXT: s_addc_u32 s9, s35, 011425; GFX9-NEXT: s_getpc_b64 s[4:5]11426; GFX9-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411427; GFX9-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211428; GFX9-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011429; GFX9-NEXT: s_mov_b32 s14, s1011430; GFX9-NEXT: s_mov_b64 s[10:11], s[6:7]11431; GFX9-NEXT: v_lshlrev_b32_e32 v2, 20, v211432; GFX9-NEXT: v_lshlrev_b32_e32 v1, 10, v111433; GFX9-NEXT: s_mov_b64 s[4:5], s[0:1]11434; GFX9-NEXT: s_mov_b64 s[6:7], s[2:3]11435; GFX9-NEXT: s_mov_b64 s[0:1], s[36:37]11436; GFX9-NEXT: v_or3_b32 v31, v0, v1, v211437; GFX9-NEXT: s_mov_b64 s[2:3], s[38:39]11438; GFX9-NEXT: s_mov_b32 s32, 011439; GFX9-NEXT: s_waitcnt lgkmcnt(0)11440; GFX9-NEXT: s_swappc_b64 s[30:31], s[16:17]11441; GFX9-NEXT: v_mov_b32_e32 v4, 011442; GFX9-NEXT: s_mov_b64 s[0:1], exec11443; GFX9-NEXT: v_bfrev_b32_e32 v5, 111444; GFX9-NEXT: .LBB17_1: ; %ComputeLoop11445; GFX9-NEXT: ; =>This Inner Loop Header: Depth=111446; GFX9-NEXT: s_ff1_i32_b64 s4, s[0:1]11447; GFX9-NEXT: v_readlane_b32 s3, v1, s411448; GFX9-NEXT: v_readlane_b32 s2, v0, s411449; GFX9-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11450; GFX9-NEXT: s_lshl_b64 s[2:3], 1, s411451; GFX9-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]11452; GFX9-NEXT: s_cbranch_scc1 .LBB17_111453; GFX9-NEXT: ; %bb.2: ; %ComputeEnd11454; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011455; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011456; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011457; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc11458; GFX9-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11459; GFX9-NEXT: s_cbranch_execz .LBB17_511460; GFX9-NEXT: ; %bb.3:11461; GFX9-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411462; GFX9-NEXT: v_mov_b32_e32 v6, 011463; GFX9-NEXT: s_mov_b64 s[2:3], 011464; GFX9-NEXT: s_waitcnt lgkmcnt(0)11465; GFX9-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]11466; GFX9-NEXT: .LBB17_4: ; %atomicrmw.start11467; GFX9-NEXT: ; =>This Inner Loop Header: Depth=111468; GFX9-NEXT: s_waitcnt vmcnt(0)11469; GFX9-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11470; GFX9-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11471; GFX9-NEXT: s_waitcnt vmcnt(0)11472; GFX9-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11473; GFX9-NEXT: v_mov_b32_e32 v3, v111474; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11475; GFX9-NEXT: v_mov_b32_e32 v2, v011476; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]11477; GFX9-NEXT: s_cbranch_execnz .LBB17_411478; GFX9-NEXT: .LBB17_5:11479; GFX9-NEXT: s_endpgm11480;11481; GFX1064-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11482; GFX1064: ; %bb.0:11483; GFX1064-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011484; GFX1064-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111485; GFX1064-NEXT: s_mov_b32 s38, -111486; GFX1064-NEXT: s_mov_b32 s39, 0x31e1600011487; GFX1064-NEXT: s_add_u32 s36, s36, s1111488; GFX1064-NEXT: s_mov_b64 s[34:35], s[4:5]11489; GFX1064-NEXT: s_addc_u32 s37, s37, 011490; GFX1064-NEXT: s_mov_b32 s12, s811491; GFX1064-NEXT: s_add_u32 s8, s34, 4411492; GFX1064-NEXT: s_mov_b32 s13, s911493; GFX1064-NEXT: s_addc_u32 s9, s35, 011494; GFX1064-NEXT: s_getpc_b64 s[4:5]11495; GFX1064-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411496; GFX1064-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211497; GFX1064-NEXT: v_lshlrev_b32_e32 v2, 20, v211498; GFX1064-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011499; GFX1064-NEXT: v_lshlrev_b32_e32 v1, 10, v111500; GFX1064-NEXT: s_mov_b32 s14, s1011501; GFX1064-NEXT: s_mov_b64 s[10:11], s[6:7]11502; GFX1064-NEXT: s_mov_b64 s[4:5], s[0:1]11503; GFX1064-NEXT: s_mov_b64 s[6:7], s[2:3]11504; GFX1064-NEXT: v_or3_b32 v31, v0, v1, v211505; GFX1064-NEXT: s_mov_b64 s[0:1], s[36:37]11506; GFX1064-NEXT: s_mov_b64 s[2:3], s[38:39]11507; GFX1064-NEXT: s_mov_b32 s32, 011508; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11509; GFX1064-NEXT: s_swappc_b64 s[30:31], s[16:17]11510; GFX1064-NEXT: v_mov_b32_e32 v4, 011511; GFX1064-NEXT: v_bfrev_b32_e32 v5, 111512; GFX1064-NEXT: s_mov_b64 s[0:1], exec11513; GFX1064-NEXT: .LBB17_1: ; %ComputeLoop11514; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=111515; GFX1064-NEXT: s_ff1_i32_b64 s4, s[0:1]11516; GFX1064-NEXT: v_readlane_b32 s3, v1, s411517; GFX1064-NEXT: v_readlane_b32 s2, v0, s411518; GFX1064-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11519; GFX1064-NEXT: s_lshl_b64 s[2:3], 1, s411520; GFX1064-NEXT: s_andn2_b64 s[0:1], s[0:1], s[2:3]11521; GFX1064-NEXT: s_cbranch_scc1 .LBB17_111522; GFX1064-NEXT: ; %bb.2: ; %ComputeEnd11523; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011524; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011525; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v011526; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc11527; GFX1064-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11528; GFX1064-NEXT: s_cbranch_execz .LBB17_511529; GFX1064-NEXT: ; %bb.3:11530; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411531; GFX1064-NEXT: v_mov_b32_e32 v6, 011532; GFX1064-NEXT: s_mov_b64 s[2:3], 011533; GFX1064-NEXT: s_waitcnt lgkmcnt(0)11534; GFX1064-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]11535; GFX1064-NEXT: .LBB17_4: ; %atomicrmw.start11536; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=111537; GFX1064-NEXT: s_waitcnt vmcnt(0)11538; GFX1064-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11539; GFX1064-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11540; GFX1064-NEXT: s_waitcnt vmcnt(0)11541; GFX1064-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11542; GFX1064-NEXT: v_mov_b32_e32 v3, v111543; GFX1064-NEXT: v_mov_b32_e32 v2, v011544; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11545; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]11546; GFX1064-NEXT: s_cbranch_execnz .LBB17_411547; GFX1064-NEXT: .LBB17_5:11548; GFX1064-NEXT: s_endpgm11549;11550; GFX1032-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11551; GFX1032: ; %bb.0:11552; GFX1032-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011553; GFX1032-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111554; GFX1032-NEXT: s_mov_b32 s38, -111555; GFX1032-NEXT: s_mov_b32 s39, 0x31c1600011556; GFX1032-NEXT: s_add_u32 s36, s36, s1111557; GFX1032-NEXT: s_mov_b64 s[34:35], s[4:5]11558; GFX1032-NEXT: s_addc_u32 s37, s37, 011559; GFX1032-NEXT: s_mov_b32 s12, s811560; GFX1032-NEXT: s_add_u32 s8, s34, 4411561; GFX1032-NEXT: s_mov_b32 s13, s911562; GFX1032-NEXT: s_addc_u32 s9, s35, 011563; GFX1032-NEXT: s_getpc_b64 s[4:5]11564; GFX1032-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411565; GFX1032-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211566; GFX1032-NEXT: v_lshlrev_b32_e32 v2, 20, v211567; GFX1032-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011568; GFX1032-NEXT: v_lshlrev_b32_e32 v1, 10, v111569; GFX1032-NEXT: s_mov_b32 s14, s1011570; GFX1032-NEXT: s_mov_b64 s[10:11], s[6:7]11571; GFX1032-NEXT: s_mov_b64 s[4:5], s[0:1]11572; GFX1032-NEXT: s_mov_b64 s[6:7], s[2:3]11573; GFX1032-NEXT: v_or3_b32 v31, v0, v1, v211574; GFX1032-NEXT: s_mov_b64 s[0:1], s[36:37]11575; GFX1032-NEXT: s_mov_b64 s[2:3], s[38:39]11576; GFX1032-NEXT: s_mov_b32 s32, 011577; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11578; GFX1032-NEXT: s_swappc_b64 s[30:31], s[16:17]11579; GFX1032-NEXT: v_mov_b32_e32 v4, 011580; GFX1032-NEXT: v_bfrev_b32_e32 v5, 111581; GFX1032-NEXT: s_mov_b32 s0, exec_lo11582; GFX1032-NEXT: .LBB17_1: ; %ComputeLoop11583; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=111584; GFX1032-NEXT: s_ff1_i32_b32 s1, s011585; GFX1032-NEXT: v_readlane_b32 s3, v1, s111586; GFX1032-NEXT: v_readlane_b32 s2, v0, s111587; GFX1032-NEXT: s_lshl_b32 s1, 1, s111588; GFX1032-NEXT: s_andn2_b32 s0, s0, s111589; GFX1032-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11590; GFX1032-NEXT: s_cbranch_scc1 .LBB17_111591; GFX1032-NEXT: ; %bb.2: ; %ComputeEnd11592; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011593; GFX1032-NEXT: s_mov_b32 s2, 011594; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v011595; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo11596; GFX1032-NEXT: s_xor_b32 s0, exec_lo, s011597; GFX1032-NEXT: s_cbranch_execz .LBB17_511598; GFX1032-NEXT: ; %bb.3:11599; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411600; GFX1032-NEXT: v_mov_b32_e32 v6, 011601; GFX1032-NEXT: s_waitcnt lgkmcnt(0)11602; GFX1032-NEXT: global_load_dwordx2 v[2:3], v6, s[0:1]11603; GFX1032-NEXT: .LBB17_4: ; %atomicrmw.start11604; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=111605; GFX1032-NEXT: s_waitcnt vmcnt(0)11606; GFX1032-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11607; GFX1032-NEXT: global_atomic_cmpswap_x2 v[0:1], v6, v[0:3], s[0:1] glc11608; GFX1032-NEXT: s_waitcnt vmcnt(0)11609; GFX1032-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11610; GFX1032-NEXT: v_mov_b32_e32 v3, v111611; GFX1032-NEXT: v_mov_b32_e32 v2, v011612; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s211613; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s211614; GFX1032-NEXT: s_cbranch_execnz .LBB17_411615; GFX1032-NEXT: .LBB17_5:11616; GFX1032-NEXT: s_endpgm11617;11618; GFX1164-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11619; GFX1164: ; %bb.0:11620; GFX1164-NEXT: s_mov_b64 s[34:35], s[4:5]11621; GFX1164-NEXT: s_mov_b32 s12, s811622; GFX1164-NEXT: s_add_u32 s8, s34, 4411623; GFX1164-NEXT: s_mov_b32 s13, s911624; GFX1164-NEXT: s_addc_u32 s9, s35, 011625; GFX1164-NEXT: s_getpc_b64 s[4:5]11626; GFX1164-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411627; GFX1164-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211628; GFX1164-NEXT: v_mov_b32_e32 v31, v011629; GFX1164-NEXT: s_load_b64 s[16:17], s[4:5], 0x011630; GFX1164-NEXT: s_mov_b32 s14, s1011631; GFX1164-NEXT: s_mov_b64 s[10:11], s[6:7]11632; GFX1164-NEXT: s_mov_b64 s[4:5], s[0:1]11633; GFX1164-NEXT: s_mov_b64 s[6:7], s[2:3]11634; GFX1164-NEXT: s_mov_b32 s32, 011635; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11636; GFX1164-NEXT: s_swappc_b64 s[30:31], s[16:17]11637; GFX1164-NEXT: v_mov_b32_e32 v4, 011638; GFX1164-NEXT: v_bfrev_b32_e32 v5, 111639; GFX1164-NEXT: s_mov_b64 s[0:1], exec11640; GFX1164-NEXT: .LBB17_1: ; %ComputeLoop11641; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=111642; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)11643; GFX1164-NEXT: s_ctz_i32_b64 s4, s[0:1]11644; GFX1164-NEXT: v_readlane_b32 s3, v1, s411645; GFX1164-NEXT: v_readlane_b32 s2, v0, s411646; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)11647; GFX1164-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11648; GFX1164-NEXT: s_lshl_b64 s[2:3], 1, s411649; GFX1164-NEXT: s_and_not1_b64 s[0:1], s[0:1], s[2:3]11650; GFX1164-NEXT: s_cbranch_scc1 .LBB17_111651; GFX1164-NEXT: ; %bb.2: ; %ComputeEnd11652; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011653; GFX1164-NEXT: s_mov_b64 s[0:1], exec11654; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11655; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, exec_hi, v011656; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v011657; GFX1164-NEXT: s_xor_b64 s[0:1], exec, s[0:1]11658; GFX1164-NEXT: s_cbranch_execz .LBB17_511659; GFX1164-NEXT: ; %bb.3:11660; GFX1164-NEXT: s_load_b64 s[0:1], s[34:35], 0x2411661; GFX1164-NEXT: v_mov_b32_e32 v6, 011662; GFX1164-NEXT: s_mov_b64 s[2:3], 011663; GFX1164-NEXT: s_waitcnt lgkmcnt(0)11664; GFX1164-NEXT: global_load_b64 v[2:3], v6, s[0:1]11665; GFX1164-NEXT: .LBB17_4: ; %atomicrmw.start11666; GFX1164-NEXT: ; =>This Inner Loop Header: Depth=111667; GFX1164-NEXT: s_waitcnt vmcnt(0)11668; GFX1164-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11669; GFX1164-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11670; GFX1164-NEXT: s_waitcnt vmcnt(0)11671; GFX1164-NEXT: v_cmp_eq_u64_e32 vcc, v[0:1], v[2:3]11672; GFX1164-NEXT: v_mov_b32_e32 v3, v111673; GFX1164-NEXT: v_mov_b32_e32 v2, v011674; GFX1164-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11675; GFX1164-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11676; GFX1164-NEXT: s_and_not1_b64 exec, exec, s[2:3]11677; GFX1164-NEXT: s_cbranch_execnz .LBB17_411678; GFX1164-NEXT: .LBB17_5:11679; GFX1164-NEXT: s_endpgm11680;11681; GFX1132-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11682; GFX1132: ; %bb.0:11683; GFX1132-NEXT: s_mov_b64 s[34:35], s[4:5]11684; GFX1132-NEXT: v_mov_b32_e32 v31, v011685; GFX1132-NEXT: s_add_u32 s8, s34, 4411686; GFX1132-NEXT: s_addc_u32 s9, s35, 011687; GFX1132-NEXT: s_getpc_b64 s[4:5]11688; GFX1132-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411689; GFX1132-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211690; GFX1132-NEXT: s_mov_b32 s12, s1311691; GFX1132-NEXT: s_load_b64 s[16:17], s[4:5], 0x011692; GFX1132-NEXT: s_mov_b64 s[10:11], s[6:7]11693; GFX1132-NEXT: s_mov_b64 s[4:5], s[0:1]11694; GFX1132-NEXT: s_mov_b64 s[6:7], s[2:3]11695; GFX1132-NEXT: s_mov_b32 s13, s1411696; GFX1132-NEXT: s_mov_b32 s14, s1511697; GFX1132-NEXT: s_mov_b32 s32, 011698; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11699; GFX1132-NEXT: s_swappc_b64 s[30:31], s[16:17]11700; GFX1132-NEXT: v_mov_b32_e32 v4, 011701; GFX1132-NEXT: v_bfrev_b32_e32 v5, 111702; GFX1132-NEXT: s_mov_b32 s0, exec_lo11703; GFX1132-NEXT: .LBB17_1: ; %ComputeLoop11704; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=111705; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)11706; GFX1132-NEXT: s_ctz_i32_b32 s1, s011707; GFX1132-NEXT: v_readlane_b32 s3, v1, s111708; GFX1132-NEXT: v_readlane_b32 s2, v0, s111709; GFX1132-NEXT: s_lshl_b32 s1, 1, s111710; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11711; GFX1132-NEXT: s_and_not1_b32 s0, s0, s111712; GFX1132-NEXT: v_add_f64 v[4:5], v[4:5], s[2:3]11713; GFX1132-NEXT: s_cbranch_scc1 .LBB17_111714; GFX1132-NEXT: ; %bb.2: ; %ComputeEnd11715; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011716; GFX1132-NEXT: s_mov_b32 s2, 011717; GFX1132-NEXT: s_mov_b32 s0, exec_lo11718; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)11719; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v011720; GFX1132-NEXT: s_xor_b32 s0, exec_lo, s011721; GFX1132-NEXT: s_cbranch_execz .LBB17_511722; GFX1132-NEXT: ; %bb.3:11723; GFX1132-NEXT: s_load_b64 s[0:1], s[34:35], 0x2411724; GFX1132-NEXT: v_mov_b32_e32 v6, 011725; GFX1132-NEXT: s_waitcnt lgkmcnt(0)11726; GFX1132-NEXT: global_load_b64 v[2:3], v6, s[0:1]11727; GFX1132-NEXT: .LBB17_4: ; %atomicrmw.start11728; GFX1132-NEXT: ; =>This Inner Loop Header: Depth=111729; GFX1132-NEXT: s_waitcnt vmcnt(0)11730; GFX1132-NEXT: v_add_f64 v[0:1], v[2:3], v[4:5]11731; GFX1132-NEXT: global_atomic_cmpswap_b64 v[0:1], v6, v[0:3], s[0:1] glc11732; GFX1132-NEXT: s_waitcnt vmcnt(0)11733; GFX1132-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[0:1], v[2:3]11734; GFX1132-NEXT: v_dual_mov_b32 v3, v1 :: v_dual_mov_b32 v2, v011735; GFX1132-NEXT: s_or_b32 s2, vcc_lo, s211736; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1)11737; GFX1132-NEXT: s_and_not1_b32 exec_lo, exec_lo, s211738; GFX1132-NEXT: s_cbranch_execnz .LBB17_411739; GFX1132-NEXT: .LBB17_5:11740; GFX1132-NEXT: s_endpgm11741;11742; GFX7LESS-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11743; GFX7LESS-DPP: ; %bb.0:11744; GFX7LESS-DPP-NEXT: s_mov_b32 s32, 011745; GFX7LESS-DPP-NEXT: s_mov_b32 s48, SCRATCH_RSRC_DWORD011746; GFX7LESS-DPP-NEXT: s_mov_b32 s49, SCRATCH_RSRC_DWORD111747; GFX7LESS-DPP-NEXT: s_mov_b32 s50, -111748; GFX7LESS-DPP-NEXT: s_mov_b32 s51, 0xe8f00011749; GFX7LESS-DPP-NEXT: s_add_u32 s48, s48, s1111750; GFX7LESS-DPP-NEXT: s_addc_u32 s49, s49, 011751; GFX7LESS-DPP-NEXT: s_mov_b32 s14, s1011752; GFX7LESS-DPP-NEXT: s_mov_b32 s13, s911753; GFX7LESS-DPP-NEXT: s_mov_b32 s12, s811754; GFX7LESS-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]11755; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[36:37], s[4:5], 0x911756; GFX7LESS-DPP-NEXT: s_mov_b32 s39, 0xf00011757; GFX7LESS-DPP-NEXT: s_mov_b32 s38, -111758; GFX7LESS-DPP-NEXT: s_add_u32 s8, s4, 4411759; GFX7LESS-DPP-NEXT: s_addc_u32 s9, s5, 011760; GFX7LESS-DPP-NEXT: s_getpc_b64 s[4:5]11761; GFX7LESS-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411762; GFX7LESS-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211763; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011764; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v211765; GFX7LESS-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v111766; GFX7LESS-DPP-NEXT: v_or_b32_e32 v0, v0, v111767; GFX7LESS-DPP-NEXT: v_or_b32_e32 v31, v0, v211768; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]11769; GFX7LESS-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]11770; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], s[48:49]11771; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], s[50:51]11772; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)11773; GFX7LESS-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]11774; GFX7LESS-DPP-NEXT: buffer_load_dwordx2 v[4:5], off, s[36:39], 011775; GFX7LESS-DPP-NEXT: s_mov_b64 s[0:1], 011776; GFX7LESS-DPP-NEXT: .LBB17_1: ; %atomicrmw.start11777; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=111778; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)11779; GFX7LESS-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[0:1]11780; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)11781; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v9, v511782; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v8, v411783; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v7, v311784; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v6, v211785; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap_x2 v[6:9], off, s[36:39], 0 glc11786; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)11787; GFX7LESS-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[4:5]11788; GFX7LESS-DPP-NEXT: s_or_b64 s[0:1], vcc, s[0:1]11789; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v611790; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v5, v711791; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[0:1]11792; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB17_111793; GFX7LESS-DPP-NEXT: ; %bb.2: ; %atomicrmw.end11794; GFX7LESS-DPP-NEXT: s_endpgm11795;11796; GFX9-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11797; GFX9-DPP: ; %bb.0:11798; GFX9-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011799; GFX9-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111800; GFX9-DPP-NEXT: s_mov_b32 s38, -111801; GFX9-DPP-NEXT: s_mov_b32 s39, 0xe0000011802; GFX9-DPP-NEXT: s_add_u32 s36, s36, s1111803; GFX9-DPP-NEXT: s_addc_u32 s37, s37, 011804; GFX9-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]11805; GFX9-DPP-NEXT: s_mov_b32 s12, s811806; GFX9-DPP-NEXT: s_add_u32 s8, s34, 4411807; GFX9-DPP-NEXT: s_mov_b32 s13, s911808; GFX9-DPP-NEXT: s_addc_u32 s9, s35, 011809; GFX9-DPP-NEXT: s_getpc_b64 s[4:5]11810; GFX9-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411811; GFX9-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211812; GFX9-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011813; GFX9-DPP-NEXT: s_mov_b32 s14, s1011814; GFX9-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]11815; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v211816; GFX9-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v111817; GFX9-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]11818; GFX9-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]11819; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]11820; GFX9-DPP-NEXT: v_or3_b32 v31, v0, v1, v211821; GFX9-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]11822; GFX9-DPP-NEXT: s_mov_b32 s32, 011823; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)11824; GFX9-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]11825; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -111826; GFX9-DPP-NEXT: v_bfrev_b32_e32 v4, 111827; GFX9-DPP-NEXT: v_cndmask_b32_e64 v6, v4, v1, s[0:1]11828; GFX9-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]11829; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 111830; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 011831; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 011832; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:1 row_mask:0xf bank_mask:0xf11833; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:1 row_mask:0xf bank_mask:0xf11834; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]11835; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 111836; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 011837; GFX9-DPP-NEXT: s_nop 011838; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:2 row_mask:0xf bank_mask:0xf11839; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:2 row_mask:0xf bank_mask:0xf11840; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]11841; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 111842; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 011843; GFX9-DPP-NEXT: s_nop 011844; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:4 row_mask:0xf bank_mask:0xf11845; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:4 row_mask:0xf bank_mask:0xf11846; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]11847; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 111848; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 011849; GFX9-DPP-NEXT: s_nop 011850; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_shr:8 row_mask:0xf bank_mask:0xf11851; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_shr:8 row_mask:0xf bank_mask:0xf11852; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]11853; GFX9-DPP-NEXT: v_bfrev_b32_e32 v8, 111854; GFX9-DPP-NEXT: v_mov_b32_e32 v7, 011855; GFX9-DPP-NEXT: s_nop 011856; GFX9-DPP-NEXT: v_mov_b32_dpp v8, v6 row_bcast:15 row_mask:0xa bank_mask:0xf11857; GFX9-DPP-NEXT: v_mov_b32_dpp v7, v5 row_bcast:15 row_mask:0xa bank_mask:0xf11858; GFX9-DPP-NEXT: v_add_f64 v[5:6], v[5:6], v[7:8]11859; GFX9-DPP-NEXT: s_nop 111860; GFX9-DPP-NEXT: v_mov_b32_dpp v4, v6 row_bcast:31 row_mask:0xc bank_mask:0xf11861; GFX9-DPP-NEXT: v_mov_b32_dpp v3, v5 row_bcast:31 row_mask:0xc bank_mask:0xf11862; GFX9-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]11863; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]11864; GFX9-DPP-NEXT: v_mov_b32_e32 v0, 011865; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v1, exec_lo, 011866; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v1, exec_hi, v111867; GFX9-DPP-NEXT: s_or_saveexec_b64 s[0:1], -111868; GFX9-DPP-NEXT: v_readlane_b32 s3, v4, 6311869; GFX9-DPP-NEXT: v_readlane_b32 s2, v3, 6311870; GFX9-DPP-NEXT: s_mov_b64 exec, s[0:1]11871; GFX9-DPP-NEXT: s_mov_b64 s[0:1], s[2:3]11872; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v111873; GFX9-DPP-NEXT: s_and_saveexec_b64 s[2:3], vcc11874; GFX9-DPP-NEXT: s_cbranch_execz .LBB17_311875; GFX9-DPP-NEXT: ; %bb.1:11876; GFX9-DPP-NEXT: s_load_dwordx2 s[2:3], s[34:35], 0x2411877; GFX9-DPP-NEXT: s_mov_b64 s[4:5], 011878; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)11879; GFX9-DPP-NEXT: global_load_dwordx2 v[11:12], v0, s[2:3]11880; GFX9-DPP-NEXT: .LBB17_2: ; %atomicrmw.start11881; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=111882; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)11883; GFX9-DPP-NEXT: v_add_f64 v[9:10], v[11:12], s[0:1]11884; GFX9-DPP-NEXT: global_atomic_cmpswap_x2 v[1:2], v0, v[9:12], s[2:3] glc11885; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)11886; GFX9-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[1:2], v[11:12]11887; GFX9-DPP-NEXT: v_mov_b32_e32 v12, v211888; GFX9-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]11889; GFX9-DPP-NEXT: v_mov_b32_e32 v11, v111890; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]11891; GFX9-DPP-NEXT: s_cbranch_execnz .LBB17_211892; GFX9-DPP-NEXT: .LBB17_3:11893; GFX9-DPP-NEXT: s_endpgm11894;11895; GFX1064-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11896; GFX1064-DPP: ; %bb.0:11897; GFX1064-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011898; GFX1064-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111899; GFX1064-DPP-NEXT: s_mov_b32 s38, -111900; GFX1064-DPP-NEXT: s_mov_b32 s39, 0x31e1600011901; GFX1064-DPP-NEXT: s_add_u32 s36, s36, s1111902; GFX1064-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]11903; GFX1064-DPP-NEXT: s_addc_u32 s37, s37, 011904; GFX1064-DPP-NEXT: s_mov_b32 s12, s811905; GFX1064-DPP-NEXT: s_add_u32 s8, s34, 4411906; GFX1064-DPP-NEXT: s_mov_b32 s13, s911907; GFX1064-DPP-NEXT: s_addc_u32 s9, s35, 011908; GFX1064-DPP-NEXT: s_getpc_b64 s[4:5]11909; GFX1064-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411910; GFX1064-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1211911; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v211912; GFX1064-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x011913; GFX1064-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v111914; GFX1064-DPP-NEXT: s_mov_b32 s14, s1011915; GFX1064-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]11916; GFX1064-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]11917; GFX1064-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]11918; GFX1064-DPP-NEXT: v_or3_b32 v31, v0, v1, v211919; GFX1064-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]11920; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]11921; GFX1064-DPP-NEXT: s_mov_b32 s32, 011922; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)11923; GFX1064-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]11924; GFX1064-DPP-NEXT: s_or_saveexec_b64 s[0:1], -111925; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v4, 111926; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 011927; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s[0:1]11928; GFX1064-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[0:1]11929; GFX1064-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf11930; GFX1064-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf11931; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]11932; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 111933; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 011934; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf11935; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf11936; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]11937; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 111938; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 011939; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf11940; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf11941; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]11942; GFX1064-DPP-NEXT: v_bfrev_b32_e32 v6, 111943; GFX1064-DPP-NEXT: v_mov_b32_e32 v5, 011944; GFX1064-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf11945; GFX1064-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf11946; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]11947; GFX1064-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 011948; GFX1064-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 011949; GFX1064-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]11950; GFX1064-DPP-NEXT: v_readlane_b32 s3, v4, 011951; GFX1064-DPP-NEXT: v_readlane_b32 s2, v3, 011952; GFX1064-DPP-NEXT: v_readlane_b32 s5, v4, 3211953; GFX1064-DPP-NEXT: v_readlane_b32 s4, v3, 3211954; GFX1064-DPP-NEXT: v_add_f64 v[3:4], s[2:3], s[4:5]11955; GFX1064-DPP-NEXT: s_mov_b64 exec, s[0:1]11956; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 011957; GFX1064-DPP-NEXT: v_mov_b32_e32 v2, 011958; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v7, exec_hi, v011959; GFX1064-DPP-NEXT: v_mov_b32_e32 v0, v311960; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v411961; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v711962; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc11963; GFX1064-DPP-NEXT: s_cbranch_execz .LBB17_311964; GFX1064-DPP-NEXT: ; %bb.1:11965; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2411966; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 011967; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)11968; GFX1064-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]11969; GFX1064-DPP-NEXT: .LBB17_2: ; %atomicrmw.start11970; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=111971; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)11972; GFX1064-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]11973; GFX1064-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc11974; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)11975; GFX1064-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[7:8], v[9:10]11976; GFX1064-DPP-NEXT: v_mov_b32_e32 v10, v811977; GFX1064-DPP-NEXT: v_mov_b32_e32 v9, v711978; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]11979; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]11980; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB17_211981; GFX1064-DPP-NEXT: .LBB17_3:11982; GFX1064-DPP-NEXT: s_endpgm11983;11984; GFX1032-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:11985; GFX1032-DPP: ; %bb.0:11986; GFX1032-DPP-NEXT: s_mov_b32 s36, SCRATCH_RSRC_DWORD011987; GFX1032-DPP-NEXT: s_mov_b32 s37, SCRATCH_RSRC_DWORD111988; GFX1032-DPP-NEXT: s_mov_b32 s38, -111989; GFX1032-DPP-NEXT: s_mov_b32 s39, 0x31c1600011990; GFX1032-DPP-NEXT: s_add_u32 s36, s36, s1111991; GFX1032-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]11992; GFX1032-DPP-NEXT: s_addc_u32 s37, s37, 011993; GFX1032-DPP-NEXT: s_mov_b32 s12, s811994; GFX1032-DPP-NEXT: s_add_u32 s8, s34, 4411995; GFX1032-DPP-NEXT: s_mov_b32 s13, s911996; GFX1032-DPP-NEXT: s_addc_u32 s9, s35, 011997; GFX1032-DPP-NEXT: s_getpc_b64 s[4:5]11998; GFX1032-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+411999; GFX1032-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212000; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v2, 20, v212001; GFX1032-DPP-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x012002; GFX1032-DPP-NEXT: v_lshlrev_b32_e32 v1, 10, v112003; GFX1032-DPP-NEXT: s_mov_b32 s14, s1012004; GFX1032-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12005; GFX1032-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12006; GFX1032-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12007; GFX1032-DPP-NEXT: v_or3_b32 v31, v0, v1, v212008; GFX1032-DPP-NEXT: s_mov_b64 s[0:1], s[36:37]12009; GFX1032-DPP-NEXT: s_mov_b64 s[2:3], s[38:39]12010; GFX1032-DPP-NEXT: s_mov_b32 s32, 012011; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12012; GFX1032-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12013; GFX1032-DPP-NEXT: s_or_saveexec_b32 s0, -112014; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v4, 112015; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 012016; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v6, 0x80000000, v1, s012017; GFX1032-DPP-NEXT: v_cndmask_b32_e64 v5, 0, v0, s012018; GFX1032-DPP-NEXT: v_mov_b32_dpp v4, v6 row_xmask:1 row_mask:0xf bank_mask:0xf12019; GFX1032-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12020; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[5:6], v[3:4]12021; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 112022; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 012023; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:2 row_mask:0xf bank_mask:0xf12024; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12025; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12026; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 112027; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 012028; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:4 row_mask:0xf bank_mask:0xf12029; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12030; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12031; GFX1032-DPP-NEXT: v_bfrev_b32_e32 v6, 112032; GFX1032-DPP-NEXT: v_mov_b32_e32 v5, 012033; GFX1032-DPP-NEXT: v_mov_b32_dpp v6, v4 row_xmask:8 row_mask:0xf bank_mask:0xf12034; GFX1032-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12035; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12036; GFX1032-DPP-NEXT: v_permlanex16_b32 v6, v4, 0, 012037; GFX1032-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012038; GFX1032-DPP-NEXT: v_add_f64 v[3:4], v[3:4], v[5:6]12039; GFX1032-DPP-NEXT: s_mov_b32 exec_lo, s012040; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v7, exec_lo, 012041; GFX1032-DPP-NEXT: v_mov_b32_e32 v0, v312042; GFX1032-DPP-NEXT: v_mov_b32_e32 v2, 012043; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v412044; GFX1032-DPP-NEXT: s_mov_b32 s2, 012045; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v712046; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo12047; GFX1032-DPP-NEXT: s_cbranch_execz .LBB17_312048; GFX1032-DPP-NEXT: ; %bb.1:12049; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[34:35], 0x2412050; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12051; GFX1032-DPP-NEXT: global_load_dwordx2 v[9:10], v2, s[0:1]12052; GFX1032-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12053; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=112054; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)12055; GFX1032-DPP-NEXT: v_add_f64 v[7:8], v[9:10], v[0:1]12056; GFX1032-DPP-NEXT: global_atomic_cmpswap_x2 v[7:8], v2, v[7:10], s[0:1] glc12057; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)12058; GFX1032-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[7:8], v[9:10]12059; GFX1032-DPP-NEXT: v_mov_b32_e32 v10, v812060; GFX1032-DPP-NEXT: v_mov_b32_e32 v9, v712061; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s212062; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s212063; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB17_212064; GFX1032-DPP-NEXT: .LBB17_3:12065; GFX1032-DPP-NEXT: s_endpgm12066;12067; GFX1164-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:12068; GFX1164-DPP: ; %bb.0:12069; GFX1164-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12070; GFX1164-DPP-NEXT: s_mov_b32 s12, s812071; GFX1164-DPP-NEXT: s_add_u32 s8, s34, 4412072; GFX1164-DPP-NEXT: s_mov_b32 s13, s912073; GFX1164-DPP-NEXT: s_addc_u32 s9, s35, 012074; GFX1164-DPP-NEXT: s_getpc_b64 s[4:5]12075; GFX1164-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412076; GFX1164-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212077; GFX1164-DPP-NEXT: v_mov_b32_e32 v31, v012078; GFX1164-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x012079; GFX1164-DPP-NEXT: s_mov_b32 s14, s1012080; GFX1164-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12081; GFX1164-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12082; GFX1164-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12083; GFX1164-DPP-NEXT: s_mov_b32 s32, 012084; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)12085; GFX1164-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12086; GFX1164-DPP-NEXT: s_or_saveexec_b64 s[0:1], -112087; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v3, 112088; GFX1164-DPP-NEXT: v_mov_b32_e32 v2, 012089; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s[0:1]12090; GFX1164-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s[0:1]12091; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12092; GFX1164-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12093; GFX1164-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf12094; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12095; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]12096; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 112097; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 012098; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12099; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12100; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf12101; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12102; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 112103; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 012104; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12105; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12106; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf12107; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12108; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12109; GFX1164-DPP-NEXT: v_bfrev_b32_e32 v5, 112110; GFX1164-DPP-NEXT: v_mov_b32_e32 v4, 012111; GFX1164-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12112; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12113; GFX1164-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf12114; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12115; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)12116; GFX1164-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012117; GFX1164-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 012118; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12119; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12120; GFX1164-DPP-NEXT: v_permlane64_b32 v5, v312121; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12122; GFX1164-DPP-NEXT: v_permlane64_b32 v4, v212123; GFX1164-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12124; GFX1164-DPP-NEXT: s_mov_b64 exec, s[0:1]12125; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_3) | instid1(VALU_DEP_2)12126; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, exec_lo, 012127; GFX1164-DPP-NEXT: v_mov_b32_e32 v10, 012128; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec12129; GFX1164-DPP-NEXT: s_waitcnt_depctr depctr_sa_sdst(0)12130; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v6, exec_hi, v012131; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)12132; GFX1164-DPP-NEXT: v_mov_b32_e32 v0, v212133; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, v312134; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v612135; GFX1164-DPP-NEXT: s_cbranch_execz .LBB17_312136; GFX1164-DPP-NEXT: ; %bb.1:12137; GFX1164-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2412138; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], 012139; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)12140; GFX1164-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]12141; GFX1164-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12142; GFX1164-DPP-NEXT: ; =>This Inner Loop Header: Depth=112143; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)12144; GFX1164-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]12145; GFX1164-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc12146; GFX1164-DPP-NEXT: s_waitcnt vmcnt(0)12147; GFX1164-DPP-NEXT: v_cmp_eq_u64_e32 vcc, v[6:7], v[8:9]12148; GFX1164-DPP-NEXT: v_mov_b32_e32 v9, v712149; GFX1164-DPP-NEXT: v_mov_b32_e32 v8, v612150; GFX1164-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12151; GFX1164-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12152; GFX1164-DPP-NEXT: s_and_not1_b64 exec, exec, s[2:3]12153; GFX1164-DPP-NEXT: s_cbranch_execnz .LBB17_212154; GFX1164-DPP-NEXT: .LBB17_3:12155; GFX1164-DPP-NEXT: s_endpgm12156;12157; GFX1132-DPP-LABEL: global_atomic_fadd_double_uni_address_div_value_default_scope_strictfp:12158; GFX1132-DPP: ; %bb.0:12159; GFX1132-DPP-NEXT: s_mov_b64 s[34:35], s[4:5]12160; GFX1132-DPP-NEXT: v_mov_b32_e32 v31, v012161; GFX1132-DPP-NEXT: s_add_u32 s8, s34, 4412162; GFX1132-DPP-NEXT: s_addc_u32 s9, s35, 012163; GFX1132-DPP-NEXT: s_getpc_b64 s[4:5]12164; GFX1132-DPP-NEXT: s_add_u32 s4, s4, div.float.value@gotpcrel32@lo+412165; GFX1132-DPP-NEXT: s_addc_u32 s5, s5, div.float.value@gotpcrel32@hi+1212166; GFX1132-DPP-NEXT: s_mov_b32 s12, s1312167; GFX1132-DPP-NEXT: s_load_b64 s[16:17], s[4:5], 0x012168; GFX1132-DPP-NEXT: s_mov_b64 s[10:11], s[6:7]12169; GFX1132-DPP-NEXT: s_mov_b64 s[4:5], s[0:1]12170; GFX1132-DPP-NEXT: s_mov_b64 s[6:7], s[2:3]12171; GFX1132-DPP-NEXT: s_mov_b32 s13, s1412172; GFX1132-DPP-NEXT: s_mov_b32 s14, s1512173; GFX1132-DPP-NEXT: s_mov_b32 s32, 012174; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)12175; GFX1132-DPP-NEXT: s_swappc_b64 s[30:31], s[16:17]12176; GFX1132-DPP-NEXT: s_or_saveexec_b32 s0, -112177; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v3, 112178; GFX1132-DPP-NEXT: v_mov_b32_e32 v2, 012179; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v5, 0x80000000, v1, s012180; GFX1132-DPP-NEXT: v_cndmask_b32_e64 v4, 0, v0, s012181; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12182; GFX1132-DPP-NEXT: v_mov_b32_dpp v3, v5 row_xmask:1 row_mask:0xf bank_mask:0xf12183; GFX1132-DPP-NEXT: v_mov_b32_dpp v2, v4 row_xmask:1 row_mask:0xf bank_mask:0xf12184; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12185; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[4:5], v[2:3]12186; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 112187; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 012188; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:2 row_mask:0xf bank_mask:0xf12189; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12190; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:2 row_mask:0xf bank_mask:0xf12191; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12192; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 112193; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 012194; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)12195; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:4 row_mask:0xf bank_mask:0xf12196; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:4 row_mask:0xf bank_mask:0xf12197; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2)12198; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12199; GFX1132-DPP-NEXT: v_bfrev_b32_e32 v5, 112200; GFX1132-DPP-NEXT: v_mov_b32_e32 v4, 012201; GFX1132-DPP-NEXT: v_mov_b32_dpp v5, v3 row_xmask:8 row_mask:0xf bank_mask:0xf12202; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12203; GFX1132-DPP-NEXT: v_mov_b32_dpp v4, v2 row_xmask:8 row_mask:0xf bank_mask:0xf12204; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12205; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)12206; GFX1132-DPP-NEXT: v_permlanex16_b32 v5, v3, 0, 012207; GFX1132-DPP-NEXT: v_permlanex16_b32 v4, v2, 0, 012208; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12209; GFX1132-DPP-NEXT: v_add_f64 v[2:3], v[2:3], v[4:5]12210; GFX1132-DPP-NEXT: s_mov_b32 exec_lo, s012211; GFX1132-DPP-NEXT: v_mov_b32_e32 v0, v212212; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v6, exec_lo, 012213; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_2)12214; GFX1132-DPP-NEXT: v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v1, v312215; GFX1132-DPP-NEXT: s_mov_b32 s2, 012216; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo12217; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v612218; GFX1132-DPP-NEXT: s_cbranch_execz .LBB17_312219; GFX1132-DPP-NEXT: ; %bb.1:12220; GFX1132-DPP-NEXT: s_load_b64 s[0:1], s[34:35], 0x2412221; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)12222; GFX1132-DPP-NEXT: global_load_b64 v[8:9], v10, s[0:1]12223; GFX1132-DPP-NEXT: .LBB17_2: ; %atomicrmw.start12224; GFX1132-DPP-NEXT: ; =>This Inner Loop Header: Depth=112225; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)12226; GFX1132-DPP-NEXT: v_add_f64 v[6:7], v[8:9], v[0:1]12227; GFX1132-DPP-NEXT: global_atomic_cmpswap_b64 v[6:7], v10, v[6:9], s[0:1] glc12228; GFX1132-DPP-NEXT: s_waitcnt vmcnt(0)12229; GFX1132-DPP-NEXT: v_cmp_eq_u64_e32 vcc_lo, v[6:7], v[8:9]12230; GFX1132-DPP-NEXT: v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v612231; GFX1132-DPP-NEXT: s_or_b32 s2, vcc_lo, s212232; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1)12233; GFX1132-DPP-NEXT: s_and_not1_b32 exec_lo, exec_lo, s212234; GFX1132-DPP-NEXT: s_cbranch_execnz .LBB17_212235; GFX1132-DPP-NEXT: .LBB17_3:12236; GFX1132-DPP-NEXT: s_endpgm12237 %divValue = call double @div.float.value() strictfp12238 %result = atomicrmw fadd ptr addrspace(1) %ptr, double %divValue monotonic, align 8, !amdgpu.no.fine.grained.memory !1, !amdgpu.ignore.denormal.mode !112239 ret void12240}12241 12242define amdgpu_kernel void @global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory(ptr addrspace(1) %ptr) {12243; GFX7LESS-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12244; GFX7LESS: ; %bb.0:12245; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec12246; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 012247; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v012248; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012249; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc12250; GFX7LESS-NEXT: s_cbranch_execz .LBB18_312251; GFX7LESS-NEXT: ; %bb.1:12252; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912253; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12254; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)12255; GFX7LESS-NEXT: s_load_dword s6, s[0:1], 0x012256; GFX7LESS-NEXT: s_mov_b64 s[4:5], 012257; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00012258; GFX7LESS-NEXT: v_cvt_f32_ubyte0_e32 v0, s212259; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v012260; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)12261; GFX7LESS-NEXT: v_mov_b32_e32 v1, s612262; GFX7LESS-NEXT: s_mov_b32 s2, -112263; GFX7LESS-NEXT: .LBB18_2: ; %atomicrmw.start12264; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=112265; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v212266; GFX7LESS-NEXT: s_waitcnt expcnt(0)12267; GFX7LESS-NEXT: v_mov_b32_e32 v4, v112268; GFX7LESS-NEXT: v_mov_b32_e32 v3, v012269; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc12270; GFX7LESS-NEXT: s_waitcnt vmcnt(0)12271; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v112272; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]12273; GFX7LESS-NEXT: v_mov_b32_e32 v1, v312274; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]12275; GFX7LESS-NEXT: s_cbranch_execnz .LBB18_212276; GFX7LESS-NEXT: .LBB18_3:12277; GFX7LESS-NEXT: s_endpgm12278;12279; GFX9-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12280; GFX9: ; %bb.0:12281; GFX9-NEXT: s_mov_b64 s[2:3], exec12282; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012283; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012284; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012285; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc12286; GFX9-NEXT: s_cbranch_execz .LBB18_312287; GFX9-NEXT: ; %bb.1:12288; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412289; GFX9-NEXT: s_bcnt1_i32_b64 s5, s[2:3]12290; GFX9-NEXT: v_cvt_f32_ubyte0_e32 v0, s512291; GFX9-NEXT: s_mov_b64 s[2:3], 012292; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v012293; GFX9-NEXT: s_waitcnt lgkmcnt(0)12294; GFX9-NEXT: s_load_dword s4, s[0:1], 0x012295; GFX9-NEXT: v_mov_b32_e32 v3, 012296; GFX9-NEXT: s_waitcnt lgkmcnt(0)12297; GFX9-NEXT: v_mov_b32_e32 v1, s412298; GFX9-NEXT: .LBB18_2: ; %atomicrmw.start12299; GFX9-NEXT: ; =>This Inner Loop Header: Depth=112300; GFX9-NEXT: v_add_f32_e32 v0, v1, v212301; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12302; GFX9-NEXT: s_waitcnt vmcnt(0)12303; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112304; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12305; GFX9-NEXT: v_mov_b32_e32 v1, v012306; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]12307; GFX9-NEXT: s_cbranch_execnz .LBB18_212308; GFX9-NEXT: .LBB18_3:12309; GFX9-NEXT: s_endpgm12310;12311; GFX1064-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12312; GFX1064: ; %bb.0:12313; GFX1064-NEXT: s_mov_b64 s[2:3], exec12314; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012315; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012316; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012317; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc12318; GFX1064-NEXT: s_cbranch_execz .LBB18_312319; GFX1064-NEXT: ; %bb.1:12320; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412321; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12322; GFX1064-NEXT: v_mov_b32_e32 v3, 012323; GFX1064-NEXT: v_cvt_f32_ubyte0_e32 v0, s212324; GFX1064-NEXT: s_mov_b64 s[2:3], 012325; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v012326; GFX1064-NEXT: s_waitcnt lgkmcnt(0)12327; GFX1064-NEXT: s_load_dword s4, s[0:1], 0x012328; GFX1064-NEXT: s_waitcnt lgkmcnt(0)12329; GFX1064-NEXT: v_mov_b32_e32 v1, s412330; GFX1064-NEXT: .LBB18_2: ; %atomicrmw.start12331; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=112332; GFX1064-NEXT: v_add_f32_e32 v0, v1, v212333; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12334; GFX1064-NEXT: s_waitcnt vmcnt(0)12335; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112336; GFX1064-NEXT: v_mov_b32_e32 v1, v012337; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12338; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]12339; GFX1064-NEXT: s_cbranch_execnz .LBB18_212340; GFX1064-NEXT: .LBB18_3:12341; GFX1064-NEXT: s_endpgm12342;12343; GFX1032-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12344; GFX1032: ; %bb.0:12345; GFX1032-NEXT: s_mov_b32 s3, exec_lo12346; GFX1032-NEXT: s_mov_b32 s2, 012347; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 012348; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012349; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo12350; GFX1032-NEXT: s_cbranch_execz .LBB18_312351; GFX1032-NEXT: ; %bb.1:12352; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412353; GFX1032-NEXT: s_bcnt1_i32_b32 s3, s312354; GFX1032-NEXT: v_mov_b32_e32 v3, 012355; GFX1032-NEXT: v_cvt_f32_ubyte0_e32 v0, s312356; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v012357; GFX1032-NEXT: s_waitcnt lgkmcnt(0)12358; GFX1032-NEXT: s_load_dword s4, s[0:1], 0x012359; GFX1032-NEXT: s_waitcnt lgkmcnt(0)12360; GFX1032-NEXT: v_mov_b32_e32 v1, s412361; GFX1032-NEXT: .LBB18_2: ; %atomicrmw.start12362; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=112363; GFX1032-NEXT: v_add_f32_e32 v0, v1, v212364; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12365; GFX1032-NEXT: s_waitcnt vmcnt(0)12366; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v112367; GFX1032-NEXT: v_mov_b32_e32 v1, v012368; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s212369; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s212370; GFX1032-NEXT: s_cbranch_execnz .LBB18_212371; GFX1032-NEXT: .LBB18_3:12372; GFX1032-NEXT: s_endpgm12373;12374; GFX1164-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12375; GFX1164: ; %bb.0:12376; GFX1164-NEXT: s_mov_b64 s[0:1], exec12377; GFX1164-NEXT: s_mov_b64 s[2:3], exec12378; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012379; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12380; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v012381; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v012382; GFX1164-NEXT: s_cbranch_execz .LBB18_212383; GFX1164-NEXT: ; %bb.1:12384; GFX1164-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412385; GFX1164-NEXT: s_bcnt1_i32_b64 s0, s[0:1]12386; GFX1164-NEXT: v_mov_b32_e32 v1, 012387; GFX1164-NEXT: v_cvt_f32_ubyte0_e32 v0, s012388; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)12389; GFX1164-NEXT: v_mul_f32_e32 v0, 4.0, v012390; GFX1164-NEXT: s_waitcnt lgkmcnt(0)12391; GFX1164-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12392; GFX1164-NEXT: .LBB18_2:12393; GFX1164-NEXT: s_endpgm12394;12395; GFX1132-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12396; GFX1132: ; %bb.0:12397; GFX1132-NEXT: s_mov_b32 s0, exec_lo12398; GFX1132-NEXT: s_mov_b32 s1, exec_lo12399; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012400; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)12401; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v012402; GFX1132-NEXT: s_cbranch_execz .LBB18_212403; GFX1132-NEXT: ; %bb.1:12404; GFX1132-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412405; GFX1132-NEXT: s_bcnt1_i32_b32 s0, s012406; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)12407; GFX1132-NEXT: v_cvt_f32_ubyte0_e32 v0, s012408; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v012409; GFX1132-NEXT: s_waitcnt lgkmcnt(0)12410; GFX1132-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12411; GFX1132-NEXT: .LBB18_2:12412; GFX1132-NEXT: s_endpgm12413;12414; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12415; GFX7LESS-DPP: ; %bb.0:12416; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec12417; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 012418; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v012419; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012420; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12421; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB18_312422; GFX7LESS-DPP-NEXT: ; %bb.1:12423; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912424; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12425; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)12426; GFX7LESS-DPP-NEXT: s_load_dword s6, s[0:1], 0x012427; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 012428; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf00012429; GFX7LESS-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s212430; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012431; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)12432; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s612433; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -112434; GFX7LESS-DPP-NEXT: .LBB18_2: ; %atomicrmw.start12435; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=112436; GFX7LESS-DPP-NEXT: v_add_f32_e32 v0, v1, v212437; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)12438; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v112439; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v012440; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc12441; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)12442; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v112443; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]12444; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v312445; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]12446; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB18_212447; GFX7LESS-DPP-NEXT: .LBB18_3:12448; GFX7LESS-DPP-NEXT: s_endpgm12449;12450; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12451; GFX9-DPP: ; %bb.0:12452; GFX9-DPP-NEXT: s_mov_b64 s[2:3], exec12453; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012454; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012455; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012456; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12457; GFX9-DPP-NEXT: s_cbranch_execz .LBB18_312458; GFX9-DPP-NEXT: ; %bb.1:12459; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412460; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s5, s[2:3]12461; GFX9-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s512462; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 012463; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012464; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)12465; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x012466; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 012467; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)12468; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s412469; GFX9-DPP-NEXT: .LBB18_2: ; %atomicrmw.start12470; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=112471; GFX9-DPP-NEXT: v_add_f32_e32 v0, v1, v212472; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12473; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)12474; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112475; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12476; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v012477; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]12478; GFX9-DPP-NEXT: s_cbranch_execnz .LBB18_212479; GFX9-DPP-NEXT: .LBB18_3:12480; GFX9-DPP-NEXT: s_endpgm12481;12482; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12483; GFX1064-DPP: ; %bb.0:12484; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], exec12485; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012486; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012487; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012488; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12489; GFX1064-DPP-NEXT: s_cbranch_execz .LBB18_312490; GFX1064-DPP-NEXT: ; %bb.1:12491; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412492; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12493; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 012494; GFX1064-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s212495; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 012496; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012497; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)12498; GFX1064-DPP-NEXT: s_load_dword s4, s[0:1], 0x012499; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)12500; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s412501; GFX1064-DPP-NEXT: .LBB18_2: ; %atomicrmw.start12502; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=112503; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v212504; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12505; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)12506; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112507; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v012508; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12509; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]12510; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB18_212511; GFX1064-DPP-NEXT: .LBB18_3:12512; GFX1064-DPP-NEXT: s_endpgm12513;12514; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12515; GFX1032-DPP: ; %bb.0:12516; GFX1032-DPP-NEXT: s_mov_b32 s3, exec_lo12517; GFX1032-DPP-NEXT: s_mov_b32 s2, 012518; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 012519; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012520; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo12521; GFX1032-DPP-NEXT: s_cbranch_execz .LBB18_312522; GFX1032-DPP-NEXT: ; %bb.1:12523; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412524; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s3, s312525; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 012526; GFX1032-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s312527; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012528; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12529; GFX1032-DPP-NEXT: s_load_dword s4, s[0:1], 0x012530; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12531; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s412532; GFX1032-DPP-NEXT: .LBB18_2: ; %atomicrmw.start12533; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=112534; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v212535; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12536; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)12537; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v112538; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v012539; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s212540; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s212541; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB18_212542; GFX1032-DPP-NEXT: .LBB18_3:12543; GFX1032-DPP-NEXT: s_endpgm12544;12545; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12546; GFX1164-DPP: ; %bb.0:12547; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec12548; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], exec12549; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012550; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12551; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v012552; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v012553; GFX1164-DPP-NEXT: s_cbranch_execz .LBB18_212554; GFX1164-DPP-NEXT: ; %bb.1:12555; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412556; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]12557; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, 012558; GFX1164-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s012559; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12560; GFX1164-DPP-NEXT: v_mul_f32_e32 v0, 4.0, v012561; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)12562; GFX1164-DPP-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12563; GFX1164-DPP-NEXT: .LBB18_2:12564; GFX1164-DPP-NEXT: s_endpgm12565;12566; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_ignore_denormal_mode__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12567; GFX1132-DPP: ; %bb.0:12568; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo12569; GFX1132-DPP-NEXT: s_mov_b32 s1, exec_lo12570; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012571; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12572; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v012573; GFX1132-DPP-NEXT: s_cbranch_execz .LBB18_212574; GFX1132-DPP-NEXT: ; %bb.1:12575; GFX1132-DPP-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412576; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, s012577; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)12578; GFX1132-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s012579; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v012580; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)12581; GFX1132-DPP-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12582; GFX1132-DPP-NEXT: .LBB18_2:12583; GFX1132-DPP-NEXT: s_endpgm12584 %result = atomicrmw fadd ptr addrspace(1) %ptr, float 4.0 monotonic, align 8, !amdgpu.no.fine.grained.memory !1, !amdgpu.no.remote.memory !1, !amdgpu.ignore.denormal.mode !112585 ret void12586}12587 12588define amdgpu_kernel void @global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory(ptr addrspace(1) %ptr) {12589; GFX7LESS-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12590; GFX7LESS: ; %bb.0:12591; GFX7LESS-NEXT: s_mov_b64 s[2:3], exec12592; GFX7LESS-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 012593; GFX7LESS-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v012594; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012595; GFX7LESS-NEXT: s_and_saveexec_b64 s[0:1], vcc12596; GFX7LESS-NEXT: s_cbranch_execz .LBB19_312597; GFX7LESS-NEXT: ; %bb.1:12598; GFX7LESS-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912599; GFX7LESS-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12600; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)12601; GFX7LESS-NEXT: s_load_dword s6, s[0:1], 0x012602; GFX7LESS-NEXT: s_mov_b64 s[4:5], 012603; GFX7LESS-NEXT: s_mov_b32 s3, 0xf00012604; GFX7LESS-NEXT: v_cvt_f32_ubyte0_e32 v0, s212605; GFX7LESS-NEXT: v_mul_f32_e32 v2, 4.0, v012606; GFX7LESS-NEXT: s_waitcnt lgkmcnt(0)12607; GFX7LESS-NEXT: v_mov_b32_e32 v1, s612608; GFX7LESS-NEXT: s_mov_b32 s2, -112609; GFX7LESS-NEXT: .LBB19_2: ; %atomicrmw.start12610; GFX7LESS-NEXT: ; =>This Inner Loop Header: Depth=112611; GFX7LESS-NEXT: v_add_f32_e32 v0, v1, v212612; GFX7LESS-NEXT: s_waitcnt expcnt(0)12613; GFX7LESS-NEXT: v_mov_b32_e32 v4, v112614; GFX7LESS-NEXT: v_mov_b32_e32 v3, v012615; GFX7LESS-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc12616; GFX7LESS-NEXT: s_waitcnt vmcnt(0)12617; GFX7LESS-NEXT: v_cmp_eq_u32_e32 vcc, v3, v112618; GFX7LESS-NEXT: s_or_b64 s[4:5], vcc, s[4:5]12619; GFX7LESS-NEXT: v_mov_b32_e32 v1, v312620; GFX7LESS-NEXT: s_andn2_b64 exec, exec, s[4:5]12621; GFX7LESS-NEXT: s_cbranch_execnz .LBB19_212622; GFX7LESS-NEXT: .LBB19_3:12623; GFX7LESS-NEXT: s_endpgm12624;12625; GFX9-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12626; GFX9: ; %bb.0:12627; GFX9-NEXT: s_mov_b64 s[2:3], exec12628; GFX9-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012629; GFX9-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012630; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012631; GFX9-NEXT: s_and_saveexec_b64 s[0:1], vcc12632; GFX9-NEXT: s_cbranch_execz .LBB19_312633; GFX9-NEXT: ; %bb.1:12634; GFX9-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412635; GFX9-NEXT: s_bcnt1_i32_b64 s5, s[2:3]12636; GFX9-NEXT: v_cvt_f32_ubyte0_e32 v0, s512637; GFX9-NEXT: s_mov_b64 s[2:3], 012638; GFX9-NEXT: v_mul_f32_e32 v2, 4.0, v012639; GFX9-NEXT: s_waitcnt lgkmcnt(0)12640; GFX9-NEXT: s_load_dword s4, s[0:1], 0x012641; GFX9-NEXT: v_mov_b32_e32 v3, 012642; GFX9-NEXT: s_waitcnt lgkmcnt(0)12643; GFX9-NEXT: v_mov_b32_e32 v1, s412644; GFX9-NEXT: .LBB19_2: ; %atomicrmw.start12645; GFX9-NEXT: ; =>This Inner Loop Header: Depth=112646; GFX9-NEXT: v_add_f32_e32 v0, v1, v212647; GFX9-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12648; GFX9-NEXT: s_waitcnt vmcnt(0)12649; GFX9-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112650; GFX9-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12651; GFX9-NEXT: v_mov_b32_e32 v1, v012652; GFX9-NEXT: s_andn2_b64 exec, exec, s[2:3]12653; GFX9-NEXT: s_cbranch_execnz .LBB19_212654; GFX9-NEXT: .LBB19_3:12655; GFX9-NEXT: s_endpgm12656;12657; GFX1064-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12658; GFX1064: ; %bb.0:12659; GFX1064-NEXT: s_mov_b64 s[2:3], exec12660; GFX1064-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012661; GFX1064-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012662; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012663; GFX1064-NEXT: s_and_saveexec_b64 s[0:1], vcc12664; GFX1064-NEXT: s_cbranch_execz .LBB19_312665; GFX1064-NEXT: ; %bb.1:12666; GFX1064-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412667; GFX1064-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12668; GFX1064-NEXT: v_mov_b32_e32 v3, 012669; GFX1064-NEXT: v_cvt_f32_ubyte0_e32 v0, s212670; GFX1064-NEXT: s_mov_b64 s[2:3], 012671; GFX1064-NEXT: v_mul_f32_e32 v2, 4.0, v012672; GFX1064-NEXT: s_waitcnt lgkmcnt(0)12673; GFX1064-NEXT: s_load_dword s4, s[0:1], 0x012674; GFX1064-NEXT: s_waitcnt lgkmcnt(0)12675; GFX1064-NEXT: v_mov_b32_e32 v1, s412676; GFX1064-NEXT: .LBB19_2: ; %atomicrmw.start12677; GFX1064-NEXT: ; =>This Inner Loop Header: Depth=112678; GFX1064-NEXT: v_add_f32_e32 v0, v1, v212679; GFX1064-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12680; GFX1064-NEXT: s_waitcnt vmcnt(0)12681; GFX1064-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112682; GFX1064-NEXT: v_mov_b32_e32 v1, v012683; GFX1064-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12684; GFX1064-NEXT: s_andn2_b64 exec, exec, s[2:3]12685; GFX1064-NEXT: s_cbranch_execnz .LBB19_212686; GFX1064-NEXT: .LBB19_3:12687; GFX1064-NEXT: s_endpgm12688;12689; GFX1032-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12690; GFX1032: ; %bb.0:12691; GFX1032-NEXT: s_mov_b32 s3, exec_lo12692; GFX1032-NEXT: s_mov_b32 s2, 012693; GFX1032-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 012694; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012695; GFX1032-NEXT: s_and_saveexec_b32 s0, vcc_lo12696; GFX1032-NEXT: s_cbranch_execz .LBB19_312697; GFX1032-NEXT: ; %bb.1:12698; GFX1032-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412699; GFX1032-NEXT: s_bcnt1_i32_b32 s3, s312700; GFX1032-NEXT: v_mov_b32_e32 v3, 012701; GFX1032-NEXT: v_cvt_f32_ubyte0_e32 v0, s312702; GFX1032-NEXT: v_mul_f32_e32 v2, 4.0, v012703; GFX1032-NEXT: s_waitcnt lgkmcnt(0)12704; GFX1032-NEXT: s_load_dword s4, s[0:1], 0x012705; GFX1032-NEXT: s_waitcnt lgkmcnt(0)12706; GFX1032-NEXT: v_mov_b32_e32 v1, s412707; GFX1032-NEXT: .LBB19_2: ; %atomicrmw.start12708; GFX1032-NEXT: ; =>This Inner Loop Header: Depth=112709; GFX1032-NEXT: v_add_f32_e32 v0, v1, v212710; GFX1032-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12711; GFX1032-NEXT: s_waitcnt vmcnt(0)12712; GFX1032-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v112713; GFX1032-NEXT: v_mov_b32_e32 v1, v012714; GFX1032-NEXT: s_or_b32 s2, vcc_lo, s212715; GFX1032-NEXT: s_andn2_b32 exec_lo, exec_lo, s212716; GFX1032-NEXT: s_cbranch_execnz .LBB19_212717; GFX1032-NEXT: .LBB19_3:12718; GFX1032-NEXT: s_endpgm12719;12720; GFX1164-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12721; GFX1164: ; %bb.0:12722; GFX1164-NEXT: s_mov_b64 s[0:1], exec12723; GFX1164-NEXT: s_mov_b64 s[2:3], exec12724; GFX1164-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012725; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12726; GFX1164-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v012727; GFX1164-NEXT: v_cmpx_eq_u32_e32 0, v012728; GFX1164-NEXT: s_cbranch_execz .LBB19_212729; GFX1164-NEXT: ; %bb.1:12730; GFX1164-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412731; GFX1164-NEXT: s_bcnt1_i32_b64 s0, s[0:1]12732; GFX1164-NEXT: v_mov_b32_e32 v1, 012733; GFX1164-NEXT: v_cvt_f32_ubyte0_e32 v0, s012734; GFX1164-NEXT: s_delay_alu instid0(VALU_DEP_1)12735; GFX1164-NEXT: v_mul_f32_e32 v0, 4.0, v012736; GFX1164-NEXT: s_waitcnt lgkmcnt(0)12737; GFX1164-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12738; GFX1164-NEXT: .LBB19_2:12739; GFX1164-NEXT: s_endpgm12740;12741; GFX1132-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12742; GFX1132: ; %bb.0:12743; GFX1132-NEXT: s_mov_b32 s0, exec_lo12744; GFX1132-NEXT: s_mov_b32 s1, exec_lo12745; GFX1132-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012746; GFX1132-NEXT: s_delay_alu instid0(VALU_DEP_1)12747; GFX1132-NEXT: v_cmpx_eq_u32_e32 0, v012748; GFX1132-NEXT: s_cbranch_execz .LBB19_212749; GFX1132-NEXT: ; %bb.1:12750; GFX1132-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412751; GFX1132-NEXT: s_bcnt1_i32_b32 s0, s012752; GFX1132-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)12753; GFX1132-NEXT: v_cvt_f32_ubyte0_e32 v0, s012754; GFX1132-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v012755; GFX1132-NEXT: s_waitcnt lgkmcnt(0)12756; GFX1132-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12757; GFX1132-NEXT: .LBB19_2:12758; GFX1132-NEXT: s_endpgm12759;12760; GFX7LESS-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12761; GFX7LESS-DPP: ; %bb.0:12762; GFX7LESS-DPP-NEXT: s_mov_b64 s[2:3], exec12763; GFX7LESS-DPP-NEXT: v_mbcnt_lo_u32_b32_e64 v0, s2, 012764; GFX7LESS-DPP-NEXT: v_mbcnt_hi_u32_b32_e32 v0, s3, v012765; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012766; GFX7LESS-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12767; GFX7LESS-DPP-NEXT: s_cbranch_execz .LBB19_312768; GFX7LESS-DPP-NEXT: ; %bb.1:12769; GFX7LESS-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x912770; GFX7LESS-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12771; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)12772; GFX7LESS-DPP-NEXT: s_load_dword s6, s[0:1], 0x012773; GFX7LESS-DPP-NEXT: s_mov_b64 s[4:5], 012774; GFX7LESS-DPP-NEXT: s_mov_b32 s3, 0xf00012775; GFX7LESS-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s212776; GFX7LESS-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012777; GFX7LESS-DPP-NEXT: s_waitcnt lgkmcnt(0)12778; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, s612779; GFX7LESS-DPP-NEXT: s_mov_b32 s2, -112780; GFX7LESS-DPP-NEXT: .LBB19_2: ; %atomicrmw.start12781; GFX7LESS-DPP-NEXT: ; =>This Inner Loop Header: Depth=112782; GFX7LESS-DPP-NEXT: v_add_f32_e32 v0, v1, v212783; GFX7LESS-DPP-NEXT: s_waitcnt expcnt(0)12784; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v4, v112785; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v3, v012786; GFX7LESS-DPP-NEXT: buffer_atomic_cmpswap v[3:4], off, s[0:3], 0 glc12787; GFX7LESS-DPP-NEXT: s_waitcnt vmcnt(0)12788; GFX7LESS-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v3, v112789; GFX7LESS-DPP-NEXT: s_or_b64 s[4:5], vcc, s[4:5]12790; GFX7LESS-DPP-NEXT: v_mov_b32_e32 v1, v312791; GFX7LESS-DPP-NEXT: s_andn2_b64 exec, exec, s[4:5]12792; GFX7LESS-DPP-NEXT: s_cbranch_execnz .LBB19_212793; GFX7LESS-DPP-NEXT: .LBB19_3:12794; GFX7LESS-DPP-NEXT: s_endpgm12795;12796; GFX9-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12797; GFX9-DPP: ; %bb.0:12798; GFX9-DPP-NEXT: s_mov_b64 s[2:3], exec12799; GFX9-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012800; GFX9-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012801; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012802; GFX9-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12803; GFX9-DPP-NEXT: s_cbranch_execz .LBB19_312804; GFX9-DPP-NEXT: ; %bb.1:12805; GFX9-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412806; GFX9-DPP-NEXT: s_bcnt1_i32_b64 s5, s[2:3]12807; GFX9-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s512808; GFX9-DPP-NEXT: s_mov_b64 s[2:3], 012809; GFX9-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012810; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)12811; GFX9-DPP-NEXT: s_load_dword s4, s[0:1], 0x012812; GFX9-DPP-NEXT: v_mov_b32_e32 v3, 012813; GFX9-DPP-NEXT: s_waitcnt lgkmcnt(0)12814; GFX9-DPP-NEXT: v_mov_b32_e32 v1, s412815; GFX9-DPP-NEXT: .LBB19_2: ; %atomicrmw.start12816; GFX9-DPP-NEXT: ; =>This Inner Loop Header: Depth=112817; GFX9-DPP-NEXT: v_add_f32_e32 v0, v1, v212818; GFX9-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12819; GFX9-DPP-NEXT: s_waitcnt vmcnt(0)12820; GFX9-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112821; GFX9-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12822; GFX9-DPP-NEXT: v_mov_b32_e32 v1, v012823; GFX9-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]12824; GFX9-DPP-NEXT: s_cbranch_execnz .LBB19_212825; GFX9-DPP-NEXT: .LBB19_3:12826; GFX9-DPP-NEXT: s_endpgm12827;12828; GFX1064-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12829; GFX1064-DPP: ; %bb.0:12830; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], exec12831; GFX1064-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s2, 012832; GFX1064-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s3, v012833; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v012834; GFX1064-DPP-NEXT: s_and_saveexec_b64 s[0:1], vcc12835; GFX1064-DPP-NEXT: s_cbranch_execz .LBB19_312836; GFX1064-DPP-NEXT: ; %bb.1:12837; GFX1064-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412838; GFX1064-DPP-NEXT: s_bcnt1_i32_b64 s2, s[2:3]12839; GFX1064-DPP-NEXT: v_mov_b32_e32 v3, 012840; GFX1064-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s212841; GFX1064-DPP-NEXT: s_mov_b64 s[2:3], 012842; GFX1064-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012843; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)12844; GFX1064-DPP-NEXT: s_load_dword s4, s[0:1], 0x012845; GFX1064-DPP-NEXT: s_waitcnt lgkmcnt(0)12846; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, s412847; GFX1064-DPP-NEXT: .LBB19_2: ; %atomicrmw.start12848; GFX1064-DPP-NEXT: ; =>This Inner Loop Header: Depth=112849; GFX1064-DPP-NEXT: v_add_f32_e32 v0, v1, v212850; GFX1064-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12851; GFX1064-DPP-NEXT: s_waitcnt vmcnt(0)12852; GFX1064-DPP-NEXT: v_cmp_eq_u32_e32 vcc, v0, v112853; GFX1064-DPP-NEXT: v_mov_b32_e32 v1, v012854; GFX1064-DPP-NEXT: s_or_b64 s[2:3], vcc, s[2:3]12855; GFX1064-DPP-NEXT: s_andn2_b64 exec, exec, s[2:3]12856; GFX1064-DPP-NEXT: s_cbranch_execnz .LBB19_212857; GFX1064-DPP-NEXT: .LBB19_3:12858; GFX1064-DPP-NEXT: s_endpgm12859;12860; GFX1032-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12861; GFX1032-DPP: ; %bb.0:12862; GFX1032-DPP-NEXT: s_mov_b32 s3, exec_lo12863; GFX1032-DPP-NEXT: s_mov_b32 s2, 012864; GFX1032-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s3, 012865; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, 0, v012866; GFX1032-DPP-NEXT: s_and_saveexec_b32 s0, vcc_lo12867; GFX1032-DPP-NEXT: s_cbranch_execz .LBB19_312868; GFX1032-DPP-NEXT: ; %bb.1:12869; GFX1032-DPP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2412870; GFX1032-DPP-NEXT: s_bcnt1_i32_b32 s3, s312871; GFX1032-DPP-NEXT: v_mov_b32_e32 v3, 012872; GFX1032-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s312873; GFX1032-DPP-NEXT: v_mul_f32_e32 v2, 4.0, v012874; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12875; GFX1032-DPP-NEXT: s_load_dword s4, s[0:1], 0x012876; GFX1032-DPP-NEXT: s_waitcnt lgkmcnt(0)12877; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, s412878; GFX1032-DPP-NEXT: .LBB19_2: ; %atomicrmw.start12879; GFX1032-DPP-NEXT: ; =>This Inner Loop Header: Depth=112880; GFX1032-DPP-NEXT: v_add_f32_e32 v0, v1, v212881; GFX1032-DPP-NEXT: global_atomic_cmpswap v0, v3, v[0:1], s[0:1] glc12882; GFX1032-DPP-NEXT: s_waitcnt vmcnt(0)12883; GFX1032-DPP-NEXT: v_cmp_eq_u32_e32 vcc_lo, v0, v112884; GFX1032-DPP-NEXT: v_mov_b32_e32 v1, v012885; GFX1032-DPP-NEXT: s_or_b32 s2, vcc_lo, s212886; GFX1032-DPP-NEXT: s_andn2_b32 exec_lo, exec_lo, s212887; GFX1032-DPP-NEXT: s_cbranch_execnz .LBB19_212888; GFX1032-DPP-NEXT: .LBB19_3:12889; GFX1032-DPP-NEXT: s_endpgm12890;12891; GFX1164-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12892; GFX1164-DPP: ; %bb.0:12893; GFX1164-DPP-NEXT: s_mov_b64 s[0:1], exec12894; GFX1164-DPP-NEXT: s_mov_b64 s[2:3], exec12895; GFX1164-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012896; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12897; GFX1164-DPP-NEXT: v_mbcnt_hi_u32_b32 v0, s1, v012898; GFX1164-DPP-NEXT: v_cmpx_eq_u32_e32 0, v012899; GFX1164-DPP-NEXT: s_cbranch_execz .LBB19_212900; GFX1164-DPP-NEXT: ; %bb.1:12901; GFX1164-DPP-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412902; GFX1164-DPP-NEXT: s_bcnt1_i32_b64 s0, s[0:1]12903; GFX1164-DPP-NEXT: v_mov_b32_e32 v1, 012904; GFX1164-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s012905; GFX1164-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12906; GFX1164-DPP-NEXT: v_mul_f32_e32 v0, 4.0, v012907; GFX1164-DPP-NEXT: s_waitcnt lgkmcnt(0)12908; GFX1164-DPP-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12909; GFX1164-DPP-NEXT: .LBB19_2:12910; GFX1164-DPP-NEXT: s_endpgm12911;12912; GFX1132-DPP-LABEL: global_atomic_fadd_uni_address_uni_value_system_scope__amdgpu_no_fine_grained_memory__amdgpu_no_remote_memory:12913; GFX1132-DPP: ; %bb.0:12914; GFX1132-DPP-NEXT: s_mov_b32 s0, exec_lo12915; GFX1132-DPP-NEXT: s_mov_b32 s1, exec_lo12916; GFX1132-DPP-NEXT: v_mbcnt_lo_u32_b32 v0, s0, 012917; GFX1132-DPP-NEXT: s_delay_alu instid0(VALU_DEP_1)12918; GFX1132-DPP-NEXT: v_cmpx_eq_u32_e32 0, v012919; GFX1132-DPP-NEXT: s_cbranch_execz .LBB19_212920; GFX1132-DPP-NEXT: ; %bb.1:12921; GFX1132-DPP-NEXT: s_load_b64 s[2:3], s[4:5], 0x2412922; GFX1132-DPP-NEXT: s_bcnt1_i32_b32 s0, s012923; GFX1132-DPP-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)12924; GFX1132-DPP-NEXT: v_cvt_f32_ubyte0_e32 v0, s012925; GFX1132-DPP-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mul_f32 v0, 4.0, v012926; GFX1132-DPP-NEXT: s_waitcnt lgkmcnt(0)12927; GFX1132-DPP-NEXT: global_atomic_add_f32 v1, v0, s[2:3]12928; GFX1132-DPP-NEXT: .LBB19_2:12929; GFX1132-DPP-NEXT: s_endpgm12930 %result = atomicrmw fadd ptr addrspace(1) %ptr, float 4.0 monotonic, align 4, !amdgpu.no.fine.grained.memory !1, !amdgpu.no.remote.memory !112931 ret void12932}12933 12934attributes #0 = { "denormal-fp-math-f32"="preserve-sign,preserve-sign" }12935attributes #1 = { strictfp "denormal-fp-math-f32"="preserve-sign,preserve-sign" }12936attributes #2 = { strictfp }12937 12938!1 = !{}12939