mirror of
https://github.com/jeremysrand/llvm-65816.git
synced 2025-07-25 08:24:09 +00:00
Initial commit with LLVM 3.4.1, cfe 3.4.1 and compiler-rt 3.4
This commit is contained in:
62
lib/Target/R600/AMDGPUConvertToISA.cpp
Normal file
62
lib/Target/R600/AMDGPUConvertToISA.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
//===-- AMDGPUConvertToISA.cpp - Lower AMDIL to HW ISA --------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
/// \file
|
||||
/// \brief This pass lowers AMDIL machine instructions to the appropriate
|
||||
/// hardware instructions.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "AMDGPU.h"
|
||||
#include "AMDGPUInstrInfo.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
|
||||
class AMDGPUConvertToISAPass : public MachineFunctionPass {
|
||||
|
||||
private:
|
||||
static char ID;
|
||||
TargetMachine &TM;
|
||||
|
||||
public:
|
||||
AMDGPUConvertToISAPass(TargetMachine &tm) :
|
||||
MachineFunctionPass(ID), TM(tm) { }
|
||||
|
||||
virtual bool runOnMachineFunction(MachineFunction &MF);
|
||||
|
||||
virtual const char *getPassName() const {return "AMDGPU Convert to ISA";}
|
||||
|
||||
};
|
||||
|
||||
} // End anonymous namespace
|
||||
|
||||
char AMDGPUConvertToISAPass::ID = 0;
|
||||
|
||||
FunctionPass *llvm::createAMDGPUConvertToISAPass(TargetMachine &tm) {
|
||||
return new AMDGPUConvertToISAPass(tm);
|
||||
}
|
||||
|
||||
bool AMDGPUConvertToISAPass::runOnMachineFunction(MachineFunction &MF) {
|
||||
const AMDGPUInstrInfo * TII =
|
||||
static_cast<const AMDGPUInstrInfo*>(TM.getInstrInfo());
|
||||
|
||||
for (MachineFunction::iterator BB = MF.begin(), BB_E = MF.end();
|
||||
BB != BB_E; ++BB) {
|
||||
MachineBasicBlock &MBB = *BB;
|
||||
for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end();
|
||||
I != E; ++I) {
|
||||
MachineInstr &MI = *I;
|
||||
TII->convertToISA(MI, MF, MBB.findDebugLoc(I));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
Reference in New Issue
Block a user