LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/AMDGPU - R600GenSubtargetInfo.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 30 38 78.9 %
Date: 2018-10-20 13:21:21 Functions: 3 7 42.9 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Subtarget Enumeration Source Fragment                                      *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : 
      10             : #ifdef GET_SUBTARGETINFO_ENUM
      11             : #undef GET_SUBTARGETINFO_ENUM
      12             : 
      13             : namespace llvm {
      14             : namespace R600 {
      15             : enum {
      16             :   FeatureCFALUBug = 0,
      17             :   FeatureCaymanISA = 1,
      18             :   FeatureDX10Clamp = 2,
      19             :   FeatureEvergreen = 3,
      20             :   FeatureFMA = 4,
      21             :   FeatureFP32Denormals = 5,
      22             :   FeatureFP64 = 6,
      23             :   FeatureFetchLimit8 = 7,
      24             :   FeatureFetchLimit16 = 8,
      25             :   FeatureLocalMemorySize0 = 9,
      26             :   FeatureLocalMemorySize32768 = 10,
      27             :   FeatureLocalMemorySize65536 = 11,
      28             :   FeatureNorthernIslands = 12,
      29             :   FeaturePromoteAlloca = 13,
      30             :   FeatureR600 = 14,
      31             :   FeatureR600ALUInst = 15,
      32             :   FeatureR700 = 16,
      33             :   FeatureVertexCache = 17,
      34             :   FeatureWavefrontSize16 = 18,
      35             :   FeatureWavefrontSize32 = 19,
      36             :   FeatureWavefrontSize64 = 20,
      37             : };
      38             : } // end namespace R600
      39             : } // end namespace llvm
      40             : 
      41             : #endif // GET_SUBTARGETINFO_ENUM
      42             : 
      43             : 
      44             : #ifdef GET_SUBTARGETINFO_MC_DESC
      45             : #undef GET_SUBTARGETINFO_MC_DESC
      46             : 
      47             : namespace llvm {
      48             : // Sorted (by key) array of values for CPU features.
      49             : extern const llvm::SubtargetFeatureKV R600FeatureKV[] = {
      50             :   { "EVERGREEN", "EVERGREEN GPU generation", { R600::FeatureEvergreen }, { R600::FeatureFetchLimit16, R600::FeatureLocalMemorySize32768 } },
      51             :   { "HasVertexCache", "Specify use of dedicated vertex cache", { R600::FeatureVertexCache }, { } },
      52             :   { "NORTHERN_ISLANDS", "NORTHERN_ISLANDS GPU generation", { R600::FeatureNorthernIslands }, { R600::FeatureFetchLimit16, R600::FeatureWavefrontSize64, R600::FeatureLocalMemorySize32768 } },
      53             :   { "R600", "R600 GPU generation", { R600::FeatureR600 }, { R600::FeatureR600ALUInst, R600::FeatureFetchLimit8, R600::FeatureLocalMemorySize0 } },
      54             :   { "R600ALUInst", "Older version of ALU instructions encoding", { R600::FeatureR600ALUInst }, { } },
      55             :   { "R700", "R700 GPU generation", { R600::FeatureR700 }, { R600::FeatureFetchLimit16, R600::FeatureLocalMemorySize0 } },
      56             :   { "caymanISA", "Use Cayman ISA", { R600::FeatureCaymanISA }, { } },
      57             :   { "cfalubug", "GPU has CF_ALU bug", { R600::FeatureCFALUBug }, { } },
      58             :   { "dx10-clamp", "clamp modifier clamps NaNs to 0.0", { R600::FeatureDX10Clamp }, { } },
      59             :   { "fetch16", "Limit the maximum number of fetches in a clause to 16", { R600::FeatureFetchLimit16 }, { } },
      60             :   { "fetch8", "Limit the maximum number of fetches in a clause to 8", { R600::FeatureFetchLimit8 }, { } },
      61             :   { "fmaf", "Enable single precision FMA (not as fast as mul+add, but fused)", { R600::FeatureFMA }, { } },
      62             :   { "fp32-denormals", "Enable single precision denormal handling", { R600::FeatureFP32Denormals }, { } },
      63             :   { "fp64", "Enable double precision operations", { R600::FeatureFP64 }, { } },
      64             :   { "localmemorysize0", "The size of local memory in bytes", { R600::FeatureLocalMemorySize0 }, { } },
      65             :   { "localmemorysize32768", "The size of local memory in bytes", { R600::FeatureLocalMemorySize32768 }, { } },
      66             :   { "localmemorysize65536", "The size of local memory in bytes", { R600::FeatureLocalMemorySize65536 }, { } },
      67             :   { "promote-alloca", "Enable promote alloca pass", { R600::FeaturePromoteAlloca }, { } },
      68             :   { "wavefrontsize16", "The number of threads per wavefront", { R600::FeatureWavefrontSize16 }, { } },
      69             :   { "wavefrontsize32", "The number of threads per wavefront", { R600::FeatureWavefrontSize32 }, { } },
      70             :   { "wavefrontsize64", "The number of threads per wavefront", { R600::FeatureWavefrontSize64 }, { } },
      71             : };
      72             : 
      73             : // Sorted (by key) array of values for CPU subtype.
      74             : extern const llvm::SubtargetFeatureKV R600SubTypeKV[] = {
      75             :   { "barts", "Select the barts processor", { R600::FeatureNorthernIslands, R600::FeatureVertexCache, R600::FeatureCFALUBug }, { } },
      76             :   { "caicos", "Select the caicos processor", { R600::FeatureNorthernIslands, R600::FeatureCFALUBug }, { } },
      77             :   { "cayman", "Select the cayman processor", { R600::FeatureNorthernIslands, R600::FeatureCaymanISA, R600::FeatureFMA }, { } },
      78             :   { "cedar", "Select the cedar processor", { R600::FeatureEvergreen, R600::FeatureWavefrontSize32, R600::FeatureVertexCache, R600::FeatureCFALUBug }, { } },
      79             :   { "cypress", "Select the cypress processor", { R600::FeatureEvergreen, R600::FeatureWavefrontSize64, R600::FeatureVertexCache, R600::FeatureFMA }, { } },
      80             :   { "juniper", "Select the juniper processor", { R600::FeatureEvergreen, R600::FeatureWavefrontSize64, R600::FeatureVertexCache }, { } },
      81             :   { "r600", "Select the r600 processor", { R600::FeatureR600, R600::FeatureWavefrontSize64, R600::FeatureVertexCache }, { } },
      82             :   { "r630", "Select the r630 processor", { R600::FeatureR600, R600::FeatureWavefrontSize32, R600::FeatureVertexCache }, { } },
      83             :   { "redwood", "Select the redwood processor", { R600::FeatureEvergreen, R600::FeatureWavefrontSize64, R600::FeatureVertexCache, R600::FeatureCFALUBug }, { } },
      84             :   { "rs880", "Select the rs880 processor", { R600::FeatureR600, R600::FeatureWavefrontSize16 }, { } },
      85             :   { "rv670", "Select the rv670 processor", { R600::FeatureR600, R600::FeatureWavefrontSize64, R600::FeatureVertexCache }, { } },
      86             :   { "rv710", "Select the rv710 processor", { R600::FeatureR700, R600::FeatureWavefrontSize32, R600::FeatureVertexCache }, { } },
      87             :   { "rv730", "Select the rv730 processor", { R600::FeatureR700, R600::FeatureWavefrontSize32, R600::FeatureVertexCache }, { } },
      88             :   { "rv770", "Select the rv770 processor", { R600::FeatureR700, R600::FeatureWavefrontSize64, R600::FeatureVertexCache }, { } },
      89             :   { "sumo", "Select the sumo processor", { R600::FeatureEvergreen, R600::FeatureWavefrontSize64, R600::FeatureCFALUBug }, { } },
      90             :   { "turks", "Select the turks processor", { R600::FeatureNorthernIslands, R600::FeatureVertexCache, R600::FeatureCFALUBug }, { } },
      91             : };
      92             : 
      93             : #ifdef DBGFIELD
      94             : #error "<target>GenSubtargetInfo.inc requires a DBGFIELD macro"
      95             : #endif
      96             : #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
      97             : #define DBGFIELD(x) x,
      98             : #else
      99             : #define DBGFIELD(x)
     100             : #endif
     101             : 
     102             : // Functional units for "R600_VLIW5_Itin"
     103             : namespace R600_VLIW5_ItinFU {
     104             :   const unsigned ALU_X = 1 << 0;
     105             :   const unsigned ALU_Y = 1 << 1;
     106             :   const unsigned ALU_Z = 1 << 2;
     107             :   const unsigned ALU_W = 1 << 3;
     108             :   const unsigned TRANS = 1 << 4;
     109             :   const unsigned ALU_NULL = 1 << 5;
     110             : } // end namespace R600_VLIW5_ItinFU
     111             : 
     112             : // Functional units for "R600_VLIW4_Itin"
     113             : namespace R600_VLIW4_ItinFU {
     114             :   const unsigned ALU_X = 1 << 0;
     115             :   const unsigned ALU_Y = 1 << 1;
     116             :   const unsigned ALU_Z = 1 << 2;
     117             :   const unsigned ALU_W = 1 << 3;
     118             :   const unsigned ALU_NULL = 1 << 4;
     119             : } // end namespace R600_VLIW4_ItinFU
     120             : 
     121             : extern const llvm::InstrStage R600Stages[] = {
     122             :   { 0, 0, 0, llvm::InstrStage::Required }, // No itinerary
     123             :   { 1, R600_VLIW5_ItinFU::ALU_NULL, -1, (llvm::InstrStage::ReservationKinds)0 }, // 1
     124             :   { 1, R600_VLIW5_ItinFU::ALU_X | R600_VLIW5_ItinFU::ALU_Y | R600_VLIW5_ItinFU::ALU_Z | R600_VLIW5_ItinFU::ALU_W, -1, (llvm::InstrStage::ReservationKinds)0 }, // 2
     125             :   { 1, R600_VLIW5_ItinFU::ALU_X | R600_VLIW5_ItinFU::ALU_Y | R600_VLIW5_ItinFU::ALU_Z | R600_VLIW5_ItinFU::ALU_W | R600_VLIW5_ItinFU::TRANS, -1, (llvm::InstrStage::ReservationKinds)0 }, // 3
     126             :   { 1, R600_VLIW5_ItinFU::TRANS, -1, (llvm::InstrStage::ReservationKinds)0 }, // 4
     127             :   { 1, R600_VLIW5_ItinFU::ALU_X, -1, (llvm::InstrStage::ReservationKinds)0 }, // 5
     128             :   { 1, R600_VLIW4_ItinFU::ALU_NULL, -1, (llvm::InstrStage::ReservationKinds)0 }, // 6
     129             :   { 1, R600_VLIW4_ItinFU::ALU_X | R600_VLIW4_ItinFU::ALU_Y | R600_VLIW4_ItinFU::ALU_Z | R600_VLIW4_ItinFU::ALU_W, -1, (llvm::InstrStage::ReservationKinds)0 }, // 7
     130             :   { 0, 0, 0, llvm::InstrStage::Required } // End stages
     131             : };
     132             : extern const unsigned R600OperandCycles[] = {
     133             :   0, // No itinerary
     134             :   0 // End operand cycles
     135             : };
     136             : extern const unsigned R600ForwardingPaths[] = {
     137             :  0, // No itinerary
     138             :  0 // End bypass tables
     139             : };
     140             : 
     141             : static const llvm::InstrItinerary R600_VLIW5_Itin[] = {
     142             :   { 0, 0, 0, 0, 0 }, // 0 NoInstrModel
     143             :   { 1, 1, 2, 0, 0 }, // 1 NullALU
     144             :   { 1, 2, 3, 0, 0 }, // 2 VecALU
     145             :   { 1, 3, 4, 0, 0 }, // 3 AnyALU
     146             :   { 1, 4, 5, 0, 0 }, // 4 TransALU
     147             :   { 1, 5, 6, 0, 0 }, // 5 XALU
     148             :   { 0, uint16_t(~0U), uint16_t(~0U), uint16_t(~0U), uint16_t(~0U) }// end marker
     149             : };
     150             : 
     151             : static const llvm::InstrItinerary R600_VLIW4_Itin[] = {
     152             :   { 0, 0, 0, 0, 0 }, // 0 NoInstrModel
     153             :   { 1, 6, 7, 0, 0 }, // 1 NullALU
     154             :   { 1, 7, 8, 0, 0 }, // 2 VecALU
     155             :   { 1, 7, 8, 0, 0 }, // 3 AnyALU
     156             :   { 1, 6, 7, 0, 0 }, // 4 TransALU
     157             :   { 0, 0, 0, 0, 0 }, // 5 XALU
     158             :   { 0, uint16_t(~0U), uint16_t(~0U), uint16_t(~0U), uint16_t(~0U) }// end marker
     159             : };
     160             : 
     161             : // ===============================================================
     162             : // Data tables for the new per-operand machine model.
     163             : 
     164             : // {ProcResourceIdx, Cycles}
     165             : extern const llvm::MCWriteProcResEntry R600WriteProcResTable[] = {
     166             :   { 0,  0}, // Invalid
     167             : }; // R600WriteProcResTable
     168             : 
     169             : // {Cycles, WriteResourceID}
     170             : extern const llvm::MCWriteLatencyEntry R600WriteLatencyTable[] = {
     171             :   { 0,  0}, // Invalid
     172             : }; // R600WriteLatencyTable
     173             : 
     174             : // {UseIdx, WriteResourceID, Cycles}
     175             : extern const llvm::MCReadAdvanceEntry R600ReadAdvanceTable[] = {
     176             :   {0,  0,  0}, // Invalid
     177             : }; // R600ReadAdvanceTable
     178             : 
     179             : static const llvm::MCSchedModel NoSchedModel = {
     180             :   MCSchedModel::DefaultIssueWidth,
     181             :   MCSchedModel::DefaultMicroOpBufferSize,
     182             :   MCSchedModel::DefaultLoopMicroOpBufferSize,
     183             :   MCSchedModel::DefaultLoadLatency,
     184             :   MCSchedModel::DefaultHighLatency,
     185             :   MCSchedModel::DefaultMispredictPenalty,
     186             :   false, // PostRAScheduler
     187             :   false, // CompleteModel
     188             :   0, // Processor ID
     189             :   nullptr, nullptr, 0, 0, // No instruction-level machine model.
     190             :   nullptr, // No Itinerary
     191             :   nullptr // No extra processor descriptor
     192             : };
     193             : 
     194             : static const llvm::MCSchedModel R600_VLIW5_ItinModel = {
     195             :   MCSchedModel::DefaultIssueWidth,
     196             :   MCSchedModel::DefaultMicroOpBufferSize,
     197             :   MCSchedModel::DefaultLoopMicroOpBufferSize,
     198             :   MCSchedModel::DefaultLoadLatency,
     199             :   MCSchedModel::DefaultHighLatency,
     200             :   MCSchedModel::DefaultMispredictPenalty,
     201             :   false, // PostRAScheduler
     202             :   false, // CompleteModel
     203             :   1, // Processor ID
     204             :   nullptr, nullptr, 0, 0, // No instruction-level machine model.
     205             :   R600_VLIW5_Itin,
     206             :   nullptr // No extra processor descriptor
     207             : };
     208             : 
     209             : static const llvm::MCSchedModel R600_VLIW4_ItinModel = {
     210             :   MCSchedModel::DefaultIssueWidth,
     211             :   MCSchedModel::DefaultMicroOpBufferSize,
     212             :   MCSchedModel::DefaultLoopMicroOpBufferSize,
     213             :   MCSchedModel::DefaultLoadLatency,
     214             :   MCSchedModel::DefaultHighLatency,
     215             :   MCSchedModel::DefaultMispredictPenalty,
     216             :   false, // PostRAScheduler
     217             :   false, // CompleteModel
     218             :   2, // Processor ID
     219             :   nullptr, nullptr, 0, 0, // No instruction-level machine model.
     220             :   R600_VLIW4_Itin,
     221             :   nullptr // No extra processor descriptor
     222             : };
     223             : 
     224             : // Sorted (by key) array of itineraries for CPU subtype.
     225             : extern const llvm::SubtargetInfoKV R600ProcSchedKV[] = {
     226             :   { "barts", (const void *)&R600_VLIW5_ItinModel },
     227             :   { "caicos", (const void *)&R600_VLIW5_ItinModel },
     228             :   { "cayman", (const void *)&R600_VLIW4_ItinModel },
     229             :   { "cedar", (const void *)&R600_VLIW5_ItinModel },
     230             :   { "cypress", (const void *)&R600_VLIW5_ItinModel },
     231             :   { "juniper", (const void *)&R600_VLIW5_ItinModel },
     232             :   { "r600", (const void *)&R600_VLIW5_ItinModel },
     233             :   { "r630", (const void *)&R600_VLIW5_ItinModel },
     234             :   { "redwood", (const void *)&R600_VLIW5_ItinModel },
     235             :   { "rs880", (const void *)&R600_VLIW5_ItinModel },
     236             :   { "rv670", (const void *)&R600_VLIW5_ItinModel },
     237             :   { "rv710", (const void *)&R600_VLIW5_ItinModel },
     238             :   { "rv730", (const void *)&R600_VLIW5_ItinModel },
     239             :   { "rv770", (const void *)&R600_VLIW5_ItinModel },
     240             :   { "sumo", (const void *)&R600_VLIW5_ItinModel },
     241             :   { "turks", (const void *)&R600_VLIW5_ItinModel },
     242             : };
     243             : 
     244             : #undef DBGFIELD
     245             : namespace R600_MC {
     246           0 : unsigned resolveVariantSchedClassImpl(unsigned SchedClass,
     247             :     const MCInst *MI, unsigned CPUID) {
     248             :   // Don't know how to resolve this scheduling class.
     249           0 :   return 0;
     250             : }
     251             : } // end of namespace R600_MC
     252             : 
     253             : struct R600GenMCSubtargetInfo : public MCSubtargetInfo {
     254             :   R600GenMCSubtargetInfo(const Triple &TT, 
     255             :     StringRef CPU, StringRef FS, ArrayRef<SubtargetFeatureKV> PF,
     256             :     ArrayRef<SubtargetFeatureKV> PD,
     257             :     const SubtargetInfoKV *ProcSched,
     258             :     const MCWriteProcResEntry *WPR,
     259             :     const MCWriteLatencyEntry *WL,
     260             :     const MCReadAdvanceEntry *RA, const InstrStage *IS,
     261         296 :     const unsigned *OC, const unsigned *FP) :
     262             :       MCSubtargetInfo(TT, CPU, FS, PF, PD, ProcSched,
     263         296 :                       WPR, WL, RA, IS, OC, FP) { }
     264             : 
     265           0 :   unsigned resolveVariantSchedClass(unsigned SchedClass,
     266             :       const MCInst *MI, unsigned CPUID) const override {
     267           0 :     return R600_MC::resolveVariantSchedClassImpl(SchedClass, MI, CPUID); 
     268             :   }
     269             : };
     270             : 
     271         296 : static inline MCSubtargetInfo *createR600MCSubtargetInfoImpl(const Triple &TT, StringRef CPU, StringRef FS) {
     272             :   return new R600GenMCSubtargetInfo(TT, CPU, FS, R600FeatureKV, R600SubTypeKV, 
     273             :                       R600ProcSchedKV, R600WriteProcResTable, R600WriteLatencyTable, R600ReadAdvanceTable, 
     274         296 :                       R600Stages, R600OperandCycles, R600ForwardingPaths);
     275             : }
     276             : 
     277             : } // end namespace llvm
     278             : 
     279             : #endif // GET_SUBTARGETINFO_MC_DESC
     280             : 
     281             : 
     282             : #ifdef GET_SUBTARGETINFO_TARGET_DESC
     283             : #undef GET_SUBTARGETINFO_TARGET_DESC
     284             : 
     285             : #include "llvm/Support/Debug.h"
     286             : #include "llvm/Support/raw_ostream.h"
     287             : 
     288             : // ParseSubtargetFeatures - Parses features string setting specified
     289             : // subtarget options.
     290         291 : void llvm::R600Subtarget::ParseSubtargetFeatures(StringRef CPU, StringRef FS) {
     291             :   LLVM_DEBUG(dbgs() << "\nFeatures:" << FS);
     292             :   LLVM_DEBUG(dbgs() << "\nCPU:" << CPU << "\n\n");
     293         291 :   InitMCProcessorInfo(CPU, FS);
     294             :   const FeatureBitset& Bits = getFeatureBits();
     295         291 :   if (Bits[R600::FeatureCFALUBug]) CFALUBug = true;
     296         291 :   if (Bits[R600::FeatureCaymanISA]) CaymanISA = true;
     297         291 :   if (Bits[R600::FeatureDX10Clamp]) DX10Clamp = true;
     298         291 :   if (Bits[R600::FeatureEvergreen] && Gen < R600Subtarget::EVERGREEN) Gen = R600Subtarget::EVERGREEN;
     299         291 :   if (Bits[R600::FeatureFMA]) FMA = true;
     300         291 :   if (Bits[R600::FeatureFP32Denormals]) FP32Denormals = true;
     301         291 :   if (Bits[R600::FeatureFP64]) FP64 = true;
     302         291 :   if (Bits[R600::FeatureFetchLimit8] && TexVTXClauseSize < 8) TexVTXClauseSize = 8;
     303         291 :   if (Bits[R600::FeatureFetchLimit16] && TexVTXClauseSize < 16) TexVTXClauseSize = 16;
     304         291 :   if (Bits[R600::FeatureLocalMemorySize0] && LocalMemorySize < 0) LocalMemorySize = 0;
     305         291 :   if (Bits[R600::FeatureLocalMemorySize32768] && LocalMemorySize < 32768) LocalMemorySize = 32768;
     306         291 :   if (Bits[R600::FeatureLocalMemorySize65536] && LocalMemorySize < 65536) LocalMemorySize = 65536;
     307         291 :   if (Bits[R600::FeatureNorthernIslands] && Gen < R600Subtarget::NORTHERN_ISLANDS) Gen = R600Subtarget::NORTHERN_ISLANDS;
     308         291 :   if (Bits[R600::FeaturePromoteAlloca]) EnablePromoteAlloca = true;
     309         291 :   if (Bits[R600::FeatureR600] && Gen < R600Subtarget::R600) Gen = R600Subtarget::R600;
     310         291 :   if (Bits[R600::FeatureR600ALUInst]) R600ALUInst = false;
     311         291 :   if (Bits[R600::FeatureR700] && Gen < R600Subtarget::R700) Gen = R600Subtarget::R700;
     312         291 :   if (Bits[R600::FeatureVertexCache]) HasVertexCache = true;
     313         291 :   if (Bits[R600::FeatureWavefrontSize16] && WavefrontSize < 16) WavefrontSize = 16;
     314         291 :   if (Bits[R600::FeatureWavefrontSize32] && WavefrontSize < 32) WavefrontSize = 32;
     315         291 :   if (Bits[R600::FeatureWavefrontSize64] && WavefrontSize < 64) WavefrontSize = 64;
     316         291 : }
     317             : #endif // GET_SUBTARGETINFO_TARGET_DESC
     318             : 
     319             : 
     320             : #ifdef GET_SUBTARGETINFO_HEADER
     321             : #undef GET_SUBTARGETINFO_HEADER
     322             : 
     323             : namespace llvm {
     324             : class DFAPacketizer;
     325             : namespace R600_MC {
     326             : unsigned resolveVariantSchedClassImpl(unsigned SchedClass, const MCInst *MI, unsigned CPUID);
     327             : }
     328             : 
     329             : struct R600GenSubtargetInfo : public TargetSubtargetInfo {
     330             :   explicit R600GenSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS);
     331             : public:
     332             :   unsigned resolveSchedClass(unsigned SchedClass,  const MachineInstr *DefMI, const TargetSchedModel *SchedModel) const override;
     333             :   unsigned resolveVariantSchedClass(unsigned SchedClass, const MCInst *MI, unsigned CPUID) const override;
     334             :   DFAPacketizer *createDFAPacketizer(const InstrItineraryData *IID) const;
     335             : };
     336             : } // end namespace llvm
     337             : 
     338             : #endif // GET_SUBTARGETINFO_HEADER
     339             : 
     340             : 
     341             : #ifdef GET_SUBTARGETINFO_CTOR
     342             : #undef GET_SUBTARGETINFO_CTOR
     343             : 
     344             : #include "llvm/CodeGen/TargetSchedule.h"
     345             : 
     346             : namespace llvm {
     347             : extern const llvm::SubtargetFeatureKV R600FeatureKV[];
     348             : extern const llvm::SubtargetFeatureKV R600SubTypeKV[];
     349             : extern const llvm::SubtargetInfoKV R600ProcSchedKV[];
     350             : extern const llvm::MCWriteProcResEntry R600WriteProcResTable[];
     351             : extern const llvm::MCWriteLatencyEntry R600WriteLatencyTable[];
     352             : extern const llvm::MCReadAdvanceEntry R600ReadAdvanceTable[];
     353             : extern const llvm::InstrStage R600Stages[];
     354             : extern const unsigned R600OperandCycles[];
     355             : extern const unsigned R600ForwardingPaths[];
     356         291 : R600GenSubtargetInfo::R600GenSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS)
     357             :   : TargetSubtargetInfo(TT, CPU, FS, makeArrayRef(R600FeatureKV, 21), makeArrayRef(R600SubTypeKV, 16), 
     358             :                         R600ProcSchedKV, R600WriteProcResTable, R600WriteLatencyTable, R600ReadAdvanceTable, 
     359         291 :                         R600Stages, R600OperandCycles, R600ForwardingPaths) {}
     360             : 
     361           0 : unsigned R600GenSubtargetInfo
     362             : ::resolveSchedClass(unsigned SchedClass, const MachineInstr *MI, const TargetSchedModel *SchedModel) const {
     363           0 :   report_fatal_error("Expected a variant SchedClass");
     364             : } // R600GenSubtargetInfo::resolveSchedClass
     365             : 
     366           0 : unsigned R600GenSubtargetInfo
     367             : ::resolveVariantSchedClass(unsigned SchedClass, const MCInst *MI, unsigned CPUID) const {
     368           0 :   return R600_MC::resolveVariantSchedClassImpl(SchedClass, MI, CPUID);
     369             : } // R600GenSubtargetInfo::resolveVariantSchedClass
     370             : 
     371             : } // end namespace llvm
     372             : 
     373             : #endif // GET_SUBTARGETINFO_CTOR
     374             : 
     375             : 
     376             : #ifdef GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS
     377             : #undef GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS
     378             : 
     379             : #endif // GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS
     380             : 
     381             : 
     382             : #ifdef GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
     383             : #undef GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
     384             : 
     385             : #endif // GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
     386             : 

Generated by: LCOV version 1.13