[llvm-commits] [llvm] r73746 - in /llvm/trunk: lib/Target/ARM/ARMInstrThumb.td test/CodeGen/ARM/2009-06-18-ThumbCommuteMul.ll

Evan Cheng evan.cheng at apple.com
Thu Jun 18 23:52:26 PDT 2009


On Jun 18, 2009, at 6:43 PM, Eli Friedman wrote:

> Author: efriedma
> Date: Thu Jun 18 20:43:08 2009
> New Revision: 73746
>
> URL: http://llvm.org/viewvc/llvm-project?rev=73746&view=rev
> Log:
> Mark a few Thumb instructions commutable; just happened to spot this
> while experimenting.  I'm reasonably sure this is correct, but please
> tell me if these instructions have some strange property which makes  
> this
> change unsafe.

It's right. Looks like we are missing the isCommutable markers on the  
ARM side as well.

Evan

>
>
>
> Added:
>    llvm/trunk/test/CodeGen/ARM/2009-06-18-ThumbCommuteMul.ll
> Modified:
>    llvm/trunk/lib/Target/ARM/ARMInstrThumb.td
>
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb.td?rev=73746&r1=73745&r2=73746&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrThumb.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrThumb.td Thu Jun 18 20:43:08  
> 2009
> @@ -277,6 +277,7 @@
> //
>
> // Add with carry
> +let isCommutable = 1 in
> def tADC : TIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs),
>                "adc $dst, $rhs",
>                [(set tGPR:$dst, (adde tGPR:$lhs, tGPR:$rhs))]>;
> @@ -311,6 +312,7 @@
> def tADDspi : TIt<(outs GPR:$dst), (ins GPR:$lhs, i32imm:$rhs),
>                   "add $dst, $rhs * 4", []>;
>
> +let isCommutable = 1 in
> def tAND : TIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs),
>                 "and $dst, $rhs",
>                 [(set tGPR:$dst, (and tGPR:$lhs, tGPR:$rhs))]>;
> @@ -358,6 +360,7 @@
>
> // TODO: A7-37: CMP(3) - cmp hi regs
>
> +let isCommutable = 1 in
> def tEOR : TIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs),
>                "eor $dst, $rhs",
>                [(set tGPR:$dst, (xor tGPR:$lhs, tGPR:$rhs))]>;
> @@ -399,6 +402,7 @@
>                       "cpy $dst, $src\t@ hir2hir", []>;
> } // neverHasSideEffects
>
> +let isCommutable = 1 in
> def tMUL : TIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs),
>                "mul $dst, $rhs",
>                [(set tGPR:$dst, (mul tGPR:$lhs, tGPR:$rhs))]>;
> @@ -411,6 +415,7 @@
>               "neg $dst, $src",
>               [(set tGPR:$dst, (ineg tGPR:$src))]>;
>
> +let isCommutable = 1 in
> def tORR : TIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs),
>                "orr $dst, $rhs",
>                [(set tGPR:$dst, (or tGPR:$lhs, tGPR:$rhs))]>;
>
> Added: llvm/trunk/test/CodeGen/ARM/2009-06-18-ThumbCommuteMul.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2009-06-18-ThumbCommuteMul.ll?rev=73746&view=auto
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/test/CodeGen/ARM/2009-06-18-ThumbCommuteMul.ll (added)
> +++ llvm/trunk/test/CodeGen/ARM/2009-06-18-ThumbCommuteMul.ll Thu  
> Jun 18 20:43:08 2009
> @@ -0,0 +1,8 @@
> +; RUN: llvm-as < %s | llc -march=thumb | grep r0 | count 1
> +
> +define i32 @a(i32 %x, i32 %y) nounwind readnone {
> +entry:
> +	%mul = mul i32 %y, %x		; <i32> [#uses=1]
> +	ret i32 %mul
> +}
> +
>
>
> _______________________________________________
> 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