[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