forked from OSchip/llvm-project
AMDGPU: Fix converting unanalyzable global loads to SMRD
Not all memory dependence queries succeed, so this needs to be conservative if it fails. llvm-svn: 307861
This commit is contained in:
parent
3f164318e7
commit
ce34ac588e
|
@ -108,10 +108,11 @@ bool AMDGPUAnnotateUniformValues::isClobberedInFunction(LoadInst * Load) {
|
|||
DFS(Start, Checklist);
|
||||
for (auto &BB : Checklist) {
|
||||
BasicBlock::iterator StartIt = (!L && (BB == Load->getParent())) ?
|
||||
BasicBlock::iterator(Load) : BB->end();
|
||||
if (MDR->getPointerDependencyFrom(MemoryLocation(Ptr),
|
||||
true, StartIt, BB, Load).isClobber())
|
||||
return true;
|
||||
BasicBlock::iterator(Load) : BB->end();
|
||||
auto Q = MDR->getPointerDependencyFrom(MemoryLocation(Ptr), true,
|
||||
StartIt, BB, Load);
|
||||
if (Q.isClobber() || Q.isUnknown())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji -memdep-block-scan-limit=1 -amdgpu-scalarize-global-loads -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefix=GCN %s
|
||||
|
||||
; GCN-LABEL: {{^}}unknown_memdep_analysis:
|
||||
; GCN: flat_load_dword
|
||||
; GCN: flat_load_dword
|
||||
; GCN: flat_store_dword
|
||||
define amdgpu_kernel void @unknown_memdep_analysis(float addrspace(1)* nocapture readonly %arg) #0 {
|
||||
bb:
|
||||
%tmp53 = load float, float addrspace(1)* undef, align 4
|
||||
%tmp54 = getelementptr inbounds float, float addrspace(1)* %arg, i32 31
|
||||
%tmp55 = load float, float addrspace(1)* %tmp54, align 4
|
||||
%tmp56 = tail call float @llvm.fmuladd.f32(float undef, float %tmp53, float %tmp55)
|
||||
store float %tmp56, float addrspace(1)* undef, align 4
|
||||
ret void
|
||||
}
|
||||
|
||||
declare float @llvm.fmuladd.f32(float, float, float) #1
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
attributes #1 = { nounwind readnone speculatable }
|
Loading…
Reference in New Issue