aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/NVPTX/NVPTXSubtarget.h
diff options
context:
space:
mode:
authorJustin Holewinski <jholewinski@nvidia.com>2012-11-12 03:16:43 +0000
committerJustin Holewinski <jholewinski@nvidia.com>2012-11-12 03:16:43 +0000
commit08e9cb46feb0c8e08e3d309a0f9fd75a04ca54fb (patch)
treeb3b2089378f6717d7ed0925e44e19252eb772124 /lib/Target/NVPTX/NVPTXSubtarget.h
parentb798edd79147a607ad21aa322ac71f3bb23ff516 (diff)
downloadexternal_llvm-08e9cb46feb0c8e08e3d309a0f9fd75a04ca54fb.zip
external_llvm-08e9cb46feb0c8e08e3d309a0f9fd75a04ca54fb.tar.gz
external_llvm-08e9cb46feb0c8e08e3d309a0f9fd75a04ca54fb.tar.bz2
[NVPTX] Add more precise PTX/SM target attributes
Each SM and PTX version is modeled as a subtarget feature/CPU. Additionally, PTX 3.1 is added as the default PTX version to be out-of-the-box compatible with CUDA 5.0. Available CPUs for this target: sm_10 - Select the sm_10 processor. sm_11 - Select the sm_11 processor. sm_12 - Select the sm_12 processor. sm_13 - Select the sm_13 processor. sm_20 - Select the sm_20 processor. sm_21 - Select the sm_21 processor. sm_30 - Select the sm_30 processor. sm_35 - Select the sm_35 processor. Available features for this target: ptx30 - Use PTX version 3.0. ptx31 - Use PTX version 3.1. sm_10 - Target SM 1.0. sm_11 - Target SM 1.1. sm_12 - Target SM 1.2. sm_13 - Target SM 1.3. sm_20 - Target SM 2.0. sm_21 - Target SM 2.1. sm_30 - Target SM 3.0. sm_35 - Target SM 3.5. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167699 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/NVPTX/NVPTXSubtarget.h')
-rw-r--r--lib/Target/NVPTX/NVPTXSubtarget.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Target/NVPTX/NVPTXSubtarget.h b/lib/Target/NVPTX/NVPTXSubtarget.h
index 8f2a629..c3a683a 100644
--- a/lib/Target/NVPTX/NVPTXSubtarget.h
+++ b/lib/Target/NVPTX/NVPTXSubtarget.h
@@ -25,13 +25,18 @@
namespace llvm {
class NVPTXSubtarget : public NVPTXGenSubtargetInfo {
-
- unsigned int SmVersion;
+
std::string TargetName;
NVPTX::DrvInterface drvInterface;
bool dummy; // For the 'dummy' feature, see NVPTX.td
bool Is64Bit;
+ // PTX version x.y is represented as 10*x+y, e.g. 3.1 == 31
+ unsigned PTXVersion;
+
+ // SM version x.y is represented as 10*x+y, e.g. 3.1 == 31
+ unsigned int SmVersion;
+
public:
/// This constructor initializes the data members to match that
/// of the specified module.
@@ -69,6 +74,8 @@ public:
NVPTX::DrvInterface getDrvInterface() const { return drvInterface; }
std::string getTargetName() const { return TargetName; }
+ unsigned getPTXVersion() const { return PTXVersion; }
+
void ParseSubtargetFeatures(StringRef CPU, StringRef FS);
std::string getDataLayout() const {