
Go to the source code of this file.
Defines | |
| #define | sxlimit_INCLUDED "sxlimit.h" |
Functions/Subroutines | |
| WN * | SE_Tile_Inner_Loop (WN *loop, MEM_POOL *pool) |
| void | SE_New_Tile_Infos (WN *wn_outer, SX_PLIST *plist, INT permutation[], INT nloops, MEM_POOL *pool, SNL_TILE_INFO **ti_se, BOOL full_dist) |
| void | SE_CT_New_Tile_Infos (WN *wn_outer, SX_PLIST *plist, SNL_TILE_INFO *ti, INT permutation[], INT nloops, MEM_POOL *pool, SNL_TILE_INFO **ti_se, SNL_TILE_INFO **ti_ct, BOOL full_dist) |
| WN * | SNL_INV_Limited_SE_And_Dist (WN *wn_outer, SNL_TILE_INFO *ti_se, INT permutation[], INT nloops, SX_PLIST *plist, BOOL full_dist) |
| void SE_CT_New_Tile_Infos | ( | WN * | wn_outer, | |
| SX_PLIST * | plist, | |||
| SNL_TILE_INFO * | ti, | |||
| INT | permutation[], | |||
| INT | nloops, | |||
| MEM_POOL * | pool, | |||
| SNL_TILE_INFO ** | ti_se, | |||
| SNL_TILE_INFO ** | ti_ct, | |||
| BOOL | full_dist | |||
| ) |
Definition at line 254 of file sxlimit.cxx.
References alloca, BOOL, STACK< T >::Bottom_nth(), Build_Doloop_Stack(), cache_size, CXX_NEW, Do_Loop_Depth(), DO_LOOP_INFO::Est_Max_Iterations_Index, DO_LOOP_INFO::Est_Num_Iterations, FALSE, CHAIN_ITER::First(), FmtAssert, Get_Do_Loop_Info(), i, ii, SNL_TILE_INFO::Iloop(), INT, CHAIN_ITER::Is_Empty(), LNO_local_pool, lvl, CHAIN_ITER::Next(), NULL, Num_Cache_Strips, DO_LOOP_INFO::Num_Iterations_Symbolic, SNL_TILE_INFO::Rectangular(), Scalar_Expansion_Tile(), SX_PNODE::SE_NOT_REQD, SNL_Get_Inner_Snl_Loop(), SNL_INV_Add_Tile(), SNL_INV_Compute_Tile_Size(), SNL_INV_Get_Tile_Size(), SNL_INV_Remove_Tile(), SNL_INV_SE_ONLY, SNL_INV_TILE_SE, SNL_INV_UNDEFINED, SNL_INV_Update_Tile(), SNL_MAX_LOOPS, stack, SNL_TILE_INFO::Striplevel(), SNL_TILE_INFO::Strips(), SNL_TILE_INFO::Stripsz(), and TRUE.
Referenced by SE_New_Tile_Infos(), and SNL_INV_Limited_Scalar_Expand_And_Distribute().
| void SE_New_Tile_Infos | ( | WN * | wn_outer, | |
| SX_PLIST * | plist, | |||
| INT | permutation[], | |||
| INT | nloops, | |||
| MEM_POOL * | pool, | |||
| SNL_TILE_INFO ** | ti_se, | |||
| BOOL | full_dist | |||
| ) |
Definition at line 392 of file sxlimit.cxx.
References FmtAssert, NULL, and SE_CT_New_Tile_Infos().
Referenced by WBTR_SNL_INV_Limited_SE_And_Dist().
SXLIMIT implements limited tile size scalar expansion and distri- bution on invariant innermost SNLs.
NOTE:
In the functions below, the argument 'full_dist' is TRUE if the scalar expansion is being provided to transform a SNL into a perfect nest via distribution, FALSE if the scalar expansion is being provided only to enable the permutation.
WN* SE_Tile_Inner_Loop(WN* loop, MEM_POOL *pool)
Tile the 'loop' for scalar expansion, given that temporary memory is allocated out of 'pool'. The outer tile loop immediately encloses 'loop' when we are finished, and its value is returned.
void SE_New_Tile_Infos(WN* wn_outer, SX_PLIST* plist, INT permutation[], INT nloops, MEM_POOL* pool, SNL_TILE_INFO **ti_se, BOOL full_dist)
For the SNL 'wn_outer' to which we are applying a 'permutation' of 'nloops' loops and list of expandable scalars 'plist', compute a SNL_TILE_INFO 'ti_se' to describe the limited scalar expansion tiling which must be performed on it.
void SE_CT_New_Tile_Infos(WN* wn_outer, SX_PLIST* plist, SNL_TILE_INFO *ti, INT permutation[], INT nloops, MEM_POOL* pool, SNL_TILE_INFO **ti_se, SNL_TILE_INFO **ti_ct, BOOL full_dist)
Given the SNL 'wn_outer' of 'nloops' loops to which we are applying the 'permutation' of length 'nloops', and which originally had a cache tiling info of 'ti', compute the new cache tiling info ti_ct' and the new scalar expansion tiling info 'ti_se' which will result in fixed-size scalar expansion tiles for the SNL 'wn_outer' with scalar expansion variable list 'plist'.
WN* SNL_INV_Limited_SE_And_Dist(WN* wn_outer, SNL_TILE_INFO* ti_se, INT permutation[], INT nloops, SX_PLIST* plist, BOOL full_dist)
For the innermost SNL 'wn_outer' of 'nloops' loops, tile it for scalar expansion and distribute the loops according to the infor- mation in 'ti_se'. The 'plist' is a list of expandable scalars made by calling SX_INFO::Make_Sx_Info(). Subscripts in the scalar expanded array are made to correspond to the 'permutation' of length 'nloops'.
Definition at line 121 of file sxlimit.cxx.
References NULL, Scalar_Expansion_Tile(), SNL_INV_Compute_Tile_Size(), SNL_INV_SE_ONLY, Tile_Loop(), TRUE, Upper_Bound_Standardize(), and WN_end.
Referenced by Perform_Gather_Scatter(), separate_loop_and_scalar_expand(), and vintr_fis_separate_loop_and_scalar_expand().
| WN* SNL_INV_Limited_SE_And_Dist | ( | WN * | wn_outer, | |
| SNL_TILE_INFO * | ti_se, | |||
| INT | permutation[], | |||
| INT | nloops, | |||
| SX_PLIST * | plist, | |||
| BOOL | full_dist | |||
| ) |
Definition at line 756 of file sxlimit.cxx.
References alloca, Build_Doloop_Stack(), CXX_NEW_ARRAY, Do_Loop_Depth(), FALSE, INT, LNO_local_pool, NULL, SE_Guard_Depth(), SE_Guard_Tests(), SNL_Get_Inner_Snl_Loop(), SNL_INV_Compact_Scalar_Expand(), SNL_INV_Scalar_Expand_Tile(), SNL_INV_SE_Distribute(), and SNL_TILE_INFO::Strips().
Referenced by SNL_INV_Limited_Scalar_Expand_And_Distribute(), and WBTR_SNL_INV_Limited_SE_And_Dist().
1.5.6