[llvm-commits] [llvm] r96063 - /llvm/trunk/lib/Target/ARM/ARMInstrInfo.td

Johnny Chen johnny.chen at apple.com
Sat Feb 13 13:56:36 PST 2010


Will do.  Thanks.

Sent from my iPhone
陳嘉鴻

On Feb 13, 2010, at 9:12 AM, Bob Wilson <bob.wilson at apple.com> wrote:

> Johnny,
>
> Can you please factor these with some classes and/or multiclasses?   
> There is a lot of repetition here.  It will be easier to read and  
> maintain these patterns if the common parts are factored out.
>
> On Feb 12, 2010, at 5:21 PM, Johnny Chen wrote:
>
>> Author: johnny
>> Date: Fri Feb 12 19:21:01 2010
>> New Revision: 96063
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=96063&view=rev
>> Log:
>> Added a bunch of saturating add/subtract instructions for  
>> disassembly only.
>>
>> Modified:
>>   llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=96063&r1=96062&r2=96063&view=diff
>>
>> === 
>> === 
>> === 
>> =====================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Fri Feb 12 19:21:01  
>> 2010
>> @@ -1330,6 +1330,78 @@
>> // (mul X, 2^n+1) -> (add (X << n), X)
>> // (mul X, 2^n-1) -> (rsb X, (X << n))
>>
>> +// Saturating adds/subtracts -- for disassembly only
>> +
>> +class AQI<bits<8> op27_20, bits<4> op7_4, dag oops, dag iops,  
>> Format f,
>> +          InstrItinClass itin, string opc, string asm, list<dag>  
>> pattern>
>> +  : AI<oops, iops, f, itin, opc, asm, pattern> {
>> +  let Inst{27-20} = op27_20;
>> +  let Inst{7-4} = op7_4;
>> +}
>> +
>> +def QADD : AQI<0b00010000, 0b0101, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qadd", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QADD16 : AQI<0b01100010, 0b0001,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qadd16", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QADD8 : AQI<0b01100010, 0b1001, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qadd8", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QASX : AQI<0b01100010, 0b0011, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qasx", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QDADD : AQI<0b00010100, 0b0101,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qdadd", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QDSUB : AQI<0b00010110, 0b0101,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qdsub", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QSAX : AQI<0b01100010, 0b0101, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qsax", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QSUB : AQI<0b00010010, 0b0101, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qsub", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QSUB16 : AQI<0b01100010, 0b0111,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qsub16", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def QSUB8 : AQI<0b01100010, 0b1111,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "qsub8", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def UQADD16 : AQI<0b01100110, 0b0001,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b),DPFrm,
>> +               IIC_iALUr, "uqadd16", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def UQADD8 : AQI<0b01100110, 0b1001,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "uqadd8", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def UQASX : AQI<0b01100110, 0b0011, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "uqasx", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def UQSAX : AQI<0b01100110, 0b0101, (outs GPR:$dst), (ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "uqsax", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def UQSUB16 : AQI<0b01100110, 0b0111,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b),DPFrm,
>> +               IIC_iALUr, "uqsub16", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>> +
>> +def UQSUB8 : AQI<0b01100110, 0b1111,(outs GPR:$dst),(ins GPR:$a,  
>> GPR:$b), DPFrm,
>> +               IIC_iALUr, "uqsub8", "\t$dst, $a, $b",
>> +               [/* For disassembly only; pattern left blank */]>;
>>
>> // 
>> === 
>> --- 
>> ------------------------------------------------------------------- 
>> ===//
>> //  Bitwise Instructions.
>>
>>
>> _______________________________________________
>> 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