diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2004-03-04 04:37:45 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2004-03-04 04:37:45 +0000 |
commit | 775158d62abbe2548875b46dcbecf8b234930dd4 (patch) | |
tree | 1705a84d46e98ed7eebde63ea261c22f537ced28 /lib/Target | |
parent | e7173b7e8ec1ac1bc4843dad84b0d84c3ad3e720 (diff) | |
download | external_llvm-775158d62abbe2548875b46dcbecf8b234930dd4.zip external_llvm-775158d62abbe2548875b46dcbecf8b234930dd4.tar.gz external_llvm-775158d62abbe2548875b46dcbecf8b234930dd4.tar.bz2 |
Subtract instructions; minor cleanups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12111 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/Sparc/InstSelectSimple.cpp | 10 | ||||
-rw-r--r-- | lib/Target/Sparc/SparcInstrInfo.td | 5 | ||||
-rw-r--r-- | lib/Target/Sparc/SparcV8ISelSimple.cpp | 10 | ||||
-rw-r--r-- | lib/Target/SparcV8/InstSelectSimple.cpp | 10 | ||||
-rw-r--r-- | lib/Target/SparcV8/SparcV8ISelSimple.cpp | 10 | ||||
-rw-r--r-- | lib/Target/SparcV8/SparcV8InstrInfo.td | 5 |
6 files changed, 32 insertions, 18 deletions
diff --git a/lib/Target/Sparc/InstSelectSimple.cpp b/lib/Target/Sparc/InstSelectSimple.cpp index 95ff31e..5c145cb 100644 --- a/lib/Target/Sparc/InstSelectSimple.cpp +++ b/lib/Target/Sparc/InstSelectSimple.cpp @@ -165,9 +165,8 @@ static TypeClass getClass (const Type *T) { void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, MachineBasicBlock::iterator IP, Constant *C, unsigned R) { - if (C->getType()->isIntegral()) { + if (ConstantInt *CI = dyn_cast<ConstantInt> (C)) { unsigned Class = getClass(C->getType()); - ConstantInt *CI = cast<ConstantInt>(C); switch (Class) { case cByte: BuildMI (*MBB, IP, V8::ORri, 2, R).addReg (V8::G0).addImm ((uint8_t) CI->getRawValue ()); @@ -185,12 +184,12 @@ void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, return; } default: - assert (0 && "Can't move this kind of constant"); + assert (0 && "Can't copy this kind of constant into register yet"); return; } } - assert (0 && "Can't copy constants into registers yet"); + assert (0 && "Can't copy this kind of constant into register yet"); } bool V8ISel::runOnFunction(Function &Fn) { @@ -246,6 +245,9 @@ void V8ISel::visitBinaryOperator (BinaryOperator &I) { case Instruction::Add: BuildMI (BB, V8::ADDrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); break; + case Instruction::Sub: + BuildMI (BB, V8::SUBrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); + break; default: visitInstruction (I); return; diff --git a/lib/Target/Sparc/SparcInstrInfo.td b/lib/Target/Sparc/SparcInstrInfo.td index 7a54404..72ad34f 100644 --- a/lib/Target/Sparc/SparcInstrInfo.td +++ b/lib/Target/Sparc/SparcInstrInfo.td @@ -62,7 +62,7 @@ def CALL : InstV8 { let Name = "call"; } -// Section B.9 - SETHI Instruction, p. 102 +// Section B.9 - SETHI Instruction, p. 104 def SETHIi: F2_1<0b100, "sethi">; // Section B.11 - Logical Instructions, p. 106 @@ -78,6 +78,9 @@ def SRAri : F3_1<2, 0b100111, "sra">; // Section B.13 - Add Instructions, p. 108 def ADDrr : F3_1<2, 0b000000, "add">; +// Section B.15 - Subtract Instructions, p. 110 +def SUBrr : F3_1<2, 0b000100, "sub">; + // Section B.25 - Jump and Link, p. 126 def JMPLr : F3_1<2, 0b111000, "jmpl">; // jmpl [rs1+rs2], rd def JMPLi : F3_2<2, 0b111000, "jmpl">; // jmpl [rs1+imm], rd diff --git a/lib/Target/Sparc/SparcV8ISelSimple.cpp b/lib/Target/Sparc/SparcV8ISelSimple.cpp index 95ff31e..5c145cb 100644 --- a/lib/Target/Sparc/SparcV8ISelSimple.cpp +++ b/lib/Target/Sparc/SparcV8ISelSimple.cpp @@ -165,9 +165,8 @@ static TypeClass getClass (const Type *T) { void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, MachineBasicBlock::iterator IP, Constant *C, unsigned R) { - if (C->getType()->isIntegral()) { + if (ConstantInt *CI = dyn_cast<ConstantInt> (C)) { unsigned Class = getClass(C->getType()); - ConstantInt *CI = cast<ConstantInt>(C); switch (Class) { case cByte: BuildMI (*MBB, IP, V8::ORri, 2, R).addReg (V8::G0).addImm ((uint8_t) CI->getRawValue ()); @@ -185,12 +184,12 @@ void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, return; } default: - assert (0 && "Can't move this kind of constant"); + assert (0 && "Can't copy this kind of constant into register yet"); return; } } - assert (0 && "Can't copy constants into registers yet"); + assert (0 && "Can't copy this kind of constant into register yet"); } bool V8ISel::runOnFunction(Function &Fn) { @@ -246,6 +245,9 @@ void V8ISel::visitBinaryOperator (BinaryOperator &I) { case Instruction::Add: BuildMI (BB, V8::ADDrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); break; + case Instruction::Sub: + BuildMI (BB, V8::SUBrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); + break; default: visitInstruction (I); return; diff --git a/lib/Target/SparcV8/InstSelectSimple.cpp b/lib/Target/SparcV8/InstSelectSimple.cpp index 95ff31e..5c145cb 100644 --- a/lib/Target/SparcV8/InstSelectSimple.cpp +++ b/lib/Target/SparcV8/InstSelectSimple.cpp @@ -165,9 +165,8 @@ static TypeClass getClass (const Type *T) { void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, MachineBasicBlock::iterator IP, Constant *C, unsigned R) { - if (C->getType()->isIntegral()) { + if (ConstantInt *CI = dyn_cast<ConstantInt> (C)) { unsigned Class = getClass(C->getType()); - ConstantInt *CI = cast<ConstantInt>(C); switch (Class) { case cByte: BuildMI (*MBB, IP, V8::ORri, 2, R).addReg (V8::G0).addImm ((uint8_t) CI->getRawValue ()); @@ -185,12 +184,12 @@ void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, return; } default: - assert (0 && "Can't move this kind of constant"); + assert (0 && "Can't copy this kind of constant into register yet"); return; } } - assert (0 && "Can't copy constants into registers yet"); + assert (0 && "Can't copy this kind of constant into register yet"); } bool V8ISel::runOnFunction(Function &Fn) { @@ -246,6 +245,9 @@ void V8ISel::visitBinaryOperator (BinaryOperator &I) { case Instruction::Add: BuildMI (BB, V8::ADDrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); break; + case Instruction::Sub: + BuildMI (BB, V8::SUBrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); + break; default: visitInstruction (I); return; diff --git a/lib/Target/SparcV8/SparcV8ISelSimple.cpp b/lib/Target/SparcV8/SparcV8ISelSimple.cpp index 95ff31e..5c145cb 100644 --- a/lib/Target/SparcV8/SparcV8ISelSimple.cpp +++ b/lib/Target/SparcV8/SparcV8ISelSimple.cpp @@ -165,9 +165,8 @@ static TypeClass getClass (const Type *T) { void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, MachineBasicBlock::iterator IP, Constant *C, unsigned R) { - if (C->getType()->isIntegral()) { + if (ConstantInt *CI = dyn_cast<ConstantInt> (C)) { unsigned Class = getClass(C->getType()); - ConstantInt *CI = cast<ConstantInt>(C); switch (Class) { case cByte: BuildMI (*MBB, IP, V8::ORri, 2, R).addReg (V8::G0).addImm ((uint8_t) CI->getRawValue ()); @@ -185,12 +184,12 @@ void V8ISel::copyConstantToRegister(MachineBasicBlock *MBB, return; } default: - assert (0 && "Can't move this kind of constant"); + assert (0 && "Can't copy this kind of constant into register yet"); return; } } - assert (0 && "Can't copy constants into registers yet"); + assert (0 && "Can't copy this kind of constant into register yet"); } bool V8ISel::runOnFunction(Function &Fn) { @@ -246,6 +245,9 @@ void V8ISel::visitBinaryOperator (BinaryOperator &I) { case Instruction::Add: BuildMI (BB, V8::ADDrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); break; + case Instruction::Sub: + BuildMI (BB, V8::SUBrr, 2, ResultReg).addReg (Op0Reg).addReg (Op1Reg); + break; default: visitInstruction (I); return; diff --git a/lib/Target/SparcV8/SparcV8InstrInfo.td b/lib/Target/SparcV8/SparcV8InstrInfo.td index 7a54404..72ad34f 100644 --- a/lib/Target/SparcV8/SparcV8InstrInfo.td +++ b/lib/Target/SparcV8/SparcV8InstrInfo.td @@ -62,7 +62,7 @@ def CALL : InstV8 { let Name = "call"; } -// Section B.9 - SETHI Instruction, p. 102 +// Section B.9 - SETHI Instruction, p. 104 def SETHIi: F2_1<0b100, "sethi">; // Section B.11 - Logical Instructions, p. 106 @@ -78,6 +78,9 @@ def SRAri : F3_1<2, 0b100111, "sra">; // Section B.13 - Add Instructions, p. 108 def ADDrr : F3_1<2, 0b000000, "add">; +// Section B.15 - Subtract Instructions, p. 110 +def SUBrr : F3_1<2, 0b000100, "sub">; + // Section B.25 - Jump and Link, p. 126 def JMPLr : F3_1<2, 0b111000, "jmpl">; // jmpl [rs1+rs2], rd def JMPLi : F3_2<2, 0b111000, "jmpl">; // jmpl [rs1+imm], rd |