[llvm-commits] [llvm] r75198 - in /llvm/trunk/lib/Target/ARM: ARMInstrThumb.td AsmPrinter/ARMAsmPrinter.cpp
David Goodwin
david_goodwin at apple.com
Thu Jul 9 18:18:51 PDT 2009
IT is thumb-2, right?
David
On Jul 9, 2009, at 4:43 PM, Evan Cheng wrote:
> Author: evancheng
> Date: Thu Jul 9 18:43:36 2009
> New Revision: 75198
>
> URL: http://llvm.org/viewvc/llvm-project?rev=75198&view=rev
> Log:
> Added Thumb IT instruction.
>
> Modified:
> llvm/trunk/lib/Target/ARM/ARMInstrThumb.td
> llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
>
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb.td?rev=75198&r1=75197&r2=75198&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrThumb.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrThumb.td Thu Jul 9 18:43:36
> 2009
> @@ -66,6 +66,11 @@
> return CurDAG->getTargetConstant(V, MVT::i32);
> }]>;
>
> +// IT block condition mask
> +def it_mask : Operand<i32> {
> + let PrintMethod = "printThumbITMask";
> +}
> +
> // Define Thumb specific addressing modes.
>
> // t_addrmode_rr := reg + reg
> @@ -207,6 +212,10 @@
> def tBcc : T1I<(outs), (ins brtarget:$target, pred:$cc), "b$cc
> $target",
> [/*(ARMbrcond bb:$target, imm:$cc)*/]>;
>
> +// IT block
> +def tIT : TI<(outs), (ins pred:$cc, it_mask:$mask),
> + "it$mask $cc", []>;
> +
> //
> =
> =
> =
> ----------------------------------------------------------------------=
> ==//
> // Load Store Instructions.
> //
>
> Modified: llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp?rev=75198&r1=75197&r2=75198&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp Thu Jul
> 9 18:43:36 2009
> @@ -111,6 +111,7 @@
> const char *Modifier = 0);
> void printBitfieldInvMaskImmOperand (const MachineInstr *MI, int
> OpNum);
>
> + void printThumbITMask(const MachineInstr *MI, int OpNum);
> void printThumbAddrModeRROperand(const MachineInstr *MI, int
> OpNum);
> void printThumbAddrModeRI5Operand(const MachineInstr *MI, int
> OpNum,
> unsigned Scale);
> @@ -636,6 +637,21 @@
> //
> =
> =
> =--------------------------------------------------------------------
> ===//
>
> void
> +ARMAsmPrinter::printThumbITMask(const MachineInstr *MI, int Op) {
> + // (3 - the number of trailing zeros) is the number of then / else.
> + unsigned Mask = MI->getOperand(Op).getImm();
> + unsigned NumTZ = CountTrailingZeros_32(Mask);
> + assert(NumTZ <= 3 && "Invalid IT mask!");
> + for (unsigned Pos = 3, e = NumTZ; Pos >= e; --Pos) {
> + bool T = (Mask & (1 << Pos)) != 0;
> + if (T)
> + O << 't';
> + else
> + O << 'e';
> + }
> +}
> +
> +void
> ARMAsmPrinter::printThumbAddrModeRROperand(const MachineInstr *MI,
> int Op) {
> const MachineOperand &MO1 = MI->getOperand(Op);
> const MachineOperand &MO2 = MI->getOperand(Op+1);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list