[llvm-commits] [llvm] r75198 - in /llvm/trunk/lib/Target/ARM: ARMInstrThumb.td AsmPrinter/ARMAsmPrinter.cpp

Evan Cheng evan.cheng at apple.com
Thu Jul 9 18:42:52 PDT 2009


Yes, I am fixing it now.

Evan

On Jul 9, 2009, at 6:18 PM, David Goodwin wrote:

> 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