8264cd3fe61ff1cc5065c41890fbd03788363806
[oota-llvm.git] / lib / Target / SparcV9 / SparcV9CodeEmitter.h
1
2
3 #ifndef SPARCV9CODEEMITTER_H
4 #define SPARCV9CODEEMITTER_H
5
6 #include "llvm/BasicBlock.h"
7 #include "llvm/CodeGen/MachineCodeEmitter.h"
8 #include "llvm/CodeGen/MachineFunctionPass.h"
9 #include "llvm/CodeGen/MachineInstr.h"
10
11 class SparcV9CodeEmitter : public MachineFunctionPass {
12   MachineCodeEmitter &MCE;
13   BasicBlock *currBB;
14
15 public:
16   SparcV9CodeEmitter(MachineCodeEmitter &M) : MCE(M) {}
17     
18   bool runOnMachineFunction(MachineFunction &F);
19     
20   /// Function generated by the CodeEmitterGenerator using TableGen
21   ///
22   static unsigned getBinaryCodeForInstr(MachineInstr &MI);
23
24 private:    
25   static int64_t getMachineOpValue(MachineOperand &MO);
26   static unsigned getValueBit(int64_t Val, unsigned bit);
27
28   void emitConstant(unsigned Val, unsigned Size);
29
30   void emitBasicBlock(MachineBasicBlock &MBB);
31   void emitInstruction(MachineInstr &MI);
32     
33 };
34
35 #endif