//===-- SparcV9CodeEmitter.h ------------------------------------*- C++ -*-===//
-//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Target-specific portions of the machine code emitter for the SparcV9.
+// This class interfaces with the JIT's Emitter in order to turn MachineInstrs
+// into words of binary machine code. Its code is partially generated by
+// TableGen's CodeEmitterGenerator.
//
//===----------------------------------------------------------------------===//
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/Target/TargetMachine.h"
+namespace llvm {
+
class GlobalValue;
class MachineInstr;
class MachineOperand;
// Tracks where each BasicBlock starts
std::map<const BasicBlock*, long> BBLocations;
- // Tracks locations of Constants which are laid out in memory (e.g. FP)
- // But we also need to map Constants to ConstantPool indices
- std::map<const Constant*, unsigned> ConstantMap;
-
public:
SparcV9CodeEmitter(TargetMachine &T, MachineCodeEmitter &M);
- ~SparcV9CodeEmitter();
+ ~SparcV9CodeEmitter() {}
+
+ const char *getPassName() const { return "SparcV9 Machine Code Emitter"; }
/// runOnMachineFunction - emits the given machine function to memory.
///
/// emitWord - writes out the given 32-bit value to memory at the current PC.
///
void emitWord(unsigned Val);
-
+
/// getBinaryCodeForInstr - This function, generated by the
/// CodeEmitterGenerator using TableGen, produces the binary encoding for
/// machine instructions.
///
unsigned getBinaryCodeForInstr(MachineInstr &MI);
- /// emitFarCall - produces a code sequence to make a call to a destination
- /// that does not fit in the 30 bits that a call instruction allows.
- /// If the function F is non-null, this also saves the return address in
- /// the LazyResolver map of the JITResolver.
- void emitFarCall(uint64_t Addr, Function *F = 0);
-
-private:
- /// getMachineOpValue -
+private:
+ /// getMachineOpValue -
///
int64_t getMachineOpValue(MachineInstr &MI, MachineOperand &MO);
- /// emitBasicBlock -
+ /// emitBasicBlock -
///
void emitBasicBlock(MachineBasicBlock &MBB);
- /// getValueBit -
+ /// getValueBit -
///
unsigned getValueBit(int64_t Val, unsigned bit);
- /// getGlobalAddress -
+ /// getGlobalAddress -
///
void* getGlobalAddress(GlobalValue *V, MachineInstr &MI,
bool isPCRelative);
- /// emitFarCall -
+ /// emitFarCall -
///
unsigned getRealRegNum(unsigned fakeReg, MachineInstr &MI);
};
+} // End llvm namespace
+
#endif