From 75ff98e4d65862ff5b36b533b4f6e3ea71ede1d5 Mon Sep 17 00:00:00 2001 From: Tuowen Zhao Date: Sat, 17 Sep 2016 03:22:53 +0000 Subject: cmake build --- omegalib/examples/code_gen | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 omegalib/examples/code_gen (limited to 'omegalib/examples/code_gen') diff --git a/omegalib/examples/code_gen b/omegalib/examples/code_gen new file mode 100644 index 0000000..b3a0b4e --- /dev/null +++ b/omegalib/examples/code_gen @@ -0,0 +1,60 @@ +# Example taken from http://www.cloog.org +# + +r0:={[i,j]:i>=1 && j<=7 && j>=i-1}; +r1:={[i,j]:2<=i<=6 && 0<=j<=4}; + +# CLooG optimized for size +## +## for (i=1;i<=8;i++) { +## for (j=i-1;j<=7;j++) { +## S0(i,j); +## } +## if ((i>=2)&&(i<=6)) { +## for (j=0;j<=4;j++) { +## S1(i,j); +## } +## } +## } +## +## Since CLooG might not preserve the lexcicographical order other than +## the default code generation strategy (custom -f or -l values). Its +## generated code might not be correct should there exist reorder-preventing +## dependence among statements. +## + +# no overhead removal, minimal code size +codegen 0 r0,r1; + +# remove one-deep loop nest (innermost loop) overhead +codegen 1 r0,r1; + +# CLooG optimized for control +## +## for (t2=0;t2<=7;t2++) { +## S0(1,t2); +## } +## for (t1=2;t1<=6;t1++) { +## for (t2=0;t2<=t1-2;t2++) { +## S1(t1,t2); +## } +## for (t2=t1-1;t2<=4;t2++) { +## S0(t1,t2); +## S1(t1,t2); +## } +## for (t2=5;t2<=7;t2++) { +## S0(t1,t2); +## } +## } +## for (t1=7;t1<=8;t1++) { +## for (t2=t1-1;t2<=7;t2++) { +## S0(t1,t2); +## } +## } +## +## This is CLooG's default code generation strategy. It guarantees +## the lexicographical order as shown in input iteration spaces. +## + +# minimal control overhead, removing overhead from 2-deep loop nest +codegen 2 r0,r1; -- cgit v1.2.3-70-g09d2