mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 00:16:48 +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