osprey/be/lno/snl_utils.h File Reference

#include "snl_xbounds.h"
#include "mat.h"

Include dependency graph for snl_utils.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Types

type  SNL_REGION
module  SNL_TILE_INFO
module  SNL_TRANS_INDEX_DATA
type  SNL_TRANS_INDEX_DATA::TDATA
type  SNL_TRANS_INDEX_DATA::IDATA
type  SNL_TRANS_INDEX_DATA::ODATA

Defines

#define snl_utils_INCLUDED   "snl_utils.h"
#define UCTILE_T   0x1
#define UCTILE_I   0x2
#define UCTILE_O   0x4
#define SNL_MAX_LOOPS   LNO_MAX_DO_LOOP_DEPTH
#define SNL_DEBUG0(level, string)
#define SNL_DEBUG1(level, string, v1)
#define SNL_DEBUG2(level, string, v1, v2)
#define SNL_DEBUG3(level, string, v1, v2, v3)

Enumerations

enum  SNL_INV_CACHE_BLOCK_REASON {
  SNL_INV_UNDEFINED, SNL_INV_TILE_ONLY, SNL_INV_SE_ONLY, SNL_INV_TILE_SE,
  SNL_INV_LEGO_TILE, SNL_INV_MP_TILE, SNL_INV_DOACROSS_TILE
}
enum  SNL_MONO { SNL_MONO_INVARIANT, SNL_MONO_INC, SNL_MONO_DEC, SNL_MONO_OTHER }

Functions/Subroutines

BOOL Is_Lexpos (DEPV *, INT dims)
BOOL Is_Lexpos (DEPV_ARRAY *)
void SNL_Sanity_Check_Func (WN *wn)
SNL_MONO Mono (WN *wn, SYMBOL symbol, BOOL neg=FALSE)
void Print_Do_Stack (FILE *f, const DOLOOP_STACK *)
void Increase_By (WN *wn, INT c, WN *parent=NULL, INT kid=-1)
WNLWN_Create_Block_From_Stmts_Above (WN *wn)
WNLWN_Create_Block_From_Stmts_Below (WN *wn)
INT64 Iterations (WN *loop, MEM_POOL *pool)
WNFind_Next_Innermost_Do (WN *loop)
DOLOOP_STACKCopy_Dostack (const DOLOOP_STACK &stack, MEM_POOL *)
INT Renumber_Loops (WN *first, WN *last, ARRAY_DIRECTED_GRAPH16 *=NULL)
void Dump_WN (SNL_REGION, FILE *, INT, INT=2, INT=2, WN **=NULL, WN *=NULL, ARRAY_DIRECTED_GRAPH16 *=NULL)
void SNL_Add_Du_To_Index_Ldid (WN *loop, WN *ldid, DU_MANAGER *, BOOL)
void SNL_Change_Du_To_Index_Ldid (WN *loop, WN *code, DU_MANAGER *, BOOL)
void SNL_Change_Du_Pointer (WN *oldptr, WN *ptr, WN *body, DU_MANAGER *)
void SNL_Print_Ldid_Pointers (WN *wn)
const DEF_LISTFind_Def_List_In_Exp (WN *exp, const SYMBOL &sym)
WNFind_Use_In_Exp (WN *exp, const SYMBOL &sym)
WNSNL_Copy_Exp (WN *)
void SNL_Fix_Index_Pointers (WN *loop, WN *wn)
WN *& SNL_UBexp (WN *snl_end, BOOL *ne=NULL)
WN *& SNL_UBvar (WN *snl_end)
WNGood_Do_Next_Innermost (WN *doloop)
void SNL_Optimize_Bounds (SNL_REGION region)
BOOL SNL_Is_Non_Varying_Access_Array (ACCESS_ARRAY *aa, INT outer_depth)
WNSNL_Get_Inner_Snl_Loop (WN *outer, INT nloops)
BOOL SNL_Is_Invariant (DOLOOP_STACK *stack, INT d, INT dd)
INT SNL_Loop_Count (WN *wn_snl)
WNSNL_Innermost_Do (WN *wn_outer)
INT Is_Inner_SNL (WN *wn_loop)
void SNL_Upper_Bound_Standardize (WN *wn_outer, INT nloops)
BOOL Valid_SNL_Region (SNL_REGION region)
BOOL Need_Fix_Array_Deps_On_Index_Variable (WN *wn_loop)
BOOL SNL_Fix_Array_Deps_On_Index_Variable (WN *wn_outer, INT nloops)
WNNext_SNL_Loop (WN *wn_outer)
IMATPermutation_To_Unimodular (INT permutation[], INT nloops)
INTUnimodular_To_Permutation (IMAT *unimodular)
WNgenerate_tree_from_row (const mINT32 *m, SNL_TRANS_INDEX_DATA *td, INT64 c, TYPE_ID wtype, INT part)
WNgenerate_tree_from_bounds_info_row (const mINT32 *row, mINT64 con, BOOL le, const SNL_BOUNDS_SYMBOL_LIST *vi)
void Fix_Do_Du_Info (WN *wn, SNL_TRANS_INDEX_DATA *td, BOOL recursive, WN *loops, INT only_in_nloops)
void SNL_Rebuild_Access_Arrays (WN *wn_outerloop)

