diff options
author | Chris Lattner <sabre@nondot.org> | 2005-08-08 21:34:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-08-08 21:34:13 +0000 |
commit | 0045776d33d6d9d1033235025e67cda4b83b6987 (patch) | |
tree | 1c8ada77a2e8105c705b33cc74b7461b6099f148 | |
parent | fd78454477c7aef827eb4881abbb937f160d2d76 (diff) |
Remove getImmediateForOpcode, which is now dead.
Patch by Jim Laskey.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22716 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/PowerPC/PPCISelPattern.cpp | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp index 4e9f5ba851..1fae1118a7 100644 --- a/lib/Target/PowerPC/PPCISelPattern.cpp +++ b/lib/Target/PowerPC/PPCISelPattern.cpp @@ -673,65 +673,6 @@ static unsigned Lo16(unsigned x) { return x & 0x0000FFFF; } static unsigned Hi16(unsigned x) { return Lo16(x >> 16); } static unsigned HA16(unsigned x) { return Hi16((signed)x - (signed short)x); } -/// getImmediateForOpcode - This method returns a value indicating whether -/// the ConstantSDNode N can be used as an immediate to Opcode. The return -/// values are either 0, 1 or 2. 0 indicates that either N is not a -/// ConstantSDNode, or is not suitable for use by that opcode. -/// Return value codes for turning into an enum someday: -/// 1: constant may be used in normal immediate form. -/// 2: constant may be used in shifted immediate form. -/// 3: log base 2 of the constant may be used. -/// 4: constant is suitable for integer division conversion -/// 5: constant is a bitfield mask -/// -static unsigned getImmediateForOpcode(SDOperand N, unsigned Opcode, - unsigned& Imm, bool U = false) { - if (N.getOpcode() != ISD::Constant) return 0; - - int v = (int)cast<ConstantSDNode>(N)->getSignExtended(); - - switch(Opcode) { - default: return 0; - case ISD::ADD: - if (isInt16(v)) { Imm = v & 0xFFFF; return 1; } - if ((v & 0x0000FFFF) == 0) { Imm = v >> 16; return 2; } - break; - case ISD::AND: { - unsigned MB, ME; - if (isRunOfOnes(v, MB, ME)) { Imm = MB << 16 | ME & 0xFFFF; return 5; } - if (isUInt16(v)) { Imm = v & 0xFFFF; return 1; } - if ((v & 0x0000FFFF) == 0) { Imm = v >> 16; return 2; } - break; - } - case ISD::XOR: - case ISD::OR: - if (isUInt16(v)) { Imm = v & 0xFFFF; return 1; } - if ((v & 0x0000FFFF) == 0) { Imm = v >> 16; return 2; } - break; - case ISD::MUL: - if (isInt16(v)) { Imm = v & 0xFFFF; return 1; } - break; - case ISD::SUB: - // handle subtract-from separately from subtract, since subi is really addi - if (U && isInt16(v)) { Imm = v & 0xFFFF; return 1; } - if (!U && isInt16(-v)) { Imm = (-v) & 0xFFFF; return 1; } - break; - case ISD::SETCC: - if (U && isUInt16(v)) { Imm = v & 0xFFFF; return 1; } - if (!U && isInt16(v)) { Imm = v & 0xFFFF; return 1; } - break; - case ISD::SDIV: - if (isPowerOf2_32(v)) { Imm = Log2_32(v); return 3; } - if (isPowerOf2_32(-v)) { Imm = Log2_32(-v); return 3; } - if (v <= -2 || v >= 2) { return 4; } - break; - case ISD::UDIV: - if (v > 1) { return 4; } - break; - } - return 0; -} - /// NodeHasRecordingVariant - If SelectExpr can always produce code for /// NodeOpcode that also sets CR0 as a side effect, return true. Otherwise, /// return false. |