Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/lib/Target/RISCV/RISCVSubtarget.h
//===-- RISCVSubtarget.h - Define Subtarget for the RISCV -------*- C++ -*-===// | |||||
// | |||||
// The LLVM Compiler Infrastructure | |||||
// | |||||
// This file is distributed under the University of Illinois Open Source | |||||
// License. See LICENSE.TXT for details. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
// | |||||
// This file declares the RISCV specific subclass of TargetSubtargetInfo. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
#ifndef LLVM_LIB_TARGET_RISCV_RISCVSUBTARGET_H | |||||
#define LLVM_LIB_TARGET_RISCV_RISCVSUBTARGET_H | |||||
#include "RISCVFrameLowering.h" | |||||
#include "RISCVISelLowering.h" | |||||
#include "RISCVInstrInfo.h" | |||||
#include "llvm/CodeGen/SelectionDAGTargetInfo.h" | |||||
#include "llvm/IR/DataLayout.h" | |||||
#include "llvm/Target/TargetMachine.h" | |||||
#include "llvm/Target/TargetSubtargetInfo.h" | |||||
#define GET_SUBTARGETINFO_HEADER | |||||
#include "RISCVGenSubtargetInfo.inc" | |||||
namespace llvm { | |||||
class StringRef; | |||||
class RISCVSubtarget : public RISCVGenSubtargetInfo { | |||||
virtual void anchor(); | |||||
bool HasRV64 = false; | |||||
unsigned XLen = 32; | |||||
MVT XLenVT = MVT::i32; | |||||
RISCVFrameLowering FrameLowering; | |||||
RISCVInstrInfo InstrInfo; | |||||
RISCVRegisterInfo RegInfo; | |||||
RISCVTargetLowering TLInfo; | |||||
SelectionDAGTargetInfo TSInfo; | |||||
/// Initializes using the passed in CPU and feature strings so that we can | |||||
/// use initializer lists for subtarget initialization. | |||||
RISCVSubtarget &initializeSubtargetDependencies(StringRef CPU, StringRef FS, | |||||
bool Is64Bit); | |||||
public: | |||||
// Initializes the data members to match that of the specified triple. | |||||
RISCVSubtarget(const Triple &TT, const std::string &CPU, | |||||
const std::string &FS, const TargetMachine &TM); | |||||
// Parses features string setting specified subtarget options. The | |||||
// definition of this function is auto-generated by tblgen. | |||||
void ParseSubtargetFeatures(StringRef CPU, StringRef FS); | |||||
const RISCVFrameLowering *getFrameLowering() const override { | |||||
return &FrameLowering; | |||||
} | |||||
const RISCVInstrInfo *getInstrInfo() const override { return &InstrInfo; } | |||||
const RISCVRegisterInfo *getRegisterInfo() const override { | |||||
return &RegInfo; | |||||
} | |||||
const RISCVTargetLowering *getTargetLowering() const override { | |||||
return &TLInfo; | |||||
} | |||||
const SelectionDAGTargetInfo *getSelectionDAGInfo() const override { | |||||
return &TSInfo; | |||||
} | |||||
bool is64Bit() const { return HasRV64; } | |||||
MVT getXLenVT() const { return XLenVT; } | |||||
unsigned getXLen() const { return XLen; } | |||||
}; | |||||
} // End llvm namespace | |||||
#endif |