mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-21 19:25:26 -04:00
5a3d179fab
This adds the minimum necessary to support codegen for simple ALU operations on RV32. Prolog and epilog insertion, support for memory operations etc etc follow in future patches. Leave guessInstructionProperties=1 until https://reviews.llvm.org/D37065 is reviewed and lands. Differential Revision: https://reviews.llvm.org/D29933 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316188 91177308-0d34-0410-b5e6-96231b3b80d8
49 lines
1.6 KiB
C++
49 lines
1.6 KiB
C++
//===-- RISCVSubtarget.cpp - RISCV 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 RISCV specific subclass of TargetSubtargetInfo.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "RISCVSubtarget.h"
|
|
#include "RISCV.h"
|
|
#include "RISCVFrameLowering.h"
|
|
#include "llvm/Support/TargetRegistry.h"
|
|
|
|
using namespace llvm;
|
|
|
|
#define DEBUG_TYPE "riscv-subtarget"
|
|
|
|
#define GET_SUBTARGETINFO_TARGET_DESC
|
|
#define GET_SUBTARGETINFO_CTOR
|
|
#include "RISCVGenSubtargetInfo.inc"
|
|
|
|
void RISCVSubtarget::anchor() {}
|
|
|
|
RISCVSubtarget &RISCVSubtarget::initializeSubtargetDependencies(StringRef CPU,
|
|
StringRef FS,
|
|
bool Is64Bit) {
|
|
// Determine default and user-specified characteristics
|
|
std::string CPUName = CPU;
|
|
if (CPUName.empty())
|
|
CPUName = Is64Bit ? "generic-rv64" : "generic-rv32";
|
|
ParseSubtargetFeatures(CPUName, FS);
|
|
if (Is64Bit) {
|
|
XLenVT = MVT::i64;
|
|
XLen = 64;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
RISCVSubtarget::RISCVSubtarget(const Triple &TT, const std::string &CPU,
|
|
const std::string &FS, const TargetMachine &TM)
|
|
: RISCVGenSubtargetInfo(TT, CPU, FS),
|
|
FrameLowering(initializeSubtargetDependencies(CPU, FS, TT.isArch64Bit())),
|
|
InstrInfo(), RegInfo(getHwMode()), TLInfo(TM, *this) {}
|