[llvm-commits] [llvm] r141607 - /llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll

Ana Pazos apazos at codeaurora.org
Tue Oct 11 00:20:20 PDT 2011


Thanks, Bill.

Great to know that setting -mattr=+thumb2 suffices. 

Ana.

-----Original Message-----
From: Bill Wendling [mailto:isanbard at gmail.com] 
Sent: Monday, October 10, 2011 9:46 PM
To: Ana Pazos
Cc: llvm-commits at cs.uiuc.edu; 'Anton Korobeynikov'; rajav at codeaurora.org
Subject: Re: [llvm-commits] [llvm] r141607 -
/llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll

Hi Ana,

I went ahead and submitted the simplification. Thanks! It looks like it runs
the IT blocks pass if you specify -march=thumb -mattr=+thumb2. :-)

-bw

On Oct 10, 2011, at 7:37 PM, Ana Pazos wrote:

> Bill,
> 
> So the ABS optimization exposed an issue in the if-conversion pass for
Thumb
> mode.
> 
> I think your regression test can be further simplified. Just the back to
> back abs part is needed and some final instruction that uses the abs
values
> (like return the addition of the abs values).
> 
> define i32 @test(i32 %a, i32 %b) {
>  %cmp1 = icmp slt i32 %a, 0
>  %sub1 = sub nsw i32 0, %a
>  %abs1 = select i1 %cmp1, i32 %sub1, i32 %a
>  %cmp2 = icmp slt i32 %b, 0
>  %sub2 = sub nsw i32 0, %b
>  %abs2 = select i1 %cmp2, i32 %sub2, i32 %b
>  %add = add nsw i32 %abs1, %abs2
>  ret i32 %add
> 
> Shouldn't it be a test to be run for Thumb mode no matter -mtriple
> specified?
> 
> I mean, run 'llc -march=thumb' turning on the if-converter pass.
> 
> I tried running 'llc -O3 -march=thumb' but it does not include
if-converter
> on ARM.
> 
> Is there a way to invoke llc and tell it to run the if-converter pass?
> 
> Thanks,
> Ana.
> 
> 
> 
> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu
> [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Bill Wendling
> Sent: Monday, October 10, 2011 5:27 PM
> To: llvm-commits at cs.uiuc.edu
> Subject: [llvm-commits] [llvm] r141607 -
> /llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll
> 
> Author: void
> Date: Mon Oct 10 19:26:57 2011
> New Revision: 141607
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=141607&view=rev
> Log:
> Add testcase for PR11107.
> 
> Added:
>    llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll
> 
> Added: llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll
> URL:
>
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/thumb2-it-bl
> ock.ll?rev=141607&view=auto
>
============================================================================
> ==
> --- llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll (added)
> +++ llvm/trunk/test/CodeGen/ARM/thumb2-it-block.ll Mon Oct 10 19:26:57
2011
> @@ -0,0 +1,49 @@
> +; RUN: llc < %s -mtriple thumbv7-apple-ios5.0.0 | FileCheck %s
> +; PR11107
> +
> +%struct.huffcodetab = type { i32, i32, i32*, i8* }
> +
> + at ht = external global [34 x %struct.huffcodetab]
> +
> +define i32 @func(i32 %table_select, i32 %x, i32 %y, i32* %code) nounwind
{
> +entry:
> +; CHECK:      BB#0:
> +; CHECK:        movs.w
> +; CHECK-NEXT:   it    mi
> +; CHECK-NEXT:   rsbmi
> +; CHECK-NEXT:   movs.w
> +; CHECK-NEXT:   it    mi
> +; CHECK-NEXT:   rsbmi
> +  %cmp.i = icmp sgt i32 %x, 0
> +  %mul.i = sub i32 0, %x
> +  %mul.i6 = select i1 %cmp.i, i32 %x, i32 %mul.i
> +  %tmp = select i1 %cmp.i, i32 0, i32 1
> +  %cmp.i1 = icmp sgt i32 %y, 0
> +  %mul.i3 = sub i32 0, %y
> +  %mul.i38 = select i1 %cmp.i1, i32 %y, i32 %mul.i3
> +  br label %if.then3
> +
> +if.then3:                                         ; preds = %if.end
> +  %xlen = getelementptr inbounds [34 x %struct.huffcodetab]* @ht, i32 0,
> i32 %table_select, i32 0
> +  %tmp2 = load i32* %xlen, align 4, !tbaa !0
> +  %sub = add nsw i32 %mul.i6, -15
> +  %cmp4 = icmp sgt i32 %mul.i6, 14
> +  %mul.i7 = select i1 %cmp4, i32 15, i32 %mul.i6
> +  %sub9 = add nsw i32 %mul.i38, -15
> +  %cmp7 = icmp sgt i32 %mul.i38, 14
> +  %mul.i39 = select i1 %cmp7, i32 15, i32 %mul.i38
> +  %mul = shl nsw i32 %mul.i7, 4
> +  %add = add nsw i32 %mul, %mul.i39
> +  %table = getelementptr inbounds [34 x %struct.huffcodetab]* @ht, i32 0,
> i32 %table_select, i32 2
> +  %tmp3 = load i32** %table, align 4, !tbaa !3
> +  %arrayidx11 = getelementptr inbounds i32* %tmp3, i32 %add
> +  %tmp4 = load i32* %arrayidx11, align 4, !tbaa !4
> +  store i32 %tmp4, i32* %code, align 4, !tbaa !0
> +  ret i32 42
> +}
> +
> +!0 = metadata !{metadata !"int", metadata !1}
> +!1 = metadata !{metadata !"omnipotent char", metadata !2}
> +!2 = metadata !{metadata !"Simple C/C++ TBAA", null}
> +!3 = metadata !{metadata !"any pointer", metadata !1}
> +!4 = metadata !{metadata !"long", metadata !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