mirror of
https://github.com/RPCSX/llvm.git
synced 2025-04-11 20:52:31 +00:00

target machine from those that are only needed by codegen. The goal is to sink the essential target description into MC layer so we can start building MC based tools without needing to link in the entire codegen. First step is to refactor TargetRegisterInfo. This patch added a base class MCRegisterInfo which TargetRegisterInfo is derived from. Changed TableGen to separate register description from the rest of the stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133782 91177308-0d34-0410-b5e6-96231b3b80d8
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
//===- PTXRegisterInfo.cpp - PTX Register Information ---------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains the PTX implementation of the TargetRegisterInfo class.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "PTX.h"
|
|
#include "PTXRegisterInfo.h"
|
|
#include "llvm/CodeGen/MachineFunction.h"
|
|
#include "llvm/Support/Debug.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
|
|
using namespace llvm;
|
|
|
|
#include "PTXGenRegisterDesc.inc"
|
|
#include "PTXGenRegisterInfo.inc"
|
|
|
|
|
|
PTXRegisterInfo::PTXRegisterInfo(PTXTargetMachine &TM,
|
|
const TargetInstrInfo &TII)
|
|
: PTXGenRegisterInfo(PTXRegDesc, PTXRegInfoDesc) {
|
|
}
|
|
|
|
void PTXRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
|
int SPAdj,
|
|
RegScavenger *RS) const {
|
|
unsigned Index;
|
|
MachineInstr& MI = *II;
|
|
|
|
Index = 0;
|
|
while (!MI.getOperand(Index).isFI()) {
|
|
++Index;
|
|
assert(Index < MI.getNumOperands() &&
|
|
"Instr does not have a FrameIndex operand!");
|
|
}
|
|
|
|
int FrameIndex = MI.getOperand(Index).getIndex();
|
|
|
|
DEBUG(dbgs() << "eliminateFrameIndex: " << MI);
|
|
DEBUG(dbgs() << "- SPAdj: " << SPAdj << "\n");
|
|
DEBUG(dbgs() << "- FrameIndex: " << FrameIndex << "\n");
|
|
|
|
// This frame index is post stack slot re-use assignments
|
|
MI.getOperand(Index).ChangeToImmediate(FrameIndex);
|
|
}
|