GCC Middle and Back End API Reference
|
Functions | |
static void | pbb_strip_mine_time_depth () |
static bool | lst_strip_mine_profitable_p () |
static int | lst_do_strip_mine_loop () |
static int | lst_do_strip_mine () |
int | scop_do_strip_mine () |
bool | scop_do_block () |
|
static |
Strip-mines all the loops of LST with STRIDE. When STRIDE is zero, read the stride from the PARAM_LOOP_BLOCK_TILE_SIZE. Return the number of strip-mined loops. Strip mining transforms a loop | for (i = 0; i < N; i++) | S (i); into the following loop nest: | for (k = 0; k < N; k += STRIDE) | for (j = 0; j < STRIDE; j++) | S (i = k + j);
References lst_add_loop_under_loop(), lst_depth(), lst_do_strip_mine_loop(), and lst_strip_mine_profitable_p().
Referenced by scop_do_block(), and scop_do_strip_mine().
|
static |
Strip-mines all the loops of LST with STRIDE. Return the number of loops strip-mined.
References pbb_strip_mine_time_depth(), and psct_dynamic_dim().
Referenced by lst_do_strip_mine().
|
static |
Returns true when strip mining with STRIDE of the loop LST is profitable.
References lst_niter_for_loop().
Referenced by lst_do_strip_mine().
|
static |
@verbatim Heuristics and transform for loop blocking and strip mining on
polyhedral representation.
Copyright (C) 2009-2013 Free Software Foundation, Inc. Contributed by Sebastian Pop sebas and Pranav Garg tian .pop@ amd. comprana. v.ga rg210 7@gm ail.c om
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.
Strip mines with a factor STRIDE the scattering (time) dimension around PBB at depth TIME_DEPTH. The following example comes from the wiki page: http://gcc.gnu.org/wiki/Graphite/Strip_mine The strip mine of a loop with a tile of 64 can be obtained with a scattering function as follows: $ cat ./albert_strip_mine.cloog # language: C c # parameter {n | n >= 0} 1 3 # n 1 1 1 0 1 n 1 # Number of statements: 1 # {i | 0 <= i <= n} 2 4 # i n 1 1 1 0 0 1 -1 1 0 0 0 0 1 i 1 # Scattering functions 3 6 # NEW OLD i n 1 1 -64 0 1 0 0 1 64 0 -1 0 63 0 0 1 -1 0 0 1 NEW OLD #the output of CLooG is like this: #$ cloog ./albert_strip_mine.cloog # for (NEW=0;NEW<=floord(n,64);NEW++) { # for (OLD=max(64*NEW,0);OLD<=min(64*NEW+63,n);OLD++) { # S1(i = OLD) ; # } # }
References poly_bb::transformed.
Referenced by lst_do_strip_mine_loop().
bool scop_do_block | ( | ) |
Loop blocks all the loops in SCOP. Returns true when we manage to block some loops.
References dump_file, dump_flags, lst_do_strip_mine(), restore_scattering(), scop_do_interchange(), and store_scattering().
Referenced by apply_poly_transforms().
int scop_do_strip_mine | ( | ) |
Strip mines all the loops in SCOP. Returns the number of strip-mined loops.
References lst_do_strip_mine().
Referenced by apply_poly_transforms().