blob: 23aa3a349f98f43407b895541e7d7e735bdf396f [file] [log] [blame]
Eric Christopher50880d02010-09-18 18:52:28 +00001//====-- PTXSubtarget.h - Define Subtarget for the PTX ---------*- C++ -*--===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file declares the PTX specific subclass of TargetSubtarget.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef PTX_SUBTARGET_H
15#define PTX_SUBTARGET_H
16
17#include "llvm/Target/TargetSubtarget.h"
18
19namespace llvm {
20 class PTXSubtarget : public TargetSubtarget {
21 private:
Che-Liang Chioufd8978b2011-03-02 03:20:28 +000022 enum PTXShaderModelEnum {
23 PTX_SM_1_0,
24 PTX_SM_1_3,
25 PTX_SM_2_0
26 };
27
28 enum PTXVersionEnum {
29 PTX_VERSION_1_4,
30 PTX_VERSION_2_0,
31 PTX_VERSION_2_1
32 };
33
34 /// Shader Model supported on the target GPU.
35 PTXShaderModelEnum PTXShaderModel;
36
37 /// PTX Language Version.
38 PTXVersionEnum PTXVersion;
39
40 // The native .f64 type is supported on the hardware.
41 bool SupportsDouble;
Eric Christopher50880d02010-09-18 18:52:28 +000042
Che-Liang Chiouf48817c2011-03-02 07:36:48 +000043 // Use .u64 instead of .u32 for addresses.
44 bool Use64BitAddresses;
45
Eric Christopher50880d02010-09-18 18:52:28 +000046 public:
47 PTXSubtarget(const std::string &TT, const std::string &FS);
48
Che-Liang Chioufd8978b2011-03-02 03:20:28 +000049 std::string getTargetString() const;
50
51 std::string getPTXVersionString() const;
52
53 bool supportsDouble() const { return SupportsDouble; }
54
Che-Liang Chiouf48817c2011-03-02 07:36:48 +000055 bool use64BitAddresses() const { return Use64BitAddresses; }
56
Eric Christopher50880d02010-09-18 18:52:28 +000057 std::string ParseSubtargetFeatures(const std::string &FS,
58 const std::string &CPU);
59 }; // class PTXSubtarget
60} // namespace llvm
61
62#endif // PTX_SUBTARGET_H