[llvm-commits] [llvm] r98679 - in /llvm/trunk/lib/Target/ARM: ARMInstrInfo.td ARMInstrVFP.td

Bob Wilson bob.wilson at apple.com
Wed Mar 17 08:46:53 PDT 2010


These variants are already distinguished by IndexModeNone vs. IndexModeUpd.  Can you use that distinction to determine the writeback bit?

On Mar 16, 2010, at 2:25 PM, Johnny Chen wrote:

> Author: johnny
> Date: Tue Mar 16 16:25:05 2010
> New Revision: 98679
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=98679&view=rev
> Log:
> Disambiguate the *_UPD  and * variants by specifying the writeback flag as 1.
> This is for the disassembly work.
> 
> There are cases where this is not possible, for example, A8.6.53 LDM Encoding T1.
> In such case, we'll use an adhoc approach to deduce the Opcode programmatically.
> 
> Modified:
>    llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
>    llvm/trunk/lib/Target/ARM/ARMInstrVFP.td
> 
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=98679&r1=98678&r2=98679&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Tue Mar 16 16:25:05 2010
> @@ -1355,7 +1355,9 @@
>                                       reglist:$dsts, variable_ops),
>                      IndexModeUpd, LdStMulFrm, IIC_iLoadm,
>                      "ldm${addr:submode}${p}\t$addr!, $dsts",
> -                     "$addr.addr = $wb", []>;
> +                     "$addr.addr = $wb", []> {
> +  let Inst{21} = 1; // wback
> +}
> } // mayLoad, hasExtraDefRegAllocReq
> 
> let mayStore = 1, hasExtraSrcRegAllocReq = 1 in {
> @@ -1368,7 +1370,9 @@
>                                       reglist:$srcs, variable_ops),
>                      IndexModeUpd, LdStMulFrm, IIC_iStorem,
>                      "stm${addr:submode}${p}\t$addr!, $srcs",
> -                     "$addr.addr = $wb", []>;
> +                     "$addr.addr = $wb", []> {
> +  let Inst{21} = 1; // wback
> +}
> } // mayStore, hasExtraSrcRegAllocReq
> 
> //===----------------------------------------------------------------------===//
> 
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrVFP.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrVFP.td?rev=98679&r1=98678&r2=98679&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrVFP.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrVFP.td Tue Mar 16 16:25:05 2010
> @@ -96,6 +96,7 @@
>                       IndexModeUpd, IIC_fpLoadm,
>                       "vldm${addr:submode}${p}\t${addr:base}!, $dsts",
>                       "$addr.base = $wb", []> {
> +  let Inst{21} = 1; // wback
>   let Inst{20} = 1;
> }
> 
> @@ -104,6 +105,7 @@
>                       IndexModeUpd, IIC_fpLoadm, 
>                       "vldm${addr:submode}${p}\t${addr:base}!, $dsts",
>                       "$addr.base = $wb", []> {
> +  let Inst{21} = 1; // wback
>   let Inst{20} = 1;
> }
> } // mayLoad, hasExtraDefRegAllocReq
> @@ -126,6 +128,7 @@
>                       IndexModeUpd, IIC_fpStorem,
>                       "vstm${addr:submode}${p}\t${addr:base}!, $srcs",
>                       "$addr.base = $wb", []> {
> +  let Inst{21} = 1; // wback
>   let Inst{20} = 0;
> }
> 
> @@ -134,6 +137,7 @@
>                       IndexModeUpd, IIC_fpStorem,
>                       "vstm${addr:submode}${p}\t${addr:base}!, $srcs",
>                       "$addr.base = $wb", []> {
> +  let Inst{21} = 1; // wback
>   let Inst{20} = 0;
> }
> } // mayStore, hasExtraSrcRegAllocReq
> 
> 
> _______________________________________________
> 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