blob: 125dedb1e0e2e850019388c3e3b7983eeb5bb4ce [file] [log] [blame]
Misha Brukmana9f7f6e2003-05-30 20:17:33 +00001//===-- SparcV9CodeEmitter.h ------------------------------------*- C++ -*-===//
2//
3//
4//===----------------------------------------------------------------------===//
Misha Brukman0cc640e2003-05-27 21:45:05 +00005
6#ifndef SPARCV9CODEEMITTER_H
7#define SPARCV9CODEEMITTER_H
8
Misha Brukman0d603452003-05-27 22:41:44 +00009#include "llvm/BasicBlock.h"
Misha Brukman0cc640e2003-05-27 21:45:05 +000010#include "llvm/CodeGen/MachineCodeEmitter.h"
11#include "llvm/CodeGen/MachineFunctionPass.h"
12#include "llvm/CodeGen/MachineInstr.h"
Misha Brukmana9f7f6e2003-05-30 20:17:33 +000013#include "llvm/Target/TargetMachine.h"
Misha Brukman0cc640e2003-05-27 21:45:05 +000014
15class SparcV9CodeEmitter : public MachineFunctionPass {
Misha Brukmana9f7f6e2003-05-30 20:17:33 +000016 static MachineCodeEmitter *MCE;
17 static TargetMachine *TM;
Misha Brukmanf2ef7672003-05-27 22:48:28 +000018 BasicBlock *currBB;
Misha Brukman0cc640e2003-05-27 21:45:05 +000019
20public:
Misha Brukmana9f7f6e2003-05-30 20:17:33 +000021 SparcV9CodeEmitter(TargetMachine *tm, MachineCodeEmitter &M) {
22 MCE = &M;
23 TM = tm;
24 }
25
Misha Brukman0cc640e2003-05-27 21:45:05 +000026 bool runOnMachineFunction(MachineFunction &F);
27
28 /// Function generated by the CodeEmitterGenerator using TableGen
29 ///
30 static unsigned getBinaryCodeForInstr(MachineInstr &MI);
31
32private:
Misha Brukmana9f7f6e2003-05-30 20:17:33 +000033 static int64_t getMachineOpValue(MachineInstr &MI, MachineOperand &MO);
Misha Brukman0cc640e2003-05-27 21:45:05 +000034 static unsigned getValueBit(int64_t Val, unsigned bit);
35
36 void emitConstant(unsigned Val, unsigned Size);
37
38 void emitBasicBlock(MachineBasicBlock &MBB);
39 void emitInstruction(MachineInstr &MI);
40
41};
42
43#endif