[LLVMdev] Loop-Unroll optimization

Manish Gupta mgupta.iitr at gmail.com
Tue May 3 16:50:57 PDT 2011


Even after all the sequence of commands below bit-code is not showing any
effect of loop-unrolling

*manish at manish:~/Test2$ llvm-gcc-4.2 -O2 -emit-llvm Hello.c -c -o Hello.bc*
*manish at manish:~/Test2$ opt-2.8 -loops Hello.bc -o Hello1.bc*
*manish at manish:~/Test2$ opt-2.8 -loopsimplify Hello1.bc -o Hello2.bc*
*manish at manish:~/Test2$ opt-2.8 -indvars Hello2.bc -o Hello3.bc*
*manish at manish:~/Test2$ opt-2.8 -loop-unroll Hello3.bc -o Hello4.bc*
*manish at manish:~/Test2$ llvm-dis-2.8 Hello4.bc*

My *Hello.c* looks like:
  for(i=0; i< 1000; i++)
    {
      c[i] = a[i] + b[i];
    }

  printf("%d\n", c[999]);
-------------------------------------------------

and bit-code in *Hello4.bc*
bb3:                                              ; preds = %bb3,
%bb3.preheader
  %i.17 = phi i32 [ %5, %bb3 ], [ 0, %bb3.preheader ]
  %scevgep11 = getelementptr [1000 x i32]* %b, i32 0, i32 %i.17
  %scevgep10 = getelementptr [1000 x i32]* %a, i32 0, i32 %i.17
  %scevgep = getelementptr [1000 x i32]* %c, i32 0, i32 %i.17
  %2 = load i32* %scevgep10, align 4
  %3 = load i32* %scevgep11, align 4
  %4 = add nsw i32 %3, %2
  store i32 %4, i32* %scevgep, align 4
  %5 = add nsw i32 %i.17, 1
  %exitcond1 = icmp eq i32 %5, 1000
  br i1 %exitcond1, label %bb5, label %bb3

-----------------------------------------

On Tue, May 3, 2011 at 12:32 PM, Arushi Aggarwal <arushi987 at gmail.com>wrote:

> Hi,
>
> You might want to try running -loops -loop-simplify before loop unroll.
>
> From loop simplify.cpp
>
> This pass performs several transformations to transform natural loops into a00011 // simpler form, which makes subsequent analyses and transformations simpler and00012 // more effective.
>
>
> Arushi
>
> On Tue, May 3, 2011 at 2:17 PM, Manish Gupta <mgupta.iitr at gmail.com>wrote:
>
>> You mean like
>>
>> *llvm-gcc-4.2 -O2 -emit-llvm Hello.c -c -o Hello.bc*
>>
>> But still i am not able to observe any effect on bit code by running
>>
>> *opt-2.8 -loop-unroll Hello.bc -o Hello_unroll.bc*
>>
>> On Tue, May 3, 2011 at 3:58 AM, Zakk <zakk0610 at gmail.com> wrote:
>>
>>> Hi, you need to run some optimization passes first. (like -O2)
>>>
>>> 2011/5/3 Manish Gupta <mgupta.iitr at gmail.com>
>>>
>>>> I just want to try loop-unroll and see corresponding changes in the
>>>> bitcode file. For that any loop will do. Have you been able to test llvm
>>>> loop-unroll successfully?
>>>>
>>>>
>>>> On Mon, May 2, 2011 at 10:04 PM, Yuan Pengfei <coolypf at qq.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> > The loop that I am trying it on is:
>>>>> > for(i=0; i< 1000; i++)
>>>>> > {
>>>>> > c[i] = a[i] + b[i];
>>>>> > }
>>>>>
>>>>> I can't find any benefit unrolling this loop.
>>>>>
>>>>> ------------------
>>>>> Yuan Pengfei
>>>>> Peking Unversity, China
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Kuan-Hsu
>>>
>>>
>>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110503/f7404dd5/attachment.html>


More information about the llvm-dev mailing list