Variables

MEM_POOL SNL_local_pool


Define Documentation

#define SNL_DEBUG0 ( level,
string   ) 

#define SNL_DEBUG1 ( level,
string,
v1   ) 

#define SNL_DEBUG2 ( level,
string,
v1,
v2   ) 

Value:

((snl_debug < level) ? 0 :      \
   (fprintf(TFile, "SNL DEBUG: "),\
    fprintf(TFile, string, v1, v2),\
    fprintf(TFile, "\n")))

Definition at line 613 of file snl_utils.h.

Referenced by SX_INFO::Handle_Index_Variable_Def(), SNL_Change_Reduction_Loop_Stmts(), SNL_Distribute(), SNL_Is_Transformable(), and SNL_Transform().

#define SNL_DEBUG3 ( level,
string,
v1,
v2,
v3   ) 

Value:

((snl_debug < level) ? 0 :      \
   (fprintf(TFile, "SNL DEBUG: "),\
    fprintf(TFile, string, v1, v2, v3),\
    fprintf(TFile, "\n")))

Definition at line 619 of file snl_utils.h.

Referenced by SX_INFO::Make_Sx_Info().

#define SNL_MAX_LOOPS   LNO_MAX_DO_LOOP_DEPTH

#define snl_utils_INCLUDED   "snl_utils.h"

Description:

Code that implements utilities for SNLs. None of this is "exported" in that all user routines use the interface described in snl.h, and snl.cxx uses these routines for its own purposes.

Exported types:

SNL_MONO

An enumerated type indicating whether an expression is constant, increasing, decreasing or ugly in a given symbol. The values are SNL_MONO_INVARIANT SNL_MONO_INC SNL_MONO_DEC SNL_MONO_OTHER

Exported functions

void Print_Do_Stack(FILE*, const DOLOOP_STACK*)

Print the indexes of a DOLOOP_STACK.

SNL_MONO Mono( WN* wn, SYMBOL symbol, BOOL neg =FALSE );

Is wn increasing, decreasing, constant or ugly in symbol? If neg is true, flip SNL_MONO_INC and SNL_MONO_DEC.

BOOL Is_Lexpos(DEPV*, INT dims); BOOL Is_Lexpos(DEPV_ARRAY*);

If any dependence could possibly be lexneg, returns FALSE; otherwise returns TRUE. TODO OK: these could go in dep.h.

void Increase_By(WN* wn, INT c, WN* parent =NULL, INT kid =-1);

Increases the wn expression by c. Parent and kid are such that WN_kid(parent,kid) is wn.

WN* LWN_Create_Block_From_Stmts_Above(WN* wn); WN* LWN_Create_Block_From_Stmts_Below(WN* wn);

Take all statements on the same block as wn and above/below it, remove them from that block, and return a new block containing only them.

INT64 Iterations(WN* loop, MEM_POOL* pool);

Returns how many times the loop goes, or -1 if not integral or can't decide.

WN* Find_Next_Innermost_Do(WN* loop)

Goes recursively in to find a DO inside the loop. If the loop contains more than one (not looking inside DOs found), then NULL is returned: it returns a loop only when there is exactly one at the next nest level.

DOLOOP_STACK* Copy_Dostack( const DOLOOP_STACK& stack, MEM_POOL* );

Put a copy of this stack in the given mempool and return a pointer.

