summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorNikolay Haustov <Nikolay.Haustov@amd.com>2016-06-30 09:06:33 +0000
committerNikolay Haustov <Nikolay.Haustov@amd.com>2016-06-30 09:06:33 +0000
commit8c6538b86da704af25a2f47cc8350168f546f555 (patch)
treea92ab0b682f7261b558f8e174230581b733b1499 /clang/lib/Basic
parent1df56894f818dd27ad80e37db570516c0f851a87 (diff)
downloadbcm5719-llvm-8c6538b86da704af25a2f47cc8350168f546f555.tar.gz
bcm5719-llvm-8c6538b86da704af25a2f47cc8350168f546f555.zip
AMDGPU: Set amdgpu_kernel calling convention for OpenCL kernels.
Summary: Summary: Change Clang calling convention SpirKernel to OpenCLKernel. Set calling convention OpenCLKernel for amdgcn as well. Add virtual method .getOpenCLKernelCallingConv() to TargetCodeGenInfo and use it to set target calling convention for AMDGPU and SPIR. Update tests. Reviewers: rsmith, tstellarAMD, Anastasia, yaxunl Subscribers: kzhuravl, cfe-commits Differential Revision: http://reviews.llvm.org/D21367 llvm-svn: 274220
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r--clang/lib/Basic/Targets.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 87203f5598c..252f2be7aff 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -2137,6 +2137,16 @@ public:
Opts.cl_khr_3d_image_writes = 1;
}
}
+
+ CallingConvCheckResult checkCallingConvention(CallingConv CC) const override {
+ switch (CC) {
+ default:
+ return CCCR_Warning;
+ case CC_C:
+ case CC_OpenCLKernel:
+ return CCCR_OK;
+ }
+ }
};
const Builtin::Info AMDGPUTargetInfo::BuiltinInfo[] = {
@@ -7927,8 +7937,8 @@ public:
}
CallingConvCheckResult checkCallingConvention(CallingConv CC) const override {
- return (CC == CC_SpirFunction || CC == CC_SpirKernel) ? CCCR_OK
- : CCCR_Warning;
+ return (CC == CC_SpirFunction || CC == CC_OpenCLKernel) ? CCCR_OK
+ : CCCR_Warning;
}
CallingConv getDefaultCallingConv(CallingConvMethodType MT) const override {
OpenPOWER on IntegriCloud