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 pattern).

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 one.

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) vectorization.

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: