| //===- PTXSubtarget.cpp - PTX Subtarget Information ---------------*- C++ -*-=// | 
 | // | 
 | //                     The LLVM Compiler Infrastructure | 
 | // | 
 | // This file is distributed under the University of Illinois Open Source | 
 | // License. See LICENSE.TXT for details. | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 | // | 
 | // This file implements the PTX specific subclass of TargetSubtargetInfo. | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | #include "PTXSubtarget.h" | 
 | #include "PTX.h" | 
 | #include "llvm/Support/ErrorHandling.h" | 
 | #include "llvm/Support/TargetRegistry.h" | 
 |  | 
 | #define GET_SUBTARGETINFO_TARGET_DESC | 
 | #define GET_SUBTARGETINFO_CTOR | 
 | #include "PTXGenSubtargetInfo.inc" | 
 |  | 
 | using namespace llvm; | 
 |  | 
 | PTXSubtarget::PTXSubtarget(const std::string &TT, const std::string &CPU, | 
 |                            const std::string &FS, bool is64Bit) | 
 |   : PTXGenSubtargetInfo(TT, CPU, FS), | 
 |     PTXTarget(PTX_COMPUTE_1_0), | 
 |     PTXVersion(PTX_VERSION_2_0), | 
 |     SupportsDouble(false), | 
 |     SupportsFMA(true), | 
 |     Is64Bit(is64Bit) { | 
 |   std::string TARGET = CPU; | 
 |   if (TARGET.empty()) | 
 |     TARGET = "generic"; | 
 |   ParseSubtargetFeatures(TARGET, FS); | 
 | } | 
 |  | 
 | std::string PTXSubtarget::getTargetString() const { | 
 |   switch(PTXTarget) { | 
 |     default: llvm_unreachable("Unknown PTX target"); | 
 |     case PTX_SM_1_0: return "sm_10"; | 
 |     case PTX_SM_1_1: return "sm_11"; | 
 |     case PTX_SM_1_2: return "sm_12"; | 
 |     case PTX_SM_1_3: return "sm_13"; | 
 |     case PTX_SM_2_0: return "sm_20"; | 
 |     case PTX_SM_2_1: return "sm_21"; | 
 |     case PTX_SM_2_2: return "sm_22"; | 
 |     case PTX_SM_2_3: return "sm_23"; | 
 |     case PTX_COMPUTE_1_0: return "compute_10"; | 
 |     case PTX_COMPUTE_1_1: return "compute_11"; | 
 |     case PTX_COMPUTE_1_2: return "compute_12"; | 
 |     case PTX_COMPUTE_1_3: return "compute_13"; | 
 |     case PTX_COMPUTE_2_0: return "compute_20"; | 
 |   } | 
 | } | 
 |  | 
 | std::string PTXSubtarget::getPTXVersionString() const { | 
 |   switch(PTXVersion) { | 
 |     default: llvm_unreachable("Unknown PTX version"); | 
 |     case PTX_VERSION_2_0: return "2.0"; | 
 |     case PTX_VERSION_2_1: return "2.1"; | 
 |     case PTX_VERSION_2_2: return "2.2"; | 
 |     case PTX_VERSION_2_3: return "2.3"; | 
 |   } | 
 | } |