mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
AMDGPU/SI: Remove assert from AMDGPUOpenCLImageTypeLowering pass
Summary: Instead of asserting when the kernel metadata is different than we expect, we should just skip lowering that function. This fixes assertion failures with OpenCL argument metadata from older LLVM releases. Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D13356 llvm-svn: 249073
This commit is contained in:
parent
89bcb974e2
commit
597d1f5f9b
@ -94,8 +94,12 @@ GetFunctionFromMDNode(MDNode *Node) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
if (!ArgNode->getOperand(0))
|
if (!ArgNode->getOperand(0))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
assert(cast<MDString>(ArgNode->getOperand(0))->getString() ==
|
|
||||||
KernelArgMDNodeNames[i] && "Wrong kernel arg metadata name");
|
// FIXME: It should be possible to do image lowering when some metadata
|
||||||
|
// args missing or not in the expected order.
|
||||||
|
MDString *StringNode = dyn_cast<MDString>(ArgNode->getOperand(0));
|
||||||
|
if (!StringNode || StringNode->getString() != KernelArgMDNodeNames[i])
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return F;
|
return F;
|
||||||
|
24
test/CodeGen/AMDGPU/opencl-image-metadata.ll
Normal file
24
test/CodeGen/AMDGPU/opencl-image-metadata.ll
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG --check-prefix=FUNC %s
|
||||||
|
; RUN: llc < %s -march=amdgcn -mcpu=SI -verify-machineinstrs | FileCheck --check-prefix=SI --check-prefix=FUNC %s
|
||||||
|
|
||||||
|
; Make sure the OpenCL Image lowering pass doesn't crash when argument metadata
|
||||||
|
; is not in expected order.
|
||||||
|
|
||||||
|
; EG: CF_END
|
||||||
|
; SI: s_endpgm
|
||||||
|
define void @kernel(i32 addrspace(1)* %out) {
|
||||||
|
entry:
|
||||||
|
store i32 0, i32 addrspace(1)* %out
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
attributes #3 = { nounwind }
|
||||||
|
|
||||||
|
!opencl.kernels = !{!0}
|
||||||
|
|
||||||
|
!0 = !{void (i32 addrspace(1)*)* @kernel, !1, !2, !3, !4, !5}
|
||||||
|
!1 = !{!"kernel_arg_addr_space", i32 0}
|
||||||
|
!2 = !{!"kernel_arg_access_qual", !"none"}
|
||||||
|
!3 = !{!"kernel_arg_type", !"int*"}
|
||||||
|
!4 = !{!"kernel_arg_type_qual", !""}
|
||||||
|
!5 = !{!"kernel_arg_name", !""}
|
Loading…
Reference in New Issue
Block a user