void SNL_Sanity_Check_Func(WN* wn) void SNL_Sanity_Check_Block(WN* wn) void SNL_Sanity_Check_Loop(WN* wn) void SNL_Sanity_Check_If(WN* wn) void SNL_Sanity_Check_Region(SNL_REGION region) WN* SNL_Sanity_Check_Exp(WN* wn)

Check if the block's/loop's/if's/region's/expression's DO_LOOP_INFO and IF_INFO information is correct. Assertion failure if not. Also print a warning if apparently missing DU/UD information. Returns NULL if there are no load/stores with missing vertices in the dependence graph of Array_Dependence_Graph, and it returns a sample one if there is.

void Dump_WN(SNL_REGION, FILE*, INT, INT = 2, INT = 2, WN** = NULL, WN* = NULL, ARRAY_DIRECTED_GRAPH16* =NULL);

Like Dump_WN, but for SNL_REGIONs.

void SNL_Add_Du_To_Index_Ldid(WN* loop, WN* code, DU_MANAGER*, BOOL code_in_loop)

use = ldid [so ldid must be an OPR_LDID] def = WN_start(loop) def = WN_step(loop)

code is any code where you want ldids of the loop index to point to that for du information. If the code is not in the loop, don't set the loop stmt to be the loop --- set it to null. Note that in the TRUE case it does the right thing, whereas in the FALSE case it might do the right thing, but the user should think about what the loop_stmt ought to be in that case.

void SNL_Change_Du_To_Index_Ldid(WN* loop, WN* code, DU_MANAGER*, BOOL code_in_loop)

same as above, but remove all def/use info first, then add the above. And also, this recurses through a tree,

void SNL_Change_Du_Pointer(WN* oldptr, WN* ptr, WN* body, DU_MANAGER*)

All deflist pointers that used to point to oldptr in body now point to ptr.

void SNL_Fix_Index_Pointers(WN* loop, WN* wn);

The def lists for symbols that are the index are made to point there.

void SNL_Print_Ldid_Pointers(WN* wn);

Print all def_list pointers in wn in a nice way.

const DEF_LIST* Find_Def_List_In_Exp(WN* exp, const SYMBOL& sym)

Return any def_list for this symbol in this expression.

WN* Find_Use_In_Exp(WN* exp, const SYMBOL& sym)

Return use for this symbol in this expression.

WN* SNL_Copy_Exp(WN* tree)

Calls LWN_Copy_Tree, copying alias information and du information and dg information.

WN*& SNL_UBexp(WN* snl_end, BOOL* ne = NULL) WN*& SNL_UBvar(WN* snl_end)

Given a doo loop, pass WN_end(doloop) as a parameter. The function then returns kid1 (kid0 for UBvar) when snl_end's opr is LE/LT. If it's GE/GT, return kid0 (kid1). Otherwise error. If it's GT or LT, then ne is set to TRUE, if it's passed. Otherwise FALSE.

WN* Good_Do_Next_Innermost(WN* doloop)

Go in from this doloop. Return the unique do loop inside. Return NULL if none or more than one.

BOOL SNL_Is_Non_Varying_Access_Array(ACCESS_ARRAY* aa, INT outer_depth)

Returns TRUE if the access array 'aa' is free of problems that make it non-transformable within the loop nest starting at 'outer_depth', FALSE otherwise.

WN* SNL_Get_Inner_Snl_Loop(WN* outer, INT nloops)

Returns the innermost loop in the SNL of 'nloops' loops, where 'outer' is the outermost loop in the SNL.

BOOL SNL_Is_Invariant(DOLOOP_STACK *stack, INT d, INT dd)

Returns TRUE if the the 'dd'th loop in the 'stack' is free of references to the 'd'th loop in the 'stack'. Access vectors are used if they are valid, otherwise, we use UD information.

INT SNL_Loop_Count(WN* wn_snl)

Returns the number of loops in the innermost SNL 'wn_snl'.

WN* SNL_Innermost_Do(WN* wn_outer)

Returns the innermost loop in the innermost SNL 'wn_outer'.

INT Is_Inner_SNL(WN* wn_loop)

Returns the number of loops in the inner SNL rooted at 'wn_loop', if 'wn_loop' is indeed an inner SNL, otherwise returns 0.

void SNL_Upper_Bound_Standardize(WN* wn_outer, nloops)

