blob: e6f6cde4359968c07129dea133307c83720b953a [file] [log] [blame]
Misha Brukman0cc640e2003-05-27 21:45:05 +00001
2
3#ifndef SPARCV9CODEEMITTER_H
4#define SPARCV9CODEEMITTER_H
5
Misha Brukman0d603452003-05-27 22:41:44 +00006#include "llvm/BasicBlock.h"
Misha Brukman0cc640e2003-05-27 21:45:05 +00007#include "llvm/CodeGen/MachineCodeEmitter.h"
8#include "llvm/CodeGen/MachineFunctionPass.h"
9#include "llvm/CodeGen/MachineInstr.h"
10
11class SparcV9CodeEmitter : public MachineFunctionPass {
12 MachineCodeEmitter &MCE;
Misha Brukman0d603452003-05-27 22:41:44 +000013 BasicBlock *BB;
Misha Brukman0cc640e2003-05-27 21:45:05 +000014
15public:
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
24private:
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