| //===-- Nios2Subtarget.cpp - Nios2 Subtarget Information ------------------===// | |
| // | |
| // 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 Nios2 specific subclass of TargetSubtargetInfo. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "Nios2Subtarget.h" | |
| #include "Nios2.h" | |
| using namespace llvm; | |
| #define DEBUG_TYPE "nios2-subtarget" | |
| #define GET_SUBTARGETINFO_TARGET_DESC | |
| #define GET_SUBTARGETINFO_CTOR | |
| #include "Nios2GenSubtargetInfo.inc" | |
| void Nios2Subtarget::anchor() {} | |
| Nios2Subtarget::Nios2Subtarget(const Triple &TT, const std::string &CPU, | |
| const std::string &FS, const TargetMachine &TM) | |
| : | |
| // Nios2GenSubtargetInfo will display features by llc -march=nios2 | |
| // -mcpu=help | |
| Nios2GenSubtargetInfo(TT, CPU, FS), TargetTriple(TT), | |
| InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM, *this), | |
| FrameLowering(*this) {} | |
| Nios2Subtarget &Nios2Subtarget::initializeSubtargetDependencies(StringRef CPU, | |
| StringRef FS) { | |
| if (TargetTriple.getArch() == Triple::nios2) { | |
| if (CPU != "nios2r2") { | |
| CPU = "nios2r1"; | |
| Nios2ArchVersion = Nios2r1; | |
| } else { | |
| Nios2ArchVersion = Nios2r2; | |
| } | |
| } else { | |
| errs() << "!!!Error, TargetTriple.getArch() = " << TargetTriple.getArch() | |
| << "CPU = " << CPU << "\n"; | |
| exit(0); | |
| } | |
| // Parse features string. | |
| ParseSubtargetFeatures(CPU, FS); | |
| return *this; | |
| } |