For the SNL wth outermost loop 'wn_outer' consisting of 'nloops' loops, attempt to standardize the upper bounds of each loop in that SNL.

BOOL Valid_SNL_Region(SNL_REGION region)

Returns TRUE if 'region' is a valid SNL region, FALSE otherwise.

BOOL Need_Fix_Array_Deps_On_Index_Variable(WN* wn_loop)

Returns TRUE if the index variable for loop 'wn_loop' is aliased with an array element, FALSE otherwise.

BOOL SNL_Fix_Array_Deps_On_Index_Variable(WN* wn_outer, INT nloops)

Fix all of the index variables in the SNL 'wn_loop' of 'nloops' loops which are aliased to array elements, insofar as this is possible. Return FALSE if we ran out of depen- dence edges while attempting this, TRUE otherwise.

WN* Next_SNL_Loop(WN* wn_outer)

Returns the next innermost loop in the SNL 'wn_outer', NULL if there is none.

IMAT* Permutation_To_Unimodular(INT permutation[], INT nloops)

Returns a unimodular matrix equivalent to the 'permutation' of length 'nloops'.

INT* Unimodular_To_Permutation(IMAT* unimodular)

Returns a permutation equivalent to the 'unimodular' matrix, if it is actually a permutation matrix. Otherwise returns NULL.

void Fix_Do_Du_Info(WN* wn, SNL_TRANS_INDEX_DATA* td, BOOL recursive, WN* loops, INT only_in_nloops)

wn: The code we are fixing up. td: Pass in NULL to not fix up DU information for non-index variables in the bounds. Otherwise pass in the td. recursive:If true, fix up information inside the do body as well, and recursively inside that. Otherwise, just operate on the bounds of this wn. loops: If NULL, fix up all index variables that appear within WN. E.g. if inside wn there is a use of "i", and there is some ancestor that is a DO "i", tnen make i's DU information point to that only. If not null, then it's not the ances- tors of the reference, but loops and its ancestors. This is useful when wn is not part of the PU but just some where we created, but more typically, just pass in NULL. only_in_nloops: How deep may we assume that the index variable is only read and written within the loop. E.g. 0 means never assume that. 1 means assume that for wn only. 2 means assume that for wn and every loop nested 1 inside wn ... . Notice that if this value is non-zero, then this code will delete all DU information for each loop it sees, and then expect to see every reference to that index variable and rebuild the information. If a DO with uses of the index only inside is being renamed, then you pass in only_in_loops=1 so that you remove any stale DU infor- mation and recompute it exactly.

INT snl_debug

0: print little no debugging information 1: print some basic debugging informations 2: print lots of debugging information 3: print yet more debugging information

Exported Functions for Debugging:

void SNL_DEBUG0(level, string); void SNL_DEBUG1(level, string, arg1); void SNL_DEBUG2(level, string, arg1, arg2); void SNL_DEBUG3(level, string, arg1, arg2, arg3);

if snl_debug >= level, then print an SNL debugging message to TFILE, unless, and also to TFILE if it exists. The string is an fprintf string, and any args following are args to fprintf. $Revision$ $Date$ $Author$ $Source$

Definition at line 327 of file snl_utils.h.

#define UCTILE_I   0x2

#define UCTILE_O   0x4

Definition at line 359 of file snl_utils.h.

Referenced by generate_tree_from_row(), and Rewrite_Bounds().

#define UCTILE_T   0x1

Definition at line 357 of file snl_utils.h.

Referenced by generate_tree_from_row(), and Rewrite_Bounds().


Enumeration Type Documentation

Enumerator:
SNL_INV_UNDEFINED 
SNL_INV_TILE_ONLY 
SNL_INV_SE_ONLY 
SNL_INV_TILE_SE 
SNL_INV_LEGO_TILE 
SNL_INV_MP_TILE 
SNL_INV_DOACROSS_TILE 

Definition at line 372 of file snl_utils.h.

enum SNL_MONO

Enumerator:
SNL_MONO_INVARIANT 
SNL_MONO_INC 
SNL_MONO_DEC 
SNL_MONO_OTHER 

Definition at line 506 of file snl_utils.h.


Function Documentation

DOLOOP_STACK* Copy_Dostack ( const DOLOOP_STACK stack,
MEM_POOL  
)

