GCC Middle and Back End API Reference
_stmt_vec_info Struct Reference

#include <tree-vectorizer.h>

Collaboration diagram for _stmt_vec_info:

Data Fields

enum stmt_vec_info_type type
bool live
bool in_pattern_p
gimple stmt
loop_vec_info loop_vinfo
tree vectype
gimple vectorized_stmt
struct data_referencedata_ref_info
tree dr_base_address
tree dr_init
tree dr_offset
tree dr_step
tree dr_aligned_to
tree loop_phi_evolution_part
gimple related_stmt
gimple_seq pattern_def_seq
vec< dr_psame_align_refs
enum vect_def_type def_type
enum slp_vect_type slp_type
gimple first_element
gimple next_element
gimple same_dr_stmt
unsigned int size
unsigned int store_count
unsigned int gap
enum vect_relevant relevant
bb_vec_info bb_vinfo
bool vectorizable
bool gather_p
bool stride_load_p
bool simd_lane_access_p

Field Documentation

bb_vec_info _stmt_vec_info::bb_vinfo
     The bb_vec_info with respect to which STMT is vectorized.  
struct data_reference* _stmt_vec_info::data_ref_info
     The following is relevant only for stmts that contain a non-scalar
     data-ref (array/pointer/struct access). A GIMPLE stmt is expected to have
     at most one such data-ref.  
     Information about the data-ref (access function, etc),
     relative to the inner-most containing loop.  
enum vect_def_type _stmt_vec_info::def_type
     Classify the def of this stmt.  
tree _stmt_vec_info::dr_aligned_to
tree _stmt_vec_info::dr_base_address
     Information about the data-ref relative to this loop
     nest (the loop that is being considered for vectorization).  
tree _stmt_vec_info::dr_init
tree _stmt_vec_info::dr_offset
tree _stmt_vec_info::dr_step
gimple _stmt_vec_info::first_element
     Interleaving and reduction chains info.  
     First element in the group.  
unsigned int _stmt_vec_info::gap
     For loads only, the gap from the previous load. For consecutive loads, GAP
     is 1.  
bool _stmt_vec_info::gather_p
     For loads only, true if this is a gather load.  
bool _stmt_vec_info::in_pattern_p
     Stmt is part of some pattern (computation idiom)  
bool _stmt_vec_info::live
     Indicates whether this stmts is part of a computation whose result is
     used outside the loop.  
tree _stmt_vec_info::loop_phi_evolution_part
     For loop PHI nodes, the evolution part of it.  This makes sure
     this information is still available in vect_update_ivs_after_vectorizer
     where we may not be able to re-analyze the PHI nodes evolution as
     peeling for the prologue loop can make it unanalyzable.  The evolution
     part is still correct though.  
loop_vec_info _stmt_vec_info::loop_vinfo
     The loop_vec_info with respect to which STMT is vectorized.  
gimple _stmt_vec_info::next_element
     Pointer to the next element in the group.  
gimple_seq _stmt_vec_info::pattern_def_seq
     Used to keep a sequence of def stmts of a pattern stmt if such exists.  
gimple _stmt_vec_info::related_stmt
     Used for various bookkeeping purposes, generally holding a pointer to
     some other stmt S that is in some way "related" to this stmt.
     Current use of this field is:
        If this stmt is part of a pattern (i.e. the field 'in_pattern_p' is
        true): S is the "pattern stmt" that represents (and replaces) the
        sequence of stmts that constitutes the pattern.  Similarly, the
        related_stmt of the "pattern stmt" points back to this stmt (which is
        the last stmt in the original sequence of stmts that constitutes the
enum vect_relevant _stmt_vec_info::relevant
     Not all stmts in the loop need to be vectorized. e.g, the increment
     of the loop induction variable and computation of array indexes. relevant
     indicates whether the stmt needs to be vectorized.  
vec<dr_p> _stmt_vec_info::same_align_refs
     List of datarefs that are known to have the same alignment as the dataref
     of this stmt.  
gimple _stmt_vec_info::same_dr_stmt
     For data-refs, in case that two or more stmts share data-ref, this is the
     pointer to the previously detected stmt with the same dr.  
bool _stmt_vec_info::simd_lane_access_p
     For both loads and stores.  
unsigned int _stmt_vec_info::size
     The size of the group.  
enum slp_vect_type _stmt_vec_info::slp_type
      Whether the stmt is SLPed, loop-based vectorized, or both.  
gimple _stmt_vec_info::stmt
     The stmt to which this info struct refers to.  
unsigned int _stmt_vec_info::store_count
     For stores, number of stores from this group seen. We vectorize the last
bool _stmt_vec_info::stride_load_p
enum stmt_vec_info_type _stmt_vec_info::type
bool _stmt_vec_info::vectorizable
     Is this statement vectorizable or should it be skipped in (partial)
gimple _stmt_vec_info::vectorized_stmt
     The vectorized version of the stmt.  
tree _stmt_vec_info::vectype
     The vector type to be used for the LHS of this statement.  

The documentation for this struct was generated from the following file: