diff options
author | Justin Holewinski <justin.holewinski@gmail.com> | 2011-04-20 15:37:17 +0000 |
---|---|---|
committer | Justin Holewinski <justin.holewinski@gmail.com> | 2011-04-20 15:37:17 +0000 |
commit | 7d8895e7675b659c6c08a58bdf0dbea8cda17a3e (patch) | |
tree | 22464f0510d6c3ba5b4f10a4ac246ca2e9f8c43c /llvm/include | |
parent | ed16477cb9f907bd3525ae99d787c5d448f8dc0b (diff) | |
download | bcm5719-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.h | 3 | ||||
-rw-r--r-- | llvm/include/llvm/IntrinsicsPTX.td | 90 |
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">; |