void Dump_WN ( SNL_REGION  ,
FILE ,
INT  ,
INT  = 2,
INT  = 2,
WN **  = NULL,
WN = NULL,
ARRAY_DIRECTED_GRAPH16 = NULL 
)

Definition at line 1040 of file snl_utils.cxx.

References Dump_WN(), SNL_REGION::First, SNL_REGION::Last, NULL, and WN_next().

const DEF_LIST* Find_Def_List_In_Exp ( WN exp,
const SYMBOL sym 
)

WN* Find_Next_Innermost_Do ( WN loop  ) 

WN* Find_Use_In_Exp ( WN exp,
const SYMBOL sym 
)

void Fix_Do_Du_Info ( WN wn,
SNL_TRANS_INDEX_DATA td,
BOOL  recursive,
WN loops,
INT  only_in_nloops 
)

WN* generate_tree_from_bounds_info_row ( const mINT32 row,
mINT64  con,
BOOL  le,
const SNL_BOUNDS_SYMBOL_LIST vi 
)

WN* generate_tree_from_row ( const mINT32 m,
SNL_TRANS_INDEX_DATA td,
INT64  c,
TYPE_ID  wtype,
INT  part 
)

WN* Good_Do_Next_Innermost ( WN doloop  ) 

void Increase_By ( WN wn,
INT  c,
WN parent = NULL,
INT  kid = -1 
)

INT Is_Inner_SNL ( WN wn_loop  ) 

BOOL Is_Lexpos ( DEPV_ARRAY  ) 

BOOL Is_Lexpos ( DEPV ,
INT  dims 
)

INT64 Iterations ( WN loop,
MEM_POOL pool 
)

WN* LWN_Create_Block_From_Stmts_Above ( WN wn  ) 

WN* LWN_Create_Block_From_Stmts_Below ( WN wn  ) 

SNL_MONO Mono ( WN wn,
SYMBOL  symbol,
BOOL  neg = FALSE 
)

BOOL Need_Fix_Array_Deps_On_Index_Variable ( WN wn_loop  ) 

WN* Next_SNL_Loop ( WN wn_outer  ) 

IMAT* Permutation_To_Unimodular ( INT  permutation[],
INT  nloops 
)

Definition at line 1752 of file snl_utils.cxx.

References CXX_NEW, i, INT, and LNO_local_pool.

Referenced by SNL_GEN_Scalar_Expand().

void Print_Do_Stack ( FILE f,
const DOLOOP_STACK  
)

INT Renumber_Loops ( WN first,
WN last,
ARRAY_DIRECTED_GRAPH16 = NULL 
)

void SNL_Add_Du_To_Index_Ldid ( WN loop,
WN ldid,
DU_MANAGER ,
BOOL   
)

void SNL_Change_Du_Pointer ( WN oldptr,
WN ptr,
WN body,
DU_MANAGER  
)

void SNL_Change_Du_To_Index_Ldid ( WN loop,
WN code,
DU_MANAGER ,
BOOL   
)

WN* SNL_Copy_Exp ( WN  ) 

Definition at line 1187 of file snl_utils.cxx.

References Du_Mgr, LNO_Info_Map, LWN_Copy_Tree(), and TRUE.

Referenced by Rewrite_Bounds(), and Twod_Setbound().

BOOL SNL_Fix_Array_Deps_On_Index_Variable ( WN wn_outer,
INT  nloops 
)

void SNL_Fix_Index_Pointers ( WN loop,
WN wn 
)

WN* SNL_Get_Inner_Snl_Loop ( WN outer,
INT  nloops 
)

Definition at line 1405 of file snl_utils.cxx.

References FmtAssert, INT, Is_True, NULL, OPC_DO_LOOP, OPC_REGION, tmp, WN_do_body, WN_first(), WN_next(), WN_opcode(), and WN_region_body.

