[llvm-dev] How to use the pass 'Unroll and Jam'

ZHEN WEI via llvm-dev llvm-dev at lists.llvm.org
Thu Apr 25 02:22:19 PDT 2019


Hi Das,

Thanks for your reply! I have received similar responses from @LebedevRI on
the IRC.

After I modified the arguments for opt as the following, my loops can be
unroll-and-jam successfully:
-loop-unroll-and-jam -allow-unroll-and-jam -unroll-and-jam-count=2

'loop-unroll-and-jam' and 'allow-unroll-and-jam' are both needed to turn on
the functionality.

Thanks again. Have a nice day.

Das, Dibyendu <Dibyendu.Das at amd.com> 於 2019年4月25日 週四 下午4:24寫道:

> Try the combo:
>
>
>
> -enable-unroll-and-jam -allow-unroll-and-jam -unroll-and-jam-count=4
>
>
>
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> *On Behalf Of *ZHEN
> WEI via llvm-dev
> *Sent:* Thursday, April 25, 2019 12:13 PM
> *To:* llvm-dev at lists.llvm.org
> *Subject:* [llvm-dev] How to use the pass 'Unroll and Jam'
>
>
>
> Dear LLVM developers,
>
>
>
> Recently I want to try the pass '-loop-unroll-and-jam' to observe how the
> IR is transformed, but I don't see the IR changed after doing the following
> steps.
>
>
>
> Here are the details for preparing my experiment and I have tried the LLVM
> 6, 7 and 8:
>
> 1) Simple 2D array source code (loop.c) is given
>
>
>
> ```
>
> #define M 32768
>
> #define N 32768
>
>
>
> double a[M][N], b[M][N], c[M][N];
>
>
>
> int main() {
>
>     for (int i = 0; i < M; i++) {
>
>         for (int j = 0; j < N; j++) {
>
>             c[i][j] = a[i][j] + b[i][j];
>
>         }
>
>     }
>
>     return 0;
>
> }
>
> ```
>
> 2) Create an LLVM IR file
>
> ./bin/clang -O1 loop.c -emit-llvm -S -o loop.ll
>
>
>
> 3) Run the 'unroll-and-jam' pass
>
> ./bin/opt -loop-unroll-and-jam loop.ll -S -o loop-unrolljam.ll
>
>
>
> I added the option '--debug-pass=Structure' to the opt, and I can see the
> 'Unroll and Jam loops' indeed executed by the Loop Pass Manager.
>
> ```
>
>    ModulePass Manager
>        FunctionPass Manager
>         Dominator Tree Construction
>         Basic Alias Analysis (stateless AA impl)
>         Function Alias Analysis Results
>         Natural Loop Information
>         Scalar Evolution Analysis
>         Dependence Analysis
>         Canonicalize natural loops
>         LCSSA Verifier
>         Loop-Closed SSA Form Pass
>         Loop Pass Manager
>           Unroll and Jam loops
>         Module Verifier
>        Print Module IR
>
> ```
>
>
>
> I also tried to add the option '-debug' to the opt to see if there is the
> debug information printed by LoopUnrollAndJam, but nothing.
>
>
>
> Thank you very much.
>
> --
>
> Zhen Wei (魏禛)
> Master Student
> Department of Computer Science & Information  Engineering
> National Taiwan University
> Email:  zhenwei.tw at gmail.com
>


-- 
Zhen Wei (魏禛)
Master Student
Department of Computer Science & Information  Engineering
National Taiwan University
Email:  zhenwei.tw at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190425/c16b2b7e/attachment.html>


More information about the llvm-dev mailing list