Index: llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h =================================================================== --- llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUSubtarget.h @@ -333,14 +333,6 @@ return HasMadMixInsts; } - bool hasSBufferLoadStoreAtomicDwordxN() const { - // Only use the "x1" variants on GFX9 or don't use the buffer variants. - // For x2 and higher variants, if the accessed region spans 2 VM pages and - // the second page is unmapped, the hw hangs. - // TODO: There is one future GFX9 chip that doesn't have this bug. - return getGeneration() != GFX9; - } - bool hasCARRY() const { return (getGeneration() >= EVERGREEN); } Index: llvm/trunk/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp =================================================================== --- llvm/trunk/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp +++ llvm/trunk/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp @@ -853,9 +853,8 @@ continue; } - if (STM->hasSBufferLoadStoreAtomicDwordxN() && - (Opc == AMDGPU::S_BUFFER_LOAD_DWORD_IMM || - Opc == AMDGPU::S_BUFFER_LOAD_DWORDX2_IMM)) { + if (Opc == AMDGPU::S_BUFFER_LOAD_DWORD_IMM || + Opc == AMDGPU::S_BUFFER_LOAD_DWORDX2_IMM) { // EltSize is in units of the offset encoding. CI.InstClass = S_BUFFER_LOAD_IMM; CI.EltSize = AMDGPU::getSMRDEncodedOffset(*STM, 4); Index: llvm/trunk/test/CodeGen/AMDGPU/smrd.ll =================================================================== --- llvm/trunk/test/CodeGen/AMDGPU/smrd.ll +++ llvm/trunk/test/CodeGen/AMDGPU/smrd.ll @@ -217,14 +217,8 @@ ; GCN-NEXT: %bb. ; SICI-NEXT: s_buffer_load_dwordx4 s[{{[0-9]}}:{{[0-9]}}], s[0:3], 0x1 ; SICI-NEXT: s_buffer_load_dwordx2 s[{{[0-9]}}:{{[0-9]}}], s[0:3], 0x7 -; VI-NEXT: s_buffer_load_dwordx4 s[{{[0-9]}}:{{[0-9]}}], s[0:3], 0x4 -; VI-NEXT: s_buffer_load_dwordx2 s[{{[0-9]}}:{{[0-9]}}], s[0:3], 0x1c -; GFX9-NEXT: s_buffer_load_dword s{{[0-9]}} -; GFX9-NEXT: s_buffer_load_dword s{{[0-9]}} -; GFX9-NEXT: s_buffer_load_dword s{{[0-9]}} -; GFX9-NEXT: s_buffer_load_dword s{{[0-9]}} -; GFX9-NEXT: s_buffer_load_dword s{{[0-9]}} -; GFX9-NEXT: s_buffer_load_dword s{{[0-9]}} +; VIGFX9-NEXT: s_buffer_load_dwordx4 s[{{[0-9]}}:{{[0-9]}}], s[0:3], 0x4 +; VIGFX9-NEXT: s_buffer_load_dwordx2 s[{{[0-9]}}:{{[0-9]}}], s[0:3], 0x1c define amdgpu_ps void @smrd_imm_merged(<4 x i32> inreg %desc) #0 { main_body: %r1 = call float @llvm.SI.load.const.v4i32(<4 x i32> %desc, i32 4)