Referenced by ARRAY_SNL_INFO::ARRAY_SNL_INFO(), TRANSPOSE_DIRECTED_GRAPH16::Build(), CACHE_REGION::CACHE_REGION(), Code_Expansion_Limit_Loop(), ARA_LOOP_INFO::Const_Work_Estimate(), ARA_LOOP_INFO::Create_New_IF_Clause(), Dismantle_Nested_Doacross(), Do_Automatic_Transformation(), Doacross_Cost(), Fix_Blockable_Dependences(), Forward_Substitute_SNL_Bounds(), Fully_Permutable_Permutation(), General_Kernel(), Has_Code_At_Depth(), HMB_Compound_Guard_And_Hoist(), HMB_Has_Messy_Subscript(), HMB_Hoist_Easy_Messy_Bounds(), HMB_Hoist_Messy_Bounds(), Inv_Dep_Info(), Invariant_Loop_Count(), Invariant_Permutation(), Is_Perfectly_Nested(), Is_Rectangular_Nested_Doacross(), LNO_FB_Inv_Interchange(), SD_INFO::Make_Sd_Info(), SX_INFO::Make_Sx_Info(), Mark_Parallelizable_Loop(), Minimal_Kernel(), MIR_Has_Messy_Subscript(), Mp_Collapse_Loop_Heads(), Mp_Collapse_Loop_Statements(), Mp_Coordinate_Copy_Out_Coordinates(), Mp_Layout_Copy_Out_Layout(), Mp_Layout_Lego_Layout(), Mp_Layout_Load_Pids(), Mp_Nested_Last_Thread(), Mp_Permute_Nested_Loops(), Parallel_Directive_Class(), PAR_STAT::Parallel_Interchange(), Parallel_Interchange(), Parallelizable_At_Depth(), Print_Interchange(), Prompf_Interchange(), Prompf_Interchanges(), Red_Dep_Info(), Scalar_Expansion_Tile(), SE_CT_New_Tile_Infos(), SE_Guard_Tests(), SNL_All_Parallelizable(), SNL_Auto_Parallelization(), SNL_Bad_Scalars_Are_Distributable(), SNL_Cache_Cost(), SNL_Dir_Cannot_Interchange(), SNL_Finalize_Index_Variables(), SNL_Fix_Array_Deps_On_Index_Variable(), SNL_GEN_Distribute(), SNL_GEN_Permute_Loops(), SNL_GEN_Scalar_Expand(), SNL_GEN_U_Ctiling(), SNL_Inner_Exit_Count(), SNL_Inner_Machine_Cost(), SNL_INV_Distribute(), SNL_INV_Distribution(), SNL_INV_Limited_SE_And_Dist(), SNL_INV_Scalar_Expand(), SNL_INV_Scalar_Expand_Tile(), SNL_INV_SE_Distribute(), SNL_INV_Transforms(), SNL_Is_Distributable(), SNL_Is_Scalar_Expandable(), SNL_Machine_Cost(), SNL_Min_Parallel_Overhead_Cost(), SNL_NEST_INFO::SNL_NEST_INFO(), SNL_Parallelization_Costs(), SNL_Peel_Iteration(), SNL_Permutation_Is_Distributable(), SNL_Permutation_Needs_Distribution(), SNL_Transform(), SNL_Upper_Bound_Standardize(), Split_Depth(), Splittable(), Tlog_Lego_Interchange(), Traverse_Update(), and Whack_Do_Loops_Traverse().

WN* SNL_Innermost_Do ( WN wn_outer  ) 

BOOL SNL_Is_Invariant ( DOLOOP_STACK stack,
INT  d,
INT  dd 
)

BOOL SNL_Is_Non_Varying_Access_Array ( ACCESS_ARRAY aa,
INT  outer_depth 
)

INT SNL_Loop_Count ( WN wn_snl  ) 

void SNL_Optimize_Bounds ( SNL_REGION  region  ) 

Definition at line 1353 of file snl_utils.cxx.

References SNL_REGION::First, SNL_REGION::Last, NULL, SNL_Optimize_Bounds(), and WN_next().

void SNL_Print_Ldid_Pointers ( WN wn  ) 

void SNL_Rebuild_Access_Arrays ( WN wn_outerloop  ) 

void SNL_Sanity_Check_Func ( WN wn  ) 

Referenced by Phase_123(), and WB_check().

WN*& SNL_UBexp ( WN snl_end,
BOOL ne = NULL 
)

WN*& SNL_UBvar ( WN snl_end  ) 

void SNL_Upper_Bound_Standardize ( WN wn_outer,
INT  nloops 
)

INT* Unimodular_To_Permutation ( IMAT unimodular  ) 

BOOL Valid_SNL_Region ( SNL_REGION  region  ) 


Variable Documentation

Definition at line 530 of file snl_utils.h.


Generated on Wed Apr 8 14:34:33 2009 for Open64 by  doxygen 1.5.6