[PATCH] D22790: AMDGPU: Add __builtin_amdgcn_workgroup_count_* builtins
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 25 17:15:44 PDT 2016
tstellarAMD created this revision.
tstellarAMD added a reviewer: arsenm.
tstellarAMD added a subscriber: llvm-commits.
Herald added a subscriber: kzhuravl.
https://reviews.llvm.org/D22790
Files:
include/clang/Basic/BuiltinsAMDGPU.def
lib/CodeGen/CGBuiltin.cpp
test/CodeGenOpenCL/builtins-amdgcn.cl
Index: test/CodeGenOpenCL/builtins-amdgcn.cl
===================================================================
--- test/CodeGenOpenCL/builtins-amdgcn.cl
+++ test/CodeGenOpenCL/builtins-amdgcn.cl
@@ -296,6 +296,19 @@
}
}
+// CHECK-LABEL: @get_num_groups(
+// CHECK: call i32 @llvm.amdgcn.workgroup.count.x()
+// CHECK: call i32 @llvm.amdgcn.workgroup.count.y()
+// CHECK: call i32 @llvm.amdgcn.workgroup.count.z()
+void get_num_groups(int dim, global int *out) {
+ switch (dim) {
+ case 0: *out = __builtin_amdgcn_workgroup_count_x(); break;
+ case 1: *out = __builtin_amdgcn_workgroup_count_y(); break;
+ case 2: *out = __builtin_amdgcn_workgroup_count_z(); break;
+ default: *out = 0; break;
+ }
+}
+
// CHECK-LABEL: @test_get_local_id(
// CHECK: tail call i32 @llvm.amdgcn.workitem.id.x(), !range [[WI_RANGE:![0-9]*]]
// CHECK: tail call i32 @llvm.amdgcn.workitem.id.y(), !range [[WI_RANGE]]
Index: lib/CodeGen/CGBuiltin.cpp
===================================================================
--- lib/CodeGen/CGBuiltin.cpp
+++ lib/CodeGen/CGBuiltin.cpp
@@ -7672,6 +7672,14 @@
return CI;
}
+ // amdgcn workgroup count
+ case AMDGPU::BI__builtin_amdgcn_workgroup_count_x:
+ return emitBinaryBuiltin(*this, E, Intrinsic::amdgcn_workgroup_count_x);
+ case AMDGPU::BI__builtin_amdgcn_workgroup_count_y:
+ return emitBinaryBuiltin(*this, E, Intrinsic::amdgcn_workgroup_count_y);
+ case AMDGPU::BI__builtin_amdgcn_workgroup_count_z:
+ return emitBinaryBuiltin(*this, E, Intrinsic::amdgcn_workgroup_count_z);
+
// amdgcn workitem
case AMDGPU::BI__builtin_amdgcn_workitem_id_x:
return emitRangedBuiltin(*this, Intrinsic::amdgcn_workitem_id_x, 0, 1024);
Index: include/clang/Basic/BuiltinsAMDGPU.def
===================================================================
--- include/clang/Basic/BuiltinsAMDGPU.def
+++ include/clang/Basic/BuiltinsAMDGPU.def
@@ -32,6 +32,10 @@
BUILTIN(__builtin_amdgcn_workitem_id_y, "Ui", "nc")
BUILTIN(__builtin_amdgcn_workitem_id_z, "Ui", "nc")
+BUILTIN(__builtin_amdgcn_workgroup_count_x, "Ui", "nc")
+BUILTIN(__builtin_amdgcn_workgroup_count_y, "Ui", "nc")
+BUILTIN(__builtin_amdgcn_workgroup_count_z, "Ui", "nc")
+
//===----------------------------------------------------------------------===//
// Instruction builtins.
//===----------------------------------------------------------------------===//
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22790.65448.patch
Type: text/x-patch
Size: 2386 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160726/fd714b84/attachment.bin>
More information about the llvm-commits
mailing list