[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