Initial commit
[gcc-perf-regression-tester.git] / bmks / polykernels1 / ssyrk.poly
blob86afa6e62ee27ca657b4d908f908b65870d4370c
1 # Script to optimize SSYRK
2 PT_addcontext({ 
3         {1,-64},
4         {0,1}})
5 dumpcode ssyrk_Initial
7 #loop interchange
8 PT_unimodular({0},
9                         {{0,1,0},
10                          {0,0,1},
11                          {1,0,0}})
12 dumpcode Interchange.1
14 # =================================================
15 # Two level of tiling
16 # Tile for cache
17 PT_tile3d({0}, 1,2,3, 51,52,50)
18 dumpcode afterCacheTile
19 # Now we have jcT, kcT, icT, j, k, i
20 #              1    2    3   4  5  6 
22 # Tile for registers 
23 PT_tile3d({0}, 4,5,6, 3,4,50)
24 dumpcode ssyrk.afterRegTile
25 # Now we have jcT, kcT, icT, jrT, krT, irT, j, k, i
26 #              1    2    3    4    5    6   7  8  9  
29 PT_interchangebystmt(1,8,9)
30 dumpcode interchange.2
31 # Now we have jcT, kcT, icT, jrT, krT, irT, j, i, k
32 #              1    2    3    4    5    6   7  8  9  
34 PT_interchangebystmt(1,7,8)
35 dumpcode interchange.3
36 # Now we have jcT, kcT, icT, jrT, krT, irT, i, j, k
37 #              1    2    3    4    5    6   7  8  9  
39 # Compute dependences without ADA and RAR
40 #PT_depcompute(0,0,0,0)
41 #PT_depcheck()
43 # Detect parallel loops
44 CG_codegenopt(markparallel, {{0}}, 0, BMT_exact)
45 #CG_codegenopt(detectparallelism, {{0}}, BMT_exact)
46 dumpcode ssyrk.final
48 # NOTE: outer-tile sizes should be a multiple of inner-tile sizes.
49 CG_codegenopt(insetsplitandunrollwithtrans, {{0,0,0,0,0,0,0}}, {7,8,9}, {6,4,5}, {50,3,4}, 2, {{0,1,0}, {0,0,1}, {1,0,0}}, BMT_exact)
50 dumpcode ssyrkInset