Changes in directory llvm/lib/Target/ARM:
ARMInstrInfo.td updated: 1.52 -> 1.53 --- Log message: define the IntBinOp class and use it to implement the multiply instructions --- Diffs of the changes: (+13 -12) ARMInstrInfo.td | 25 +++++++++++++------------ 1 files changed, 13 insertions(+), 12 deletions(-) Index: llvm/lib/Target/ARM/ARMInstrInfo.td diff -u llvm/lib/Target/ARM/ARMInstrInfo.td:1.52 llvm/lib/Target/ARM/ARMInstrInfo.td:1.53 --- llvm/lib/Target/ARM/ARMInstrInfo.td:1.52 Mon Oct 16 12:38:12 2006 +++ llvm/lib/Target/ARM/ARMInstrInfo.td Mon Oct 16 12:57:20 2006 @@ -36,9 +36,8 @@ //def raddr : ComplexPattern<iPTR, 2, "SelectAddrRegReg", [], []>; //===----------------------------------------------------------------------===// -// Instructions +// Instruction Class Templates //===----------------------------------------------------------------------===// - class InstARM<dag ops, string asmstr, list<dag> pattern> : Instruction { let Namespace = "ARM"; @@ -47,6 +46,15 @@ let Pattern = pattern; } +class IntBinOp<string OpcStr, SDNode OpNode> : + InstARM<(ops IntRegs:$dst, IntRegs:$a, IntRegs:$b), + !strconcat(OpcStr, " $dst, $a, $b"), + [(set IntRegs:$dst, (OpNode IntRegs:$a, IntRegs:$b))]>; + +//===----------------------------------------------------------------------===// +// Instructions +//===----------------------------------------------------------------------===// + def brtarget : Operand<OtherVT>; // Operand for printing out a condition code. @@ -186,18 +194,11 @@ IntRegs:$false, imm:$cc))]>; } -def MUL : InstARM<(ops IntRegs:$dst, IntRegs:$a, IntRegs:$b), - "mul $dst, $a, $b", - [(set IntRegs:$dst, (mul IntRegs:$a, IntRegs:$b))]>; +def MUL : IntBinOp<"mul", mul>; let Defs = [R0] in { - def SMULL : InstARM<(ops IntRegs:$dst, IntRegs:$a, IntRegs:$b), - "smull r12, $dst, $a, $b", - [(set IntRegs:$dst, (mulhs IntRegs:$a, IntRegs:$b))]>; - - def UMULL : InstARM<(ops IntRegs:$dst, IntRegs:$a, IntRegs:$b), - "umull r12, $dst, $a, $b", - [(set IntRegs:$dst, (mulhu IntRegs:$a, IntRegs:$b))]>; + def SMULL : IntBinOp<"smull r12,", mulhs>; + def UMULL : IntBinOp<"umull r12,", mulhu>; } def bcond : InstARM<(ops brtarget:$dst, CCOp:$cc), _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits