Polly 20.0.0git
Macros | Functions | Variables
ForwardOpTree.cpp File Reference
#include "polly/ForwardOpTree.h"
#include "polly/Options.h"
#include "polly/ScopBuilder.h"
#include "polly/ScopInfo.h"
#include "polly/ScopPass.h"
#include "polly/Support/GICHelper.h"
#include "polly/Support/ISLOStream.h"
#include "polly/Support/ISLTools.h"
#include "polly/Support/VirtualInstruction.h"
#include "polly/ZoneAlgo.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Value.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "isl/ctx.h"
#include "isl/isl-noexceptions.h"
#include <cassert>
#include <memory>
#include "polly/Support/PollyDebug.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "polly-optree"
 

Functions

static cl::opt< bool > AnalyzeKnown ("polly-optree-analyze-known", cl::desc("Analyze array contents for load forwarding"), cl::cat(PollyCategory), cl::init(true), cl::Hidden)
 
static cl::opt< bool > NormalizePHIs ("polly-optree-normalize-phi", cl::desc("Replace PHIs by their incoming values"), cl::cat(PollyCategory), cl::init(false), cl::Hidden)
 
static cl::opt< unsigned > MaxOps ("polly-optree-max-ops", cl::desc("Maximum number of ISL operations to invest for known " "analysis; 0=no limit"), cl::init(1000000), cl::cat(PollyCategory), cl::Hidden)
 
 STATISTIC (KnownAnalyzed, "Number of successfully analyzed SCoPs")
 
 STATISTIC (KnownOutOfQuota, "Analyses aborted because max_operations was reached")
 
 STATISTIC (TotalInstructionsCopied, "Number of copied instructions")
 
 STATISTIC (TotalKnownLoadsForwarded, "Number of forwarded loads because their value was known")
 
 STATISTIC (TotalReloads, "Number of reloaded values")
 
 STATISTIC (TotalReadOnlyCopied, "Number of copied read-only accesses")
 
 STATISTIC (TotalForwardedTrees, "Number of forwarded operand trees")
 
 STATISTIC (TotalModifiedStmts, "Number of statements with at least one forwarded tree")
 
 STATISTIC (ScopsModified, "Number of SCoPs with at least one forwarded tree")
 
 STATISTIC (NumValueWrites, "Number of scalar value writes after OpTree")
 
 STATISTIC (NumValueWritesInLoops, "Number of scalar value writes nested in affine loops after OpTree")
 
 STATISTIC (NumPHIWrites, "Number of scalar phi writes after OpTree")
 
 STATISTIC (NumPHIWritesInLoops, "Number of scalar phi writes nested in affine loops after OpTree")
 
 STATISTIC (NumSingletonWrites, "Number of singleton writes after OpTree")
 
 STATISTIC (NumSingletonWritesInLoops, "Number of singleton writes nested in affine loops after OpTree")
 
 INITIALIZE_PASS_BEGIN (ForwardOpTreeWrapperPass, "polly-optree", "Polly - Forward operand tree", false, false) INITIALIZE_PASS_END(ForwardOpTreeWrapperPass
 
polly Polly Forward operand false INITIALIZE_PASS_BEGIN (ForwardOpTreePrinterLegacyPass, "polly-print-optree", "Polly - Print forward operand tree result", false, false) INITIALIZE_PASS_END(ForwardOpTreePrinterLegacyPass
 

Variables

polly optree
 
polly Polly Forward operand tree
 
polly Polly Forward operand false
 
polly Polly Forward operand false polly print Polly Print forward operand tree result
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "polly-optree"

Definition at line 44 of file ForwardOpTree.cpp.

Function Documentation

◆ AnalyzeKnown()

static cl::opt< bool > AnalyzeKnown ( "polly-optree-analyze-known"  ,
cl::desc("Analyze array contents for load forwarding")  ,
cl::cat(PollyCategory ,
cl::init(true)  ,
cl::Hidden   
)
static

◆ INITIALIZE_PASS_BEGIN() [1/2]

polly Polly Forward operand false INITIALIZE_PASS_BEGIN ( ForwardOpTreePrinterLegacyPass  ,
"polly-print-optree"  ,
"Polly - Print forward operand tree result"  ,
false  ,
false   
)

◆ INITIALIZE_PASS_BEGIN() [2/2]

INITIALIZE_PASS_BEGIN ( ForwardOpTreeWrapperPass  ,
"polly-optree"  ,
"Polly - Forward operand tree"  ,
false  ,
false   
)

◆ MaxOps()

static cl::opt< unsigned > MaxOps ( "polly-optree-max-ops"  ,
cl::desc("Maximum number of ISL operations to invest for known " "analysis; 0=no limit")  ,
cl::init(1000000)  ,
cl::cat(PollyCategory ,
cl::Hidden   
)
static

◆ NormalizePHIs()

static cl::opt< bool > NormalizePHIs ( "polly-optree-normalize-phi"  ,
cl::desc("Replace PHIs by their incoming values")  ,
cl::cat(PollyCategory ,
cl::init(false)  ,
cl::Hidden   
)
static

◆ STATISTIC() [1/15]

STATISTIC ( KnownAnalyzed  ,
"Number of successfully analyzed SCoPs"   
)

◆ STATISTIC() [2/15]

STATISTIC ( KnownOutOfQuota  ,
"Analyses aborted because max_operations was reached"   
)

◆ STATISTIC() [3/15]

STATISTIC ( NumPHIWrites  ,
"Number of scalar phi writes after OpTree"   
)

◆ STATISTIC() [4/15]

STATISTIC ( NumPHIWritesInLoops  ,
"Number of scalar phi writes nested in affine loops after OpTree"   
)

◆ STATISTIC() [5/15]

STATISTIC ( NumSingletonWrites  ,
"Number of singleton writes after OpTree"   
)

◆ STATISTIC() [6/15]

STATISTIC ( NumSingletonWritesInLoops  ,
"Number of singleton writes nested in affine loops after OpTree"   
)

◆ STATISTIC() [7/15]

STATISTIC ( NumValueWrites  ,
"Number of scalar value writes after OpTree"   
)

◆ STATISTIC() [8/15]

STATISTIC ( NumValueWritesInLoops  ,
"Number of scalar value writes nested in affine loops after OpTree"   
)

◆ STATISTIC() [9/15]

STATISTIC ( ScopsModified  ,
"Number of SCoPs with at least one forwarded tree"   
)

◆ STATISTIC() [10/15]

STATISTIC ( TotalForwardedTrees  ,
"Number of forwarded operand trees"   
)

◆ STATISTIC() [11/15]

STATISTIC ( TotalInstructionsCopied  ,
"Number of copied instructions"   
)

◆ STATISTIC() [12/15]

STATISTIC ( TotalKnownLoadsForwarded  ,
"Number of forwarded loads because their value was known"   
)

◆ STATISTIC() [13/15]

STATISTIC ( TotalModifiedStmts  ,
"Number of statements with at least one forwarded tree"   
)

◆ STATISTIC() [14/15]

STATISTIC ( TotalReadOnlyCopied  ,
"Number of copied read-only accesses"   
)

◆ STATISTIC() [15/15]

STATISTIC ( TotalReloads  ,
"Number of reloaded values"   
)

Variable Documentation

◆ false

polly Polly Forward operand false polly print Polly Print forward operand tree false

Definition at line 1207 of file ForwardOpTree.cpp.

◆ optree

polly Polly Forward operand false polly print optree

Definition at line 1206 of file ForwardOpTree.cpp.

◆ result

polly Polly Forward operand false polly print Polly Print forward operand tree result

Definition at line 1213 of file ForwardOpTree.cpp.

◆ tree

polly Polly Forward operand tree

Definition at line 1207 of file ForwardOpTree.cpp.

Referenced by collect_filter_prefix(), collect_filter_prefix_expansion(), collect_filter_prefix_init(), collect_filter_prefix_update(), collect_universe_domain_extension(), construct_ast_from_schedule(), construct_ast_from_union_map(), create_leaf(), domain_less(), expand(), extension_from_domain(), extract_space_from_filter_child(), gist_leave(), graft_extension(), graft_or_splice(), group_ancestor(), group_band(), group_context(), group_domain(), group_expansion(), has_ancestors(), initial_domain(), initial_domain_from_children(), insert_filter_in_child_of_type(), involves_iteration_domain(), isl_printer_print_schedule_tree(), isl_printer_print_schedule_tree_mark(), isl_schedule_cow(), isl_schedule_expand(), isl_schedule_from_domain(), isl_schedule_from_schedule_tree(), isl_schedule_get_root(), isl_schedule_node_align_params(), isl_schedule_node_alloc(), isl_schedule_node_ancestor(), isl_schedule_node_band_gist(), isl_schedule_node_band_member_set_ast_loop_type(), isl_schedule_node_band_member_set_coincident(), isl_schedule_node_band_member_set_isolate_ast_loop_type(), isl_schedule_node_band_mod(), isl_schedule_node_band_scale(), isl_schedule_node_band_scale_down(), isl_schedule_node_band_set_ast_build_options(), isl_schedule_node_band_set_permutable(), isl_schedule_node_band_shift(), isl_schedule_node_band_sink(), isl_schedule_node_band_split(), isl_schedule_node_band_tile(), isl_schedule_node_child(), isl_schedule_node_delete(), isl_schedule_node_domain_gist_params(), isl_schedule_node_domain_intersect_domain(), isl_schedule_node_expand(), isl_schedule_node_expansion_set_contraction_and_expansion(), isl_schedule_node_extension_set_extension(), isl_schedule_node_filter_set_filter(), isl_schedule_node_from_extension(), isl_schedule_node_get_ancestor_child_position(), isl_schedule_node_get_schedule_depth(), isl_schedule_node_get_subtree_schedule_union_map(), isl_schedule_node_graft_tree(), isl_schedule_node_has_next_sibling(), isl_schedule_node_insert_children(), isl_schedule_node_insert_context(), isl_schedule_node_insert_expansion(), isl_schedule_node_insert_extension(), isl_schedule_node_insert_filter(), isl_schedule_node_insert_guard(), isl_schedule_node_insert_mark(), isl_schedule_node_insert_partial_schedule(), isl_schedule_node_next_sibling(), isl_schedule_node_previous_sibling(), isl_schedule_node_pullback_union_pw_multi_aff(), isl_schedule_node_reset_user(), isl_schedule_node_sequence_splice(), isl_schedule_node_sequence_splice_child(), isl_schedule_set_root(), isl_schedule_tree_align_params(), isl_schedule_tree_alloc(), isl_schedule_tree_band_get_ast_build_options(), isl_schedule_tree_band_get_ast_isolate_option(), isl_schedule_tree_band_get_partial_schedule(), isl_schedule_tree_band_get_permutable(), isl_schedule_tree_band_get_space(), isl_schedule_tree_band_gist(), isl_schedule_tree_band_intersect_domain(), isl_schedule_tree_band_member_get_ast_loop_type(), isl_schedule_tree_band_member_get_coincident(), isl_schedule_tree_band_member_get_isolate_ast_loop_type(), isl_schedule_tree_band_member_set_ast_loop_type(), isl_schedule_tree_band_member_set_coincident(), isl_schedule_tree_band_member_set_isolate_ast_loop_type(), isl_schedule_tree_band_mod(), isl_schedule_tree_band_n_member(), isl_schedule_tree_band_scale(), isl_schedule_tree_band_scale_down(), isl_schedule_tree_band_set_ast_build_options(), isl_schedule_tree_band_set_partial_schedule(), isl_schedule_tree_band_set_permutable(), isl_schedule_tree_band_shift(), isl_schedule_tree_band_split(), isl_schedule_tree_band_tile(), isl_schedule_tree_child(), isl_schedule_tree_children_insert_filter(), isl_schedule_tree_context_get_context(), isl_schedule_tree_copy(), isl_schedule_tree_cow(), isl_schedule_tree_domain_get_domain(), isl_schedule_tree_domain_set_domain(), isl_schedule_tree_drop_child(), isl_schedule_tree_dump(), isl_schedule_tree_dup(), isl_schedule_tree_expansion_get_contraction(), isl_schedule_tree_expansion_get_expansion(), isl_schedule_tree_expansion_set_contraction_and_expansion(), isl_schedule_tree_extension_get_extension(), isl_schedule_tree_extension_set_extension(), isl_schedule_tree_filter_get_filter(), isl_schedule_tree_filter_set_filter(), isl_schedule_tree_first_schedule_descendant(), isl_schedule_tree_free(), isl_schedule_tree_from_band(), isl_schedule_tree_from_children(), isl_schedule_tree_from_context(), isl_schedule_tree_from_domain(), isl_schedule_tree_from_expansion(), isl_schedule_tree_from_extension(), isl_schedule_tree_from_filter(), isl_schedule_tree_from_guard(), isl_schedule_tree_from_mark(), isl_schedule_tree_get_child(), isl_schedule_tree_get_ctx(), isl_schedule_tree_get_subtree_schedule_union_map(), isl_schedule_tree_get_type(), isl_schedule_tree_guard_get_guard(), isl_schedule_tree_has_children(), isl_schedule_tree_insert_band(), isl_schedule_tree_insert_context(), isl_schedule_tree_insert_domain(), isl_schedule_tree_insert_expansion(), isl_schedule_tree_insert_extension(), isl_schedule_tree_insert_filter(), isl_schedule_tree_insert_guard(), isl_schedule_tree_insert_mark(), isl_schedule_tree_is_anchored(), isl_schedule_tree_is_leaf(), isl_schedule_tree_is_subtree_anchored(), isl_schedule_tree_mark_get_id(), isl_schedule_tree_n_children(), isl_schedule_tree_pullback_union_pw_multi_aff(), isl_schedule_tree_replace_child(), isl_schedule_tree_reset_children(), isl_schedule_tree_reset_user(), isl_schedule_tree_sequence_splice(), isl_schedule_tree_set_children(), isl_schedule_tree_update_anchored(), isl_stream_read_schedule(), isl_stream_read_schedule_tree(), main(), read_band(), read_context(), read_domain(), read_expansion(), read_extension(), read_filter(), read_guard(), read_mark(), subtree_schedule_extend(), subtree_schedule_extend_child(), subtree_schedule_extend_from_children(), test_ast_gen1(), test_ast_gen2(), test_ast_gen3(), test_ast_gen4(), test_ast_gen5(), and update_ancestors().