mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	X86 merge complete, eliminate dead code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4401 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -1,71 +0,0 @@ | ||||
| //===-- CodeGen/MInstBuilder.h - Simplify creation of MInstcn's -*- C++ -*-===// | ||||
| // | ||||
| // This file exposes a function named BuildMInst that is useful for dramatically | ||||
| // simplifying how MInstruction's are created.  Instead of using code like this: | ||||
| // | ||||
| //   M = new MInstruction(BB, X86::ADDrr32, DestReg); | ||||
| //   M->addOperand(Arg0Reg, MOperand::Register); | ||||
| //   M->addOperand(Arg1Reg, MOperand::Register); | ||||
| // | ||||
| // we can now use code like this: | ||||
| // | ||||
| //   M = BuildMInst(BB, X86::ADDrr8, DestReg).addReg(Arg0Reg).addReg(Arg1Reg); | ||||
| // | ||||
| //===----------------------------------------------------------------------===// | ||||
|  | ||||
| #ifndef LLVM_CODEGEN_MINSTBUILDER_H | ||||
| #define LLVM_CODEGEN_MINSTBUILDER_H | ||||
|  | ||||
| #include "llvm/CodeGen/MInstruction.h" | ||||
|  | ||||
| struct MInstructionBuilder {  | ||||
|   MInstruction *MI; | ||||
|  | ||||
|   MInstructionBuilder(MInstruction *mi) : MI(mi) {} | ||||
|  | ||||
|   /// Allow automatic conversion to the machine instruction we are working on. | ||||
|   /// | ||||
|   operator MInstruction*() const { return MI; } | ||||
|  | ||||
|   /// addReg - Add a new register operand... | ||||
|   /// | ||||
|   MInstructionBuilder &addReg(unsigned RegNo) { | ||||
|     MI->addOperand(RegNo, MOperand::Register); | ||||
|     return *this; | ||||
|   } | ||||
|  | ||||
|   /// addSImm - Add a new sign extended immediate operand... | ||||
|   /// | ||||
|   MInstructionBuilder &addSImm(int Val) { | ||||
|     MI->addOperand(Val, MOperand::SignExtImmediate); | ||||
|     return *this; | ||||
|   } | ||||
|  | ||||
|   /// addZImm - Add a new zero extended immediate operand... | ||||
|   /// | ||||
|   MInstructionBuilder &addZImm(unsigned Val) { | ||||
|     MI->addOperand(Val, MOperand::ZeroExtImmediate); | ||||
|     return *this; | ||||
|   } | ||||
|  | ||||
|   /// addPCDisp - Add a PC Relative Displacement operand... | ||||
|   /// | ||||
|   MInstructionBuilder &addPCDisp(int Disp) { | ||||
|     MI->addOperand(Disp, MOperand::PCRelativeDisp); | ||||
|     return *this; | ||||
|   } | ||||
| }; | ||||
|  | ||||
| /// BuildMInst - Builder interface.  Specify how to create the initial | ||||
| /// instruction itself. | ||||
| /// | ||||
| inline MInstructionBuilder BuildMInst(unsigned Opcode, unsigned DestReg = 0) { | ||||
|   return MInstructionBuilder(new MInstruction(Opcode, DestReg)); | ||||
| } | ||||
|  | ||||
| inline MInstructionBuilder BuildMInst(MBasicBlock *BB, unsigned Opcode, | ||||
|                                unsigned DestReg = 0) { | ||||
|   return MInstructionBuilder(new MInstruction(BB, Opcode, DestReg)); | ||||
| } | ||||
|                                  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user