summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorJustin Holewinski <justin.holewinski@gmail.com>2011-04-20 15:37:17 +0000
committerJustin Holewinski <justin.holewinski@gmail.com>2011-04-20 15:37:17 +0000
commit7d8895e7675b659c6c08a58bdf0dbea8cda17a3e (patch)
tree22464f0510d6c3ba5b4f10a4ac246ca2e9f8c43c /llvm/include
parented16477cb9f907bd3525ae99d787c5d448f8dc0b (diff)
downloadbcm5719-llvm-7d8895e7675b659c6c08a58bdf0dbea8cda17a3e.tar.gz
bcm5719-llvm-7d8895e7675b659c6c08a58bdf0dbea8cda17a3e.zip
PTX: Add intrinsics to list of built-in intrinsics, which allows them to be
used by Clang. To help Clang integration, the PTX target has been split into two targets: ptx32 and ptx64, depending on the desired pointer size. - Add GCCBuiltin class to all intrinsics - Split PTX target into ptx32 and ptx64 llvm-svn: 129851
Diffstat (limited to 'llvm/include')
-rw-r--r--llvm/include/llvm/ADT/Triple.h3
-rw-r--r--llvm/include/llvm/IntrinsicsPTX.td90
2 files changed, 61 insertions, 32 deletions
diff --git a/llvm/include/llvm/ADT/Triple.h b/llvm/include/llvm/ADT/Triple.h
index 4cfad31df53..2659bce6175 100644
--- a/llvm/include/llvm/ADT/Triple.h
+++ b/llvm/include/llvm/ADT/Triple.h
@@ -64,7 +64,8 @@ public:
x86_64, // X86-64: amd64, x86_64
xcore, // XCore: xcore
mblaze, // MBlaze: mblaze
- ptx, // PTX: ptx
+ ptx32, // PTX: ptx (32-bit)
+ ptx64, // PTX: ptx (64-bit)
InvalidArch
};
diff --git a/llvm/include/llvm/IntrinsicsPTX.td b/llvm/include/llvm/IntrinsicsPTX.td
index 01241fe4d48..28379c918de 100644
--- a/llvm/include/llvm/IntrinsicsPTX.td
+++ b/llvm/include/llvm/IntrinsicsPTX.td
@@ -12,53 +12,81 @@
//===----------------------------------------------------------------------===//
let TargetPrefix = "ptx" in {
- multiclass PTXReadSpecialRegisterIntrinsic_v4i32 {
+ multiclass PTXReadSpecialRegisterIntrinsic_v4i32<string prefix> {
// FIXME: Do we need the 128-bit integer type version?
// def _r64 : Intrinsic<[llvm_i128_ty], [], [IntrNoMem]>;
// FIXME: Enable this once v4i32 support is enabled in back-end.
// def _v4i16 : Intrinsic<[llvm_v4i32_ty], [], [IntrNoMem]>;
- def _x : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>;
- def _y : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>;
- def _z : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>;
- def _w : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>;
+ def _x : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
+ GCCBuiltin<!strconcat(prefix, "_x")>;
+ def _y : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
+ GCCBuiltin<!strconcat(prefix, "_y")>;
+ def _z : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
+ GCCBuiltin<!strconcat(prefix, "_z")>;
+ def _w : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
+ GCCBuiltin<!strconcat(prefix, "_w")>;
}
- class PTXReadSpecialRegisterIntrinsic_r32
- : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>;
+ class PTXReadSpecialRegisterIntrinsic_r32<string name>
+ : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
+ GCCBuiltin<name>;
- class PTXReadSpecialRegisterIntrinsic_r64
- : Intrinsic<[llvm_i64_ty], [], [IntrNoMem]>;
+ class PTXReadSpecialRegisterIntrinsic_r64<string name>
+ : Intrinsic<[llvm_i64_ty], [], [IntrNoMem]>,
+ GCCBuiltin<name>;
}
-defm int_ptx_read_tid : PTXReadSpecialRegisterIntrinsic_v4i32;
-defm int_ptx_read_ntid : PTXReadSpecialRegisterIntrinsic_v4i32;
+defm int_ptx_read_tid : PTXReadSpecialRegisterIntrinsic_v4i32
+ <"__builtin_ptx_read_tid">;
+defm int_ptx_read_ntid : PTXReadSpecialRegisterIntrinsic_v4i32
+ <"__builtin_ptx_read_ntid">;
-def int_ptx_read_laneid : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_warpid : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_nwarpid : PTXReadSpecialRegisterIntrinsic_r32;
+def int_ptx_read_laneid : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_laneid">;
+def int_ptx_read_warpid : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_warpid">;
+def int_ptx_read_nwarpid : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_nwarpid">;
-defm int_ptx_read_ctaid : PTXReadSpecialRegisterIntrinsic_v4i32;
-defm int_ptx_read_nctaid : PTXReadSpecialRegisterIntrinsic_v4i32;
+defm int_ptx_read_ctaid : PTXReadSpecialRegisterIntrinsic_v4i32
+ <"__builtin_ptx_read_ctaid">;
+defm int_ptx_read_nctaid : PTXReadSpecialRegisterIntrinsic_v4i32
+ <"__builtin_ptx_read_nctaid">;
-def int_ptx_read_smid : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_nsmid : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_gridid : PTXReadSpecialRegisterIntrinsic_r32;
+def int_ptx_read_smid : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_smid">;
+def int_ptx_read_nsmid : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_nsmid">;
+def int_ptx_read_gridid : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_gridid">;
-def int_ptx_read_lanemask_eq : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_lanemask_le : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_lanemask_lt : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_lanemask_ge : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_lanemask_gt : PTXReadSpecialRegisterIntrinsic_r32;
+def int_ptx_read_lanemask_eq : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_lanemask_eq">;
+def int_ptx_read_lanemask_le : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_lanemask_le">;
+def int_ptx_read_lanemask_lt : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_lanemask_lt">;
+def int_ptx_read_lanemask_ge : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_lanemask_ge">;
+def int_ptx_read_lanemask_gt : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_lanemask_gt">;
-def int_ptx_read_clock : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_clock64 : PTXReadSpecialRegisterIntrinsic_r64;
+def int_ptx_read_clock : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_clock">;
+def int_ptx_read_clock64 : PTXReadSpecialRegisterIntrinsic_r64
+ <"__builtin_ptx_read_clock64">;
-def int_ptx_read_pm0 : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_pm1 : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_pm2 : PTXReadSpecialRegisterIntrinsic_r32;
-def int_ptx_read_pm3 : PTXReadSpecialRegisterIntrinsic_r32;
+def int_ptx_read_pm0 : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_pm0">;
+def int_ptx_read_pm1 : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_pm1">;
+def int_ptx_read_pm2 : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_pm2">;
+def int_ptx_read_pm3 : PTXReadSpecialRegisterIntrinsic_r32
+ <"__builtin_ptx_read_pm3">;
let TargetPrefix = "ptx" in
- def int_ptx_bar_sync : Intrinsic<[], [llvm_i32_ty], []>;
+ def int_ptx_bar_sync : Intrinsic<[], [llvm_i32_ty], []>,
+ GCCBuiltin<"__builtin_ptx_bar_sync">;
OpenPOWER on IntegriCloud