osprey-gcc/gcc/tree-vectorizer.h File Reference

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

Go to the source code of this file.

Data Types

type  _loop_vec_info
type  _stmt_vec_info

Defines

#define UNKNOWN_LOC   NULL
#define EXPR_LOC(e)   EXPR_LOCUS(e)
#define LOC_FILE(l)   (l)->file
#define LOC_LINE(l)   (l)->line
#define LOOP_VINFO_LOOP(L)   (L)->loop
#define LOOP_VINFO_BBS(L)   (L)->bbs
#define LOOP_VINFO_EXIT_COND(L)   (L)->exit_cond
#define LOOP_VINFO_NITERS(L)   (L)->num_iters
#define LOOP_VINFO_VECTORIZABLE_P(L)   (L)->vectorizable
#define LOOP_VINFO_VECT_FACTOR(L)   (L)->vectorization_factor
#define LOOP_VINFO_DATAREF_WRITES(L)   (L)->data_ref_writes
#define LOOP_VINFO_DATAREF_READS(L)   (L)->data_ref_reads
#define LOOP_VINFO_INT_NITERS(L)   (TREE_INT_CST_LOW ((L)->num_iters))
#define LOOP_DO_PEELING_FOR_ALIGNMENT(L)   (L)->do_peeling_for_alignment
#define LOOP_VINFO_UNALIGNED_DR(L)   (L)->unaligned_dr
#define LOOP_VINFO_LOC(L)   (L)->loop_line_number
#define LOOP_LOC(L)   LOOP_VINFO_LOC(L)
#define LOOP_VINFO_NITERS_KNOWN_P(L)
#define STMT_VINFO_TYPE(S)   (S)->type
#define STMT_VINFO_STMT(S)   (S)->stmt
#define STMT_VINFO_LOOP_VINFO(S)   (S)->loop_vinfo
#define STMT_VINFO_RELEVANT_P(S)   (S)->relevant
#define STMT_VINFO_VECTYPE(S)   (S)->vectype
#define STMT_VINFO_VEC_STMT(S)   (S)->vectorized_stmt
#define STMT_VINFO_DATA_REF(S)   (S)->data_ref_info
#define STMT_VINFO_MEMTAG(S)   (S)->memtag
#define STMT_VINFO_VECT_DR_BASE_ADDRESS(S)   (S)->base_address
#define STMT_VINFO_VECT_INIT_OFFSET(S)   (S)->initial_offset
#define STMT_VINFO_VECT_STEP(S)   (S)->step
#define STMT_VINFO_VECT_BASE_ALIGNED_P(S)   (S)->base_aligned_p
#define STMT_VINFO_VECT_MISALIGNMENT(S)   (S)->misalignment
#define DR_MISALIGNMENT(DR)   (DR)->aux
#define VECT_SMODULO(x, y)   ((x) % (y) < 0 ? ((x) % (y) + (y)) : (x) % (y))

Typedefs

typedef source_locus LOC
typedef struct _loop_vec_infoloop_vec_info
typedef struct _stmt_vec_infostmt_vec_info

Enumerations

enum  vect_var_kind {
  vect_simple_var, vect_pointer_var, vect_simple_var, vect_pointer_var,
  vect_scalar_var
}
enum  operation_type {
  unary_op = 1, binary_op, unary_op = 1, binary_op,
  ternary_op
}
enum  dr_alignment_support {
  dr_unaligned_unsupported, dr_unaligned_supported, dr_unaligned_software_pipeline, dr_aligned,
  dr_unaligned_unsupported, dr_unaligned_supported, dr_unaligned_software_pipeline, dr_aligned
}
enum  verbosity_levels {
  REPORT_NONE, REPORT_VECTORIZED_LOOPS, REPORT_UNVECTORIZED_LOOPS, REPORT_ALIGNMENT,
  REPORT_BAD_FORM_LOOPS, REPORT_OUTER_LOOPS, REPORT_DETAILS, MAX_VERBOSITY_LEVEL,
  REPORT_NONE, REPORT_VECTORIZED_LOOPS, REPORT_UNVECTORIZED_LOOPS, REPORT_ALIGNMENT,
  REPORT_DR_DETAILS, REPORT_BAD_FORM_LOOPS, REPORT_OUTER_LOOPS, REPORT_DETAILS,
  MAX_VERBOSITY_LEVEL
}
enum  stmt_vec_info_type {
  undef_vec_info_type = 0, load_vec_info_type, store_vec_info_type, op_vec_info_type,
  assignment_vec_info_type, undef_vec_info_type = 0, load_vec_info_type, store_vec_info_type,
  op_vec_info_type, assignment_vec_info_type, condition_vec_info_type, reduc_vec_info_type
}

Functions/Subroutines

static void set_stmt_info (stmt_ann_t ann, stmt_vec_info stmt_info)
static stmt_vec_info vinfo_for_stmt (tree stmt)
static bool aligned_access_p (struct data_reference *data_ref_info)
static bool unknown_alignment_for_access_p (struct data_reference *data_ref_info)
struct loopslpeel_tree_peel_loop_to_edge (struct loop *, struct loops *, edge, tree, tree, bool)
void slpeel_make_loop_iterate_ntimes (struct loop *, tree)
bool slpeel_can_duplicate_loop_p (struct loop *, edge)
tree vect_strip_conversion (tree)
tree get_vectype_for_scalar_type (tree)
bool vect_is_simple_use (tree, loop_vec_info, tree *)
bool vect_is_simple_iv_evolution (unsigned, tree, tree *, tree *)
bool vect_can_force_dr_alignment_p (tree, unsigned int)
enum dr_alignment_support vect_supportable_dr_alignment (struct data_reference *)
loop_vec_info new_loop_vec_info (struct loop *loop)
void destroy_loop_vec_info (loop_vec_info)
stmt_vec_info new_stmt_vec_info (tree stmt, loop_vec_info)
void vectorize_loops (struct loops *)
loop_vec_info vect_analyze_loop (struct loop *)
bool vectorizable_load (tree, block_stmt_iterator *, tree *)
bool vectorizable_store (tree, block_stmt_iterator *, tree *)
bool vectorizable_operation (tree, block_stmt_iterator *, tree *)
bool vectorizable_assignment (tree, block_stmt_iterator *, tree *)
void vect_transform_loop (loop_vec_info, struct loops *)
bool vect_print_dump_info (enum verbosity_levels, LOC)
void vect_set_verbosity_level (const char *)
LOC find_loop_location (struct loop *)

Variables

FILEvect_dump
enum verbosity_levels vect_verbosity_level


Define Documentation

#define DR_MISALIGNMENT ( DR   )     (DR)->aux

#define EXPR_LOC (  )     EXPR_LOCUS(e)

Definition at line 34 of file tree-vectorizer.h.

Referenced by find_loop_location().

#define LOC_FILE (  )     (l)->file

#define LOC_LINE (  )     (l)->line

#define LOOP_DO_PEELING_FOR_ALIGNMENT ( L   )     (L)->do_peeling_for_alignment

#define LOOP_LOC ( L   )     LOOP_VINFO_LOC(L)

#define LOOP_VINFO_BBS ( L   )     (L)->bbs

#define LOOP_VINFO_DATAREF_READS ( L   )     (L)->data_ref_reads

#define LOOP_VINFO_DATAREF_WRITES ( L   )     (L)->data_ref_writes

#define LOOP_VINFO_EXIT_COND ( L   )     (L)->exit_cond

#define LOOP_VINFO_INT_NITERS ( L   )     (TREE_INT_CST_LOW ((L)->num_iters))

#define LOOP_VINFO_LOC ( L   )     (L)->loop_line_number

Definition at line 124 of file tree-vectorizer.h.

Referenced by new_loop_vec_info(), and vect_analyze_loop_form().

#define LOOP_VINFO_LOOP ( L   )     (L)->loop

#define LOOP_VINFO_NITERS ( L   )     (L)->num_iters

#define LOOP_VINFO_NITERS_KNOWN_P ( L   ) 

Value:

(host_integerp ((L)->num_iters,0)                        \
&& TREE_INT_CST_LOW ((L)->num_iters) > 0)

Definition at line 129 of file tree-vectorizer.h.

Referenced by vect_analyze_loop_form(), vect_analyze_operations(), and vect_transform_loop().

#define LOOP_VINFO_UNALIGNED_DR ( L   )     (L)->unaligned_dr

#define LOOP_VINFO_VECT_FACTOR ( L   )     (L)->vectorization_factor

#define LOOP_VINFO_VECTORIZABLE_P ( L   )     (L)->vectorizable

Definition at line 117 of file tree-vectorizer.h.

Referenced by new_loop_vec_info(), vect_analyze_loop(), and vectorize_loops().

#define STMT_VINFO_DATA_REF ( S   )     (S)->data_ref_info

#define STMT_VINFO_LOOP_VINFO ( S   )     (S)->loop_vinfo

#define STMT_VINFO_MEMTAG ( S   )     (S)->memtag

#define STMT_VINFO_RELEVANT_P ( S   )     (S)->relevant

#define STMT_VINFO_STMT ( S   )     (S)->stmt

Definition at line 209 of file tree-vectorizer.h.

Referenced by new_stmt_vec_info().

#define STMT_VINFO_TYPE ( S   )     (S)->type

#define STMT_VINFO_VEC_STMT ( S   )     (S)->vectorized_stmt

#define STMT_VINFO_VECT_BASE_ALIGNED_P ( S   )     (S)->base_aligned_p

#define STMT_VINFO_VECT_DR_BASE_ADDRESS ( S   )     (S)->base_address

#define STMT_VINFO_VECT_INIT_OFFSET ( S   )     (S)->initial_offset

#define STMT_VINFO_VECT_MISALIGNMENT ( S   )     (S)->misalignment

#define STMT_VINFO_VECT_STEP ( S   )     (S)->step

#define STMT_VINFO_VECTYPE ( S   )     (S)->vectype

#define UNKNOWN_LOC   NULL

#define VECT_SMODULO ( x,
 )     ((x) % (y) < 0 ? ((x) % (y) + (y)) : (x) % (y))

Definition at line 259 of file tree-vectorizer.h.


Typedef Documentation

typedef source_locus LOC

Definition at line 32 of file tree-vectorizer.h.


Enumeration Type Documentation

Enumerator:
dr_unaligned_unsupported 
dr_unaligned_supported 
dr_unaligned_software_pipeline 
dr_aligned 
dr_unaligned_unsupported 
dr_unaligned_supported 
dr_unaligned_software_pipeline 
dr_aligned 

Definition at line 52 of file tree-vectorizer.h.

Enumerator:
unary_op 
binary_op 
unary_op 
binary_op 
ternary_op 

Definition at line 46 of file tree-vectorizer.h.

Enumerator:
undef_vec_info_type 
load_vec_info_type 
store_vec_info_type 
op_vec_info_type 
assignment_vec_info_type 
undef_vec_info_type 
load_vec_info_type 
store_vec_info_type 
op_vec_info_type 
assignment_vec_info_type 
condition_vec_info_type 
reduc_vec_info_type 

Definition at line 136 of file tree-vectorizer.h.

Enumerator:
vect_simple_var 
vect_pointer_var 
vect_simple_var 
vect_pointer_var 
vect_scalar_var 

Definition at line 40 of file tree-vectorizer.h.

Enumerator:
REPORT_NONE 
REPORT_VECTORIZED_LOOPS 
REPORT_UNVECTORIZED_LOOPS 
REPORT_ALIGNMENT 
REPORT_BAD_FORM_LOOPS 
REPORT_OUTER_LOOPS 
REPORT_DETAILS 
MAX_VERBOSITY_LEVEL 
REPORT_NONE 
REPORT_VECTORIZED_LOOPS 
REPORT_UNVECTORIZED_LOOPS 
REPORT_ALIGNMENT 
REPORT_DR_DETAILS 
REPORT_BAD_FORM_LOOPS 
REPORT_OUTER_LOOPS 
REPORT_DETAILS 
MAX_VERBOSITY_LEVEL 

Definition at line 60 of file tree-vectorizer.h.


Function Documentation

static bool aligned_access_p ( struct data_reference data_ref_info  )  [inline, static]

void destroy_loop_vec_info ( loop_vec_info   ) 

Definition at line 1241 of file tree-vectorizer.c.

LOC find_loop_location ( struct loop  ) 

Definition at line 1040 of file tree-vectorizer.c.

tree get_vectype_for_scalar_type ( tree   ) 

Definition at line 1339 of file tree-vectorizer.c.

loop_vec_info new_loop_vec_info ( struct loop loop  ) 

Definition at line 1191 of file tree-vectorizer.c.

stmt_vec_info new_stmt_vec_info ( tree  stmt,
loop_vec_info   
)

Definition at line 1162 of file tree-vectorizer.c.

static void set_stmt_info ( stmt_ann_t  ann,
stmt_vec_info  stmt_info 
) [inline, static]

bool slpeel_can_duplicate_loop_p ( struct loop ,
edge   
)

Definition at line 773 of file tree-vectorizer.c.

void slpeel_make_loop_iterate_ntimes ( struct loop ,
tree   
)

Definition at line 566 of file tree-vectorizer.c.

struct loop* slpeel_tree_peel_loop_to_edge ( struct loop ,
struct loops ,
edge  ,
tree  ,
tree  ,
bool   
) [read]

Definition at line 872 of file tree-vectorizer.c.

static bool unknown_alignment_for_access_p ( struct data_reference data_ref_info  )  [inline, static]

Definition at line 253 of file tree-vectorizer.h.

References DR_MISALIGNMENT.

loop_vec_info vect_analyze_loop ( struct loop  ) 

In tree-vect-analyze.c

Definition at line 2420 of file tree-vect-analyze.c.

bool vect_can_force_dr_alignment_p ( tree  ,
unsigned  int 
)

Definition at line 1310 of file tree-vectorizer.c.

bool vect_is_simple_iv_evolution ( unsigned  ,
tree  ,
tree ,
tree  
)

Definition at line 1497 of file tree-vectorizer.c.

bool vect_is_simple_use ( tree  ,
loop_vec_info  ,
tree  
)

bool vect_print_dump_info ( enum  verbosity_levels,
LOC   
)

Definition at line 1136 of file tree-vectorizer.c.

References current_function_decl, DECL_SOURCE_FILE, DECL_SOURCE_LINE, fprintf(), LOC_FILE, LOC_LINE, UNKNOWN_LOC, vect_dump, and vect_verbosity_level.

Referenced by get_vectype_for_scalar_type(), vect_analyze_data_ref_access(), vect_analyze_data_ref_accesses(), vect_analyze_data_ref_dependence(), vect_analyze_data_ref_dependences(), vect_analyze_data_refs(), vect_analyze_data_refs_alignment(), vect_analyze_loop(), vect_analyze_loop_form(), vect_analyze_offset_expr(), vect_analyze_operations(), vect_analyze_pointer_ref_access(), vect_analyze_scalar_cycles(), vect_can_advance_ivs_p(), vect_compute_data_ref_alignment(), vect_create_addr_base_for_vector_ref(), vect_create_data_ref_ptr(), vect_create_epilog_for_reduction(), vect_determine_vectorization_factor(), vect_do_peeling_for_alignment(), vect_do_peeling_for_loop_bound(), vect_enhance_data_refs_alignment(), vect_finish_stmt_generation(), vect_gen_niters_for_prolog_loop(), vect_get_loop_niters(), vect_get_vec_def_for_operand(), vect_init_vector(), vect_is_simple_iv_evolution(), vect_is_simple_reduction(), vect_is_simple_use(), vect_mark_relevant(), vect_mark_stmts_to_be_vectorized(), vect_object_analysis(), vect_pattern_recog(), vect_pattern_recog_1(), vect_recog_dot_prod_pattern(), vect_recog_widen_sum_pattern(), vect_stmt_relevant_p(), vect_transform_loop(), vect_transform_stmt(), vect_update_ivs_after_vectorizer(), vect_verify_datarefs_alignment(), vectorizable_assignment(), vectorizable_condition(), vectorizable_live_operation(), vectorizable_load(), vectorizable_operation(), vectorizable_reduction(), vectorizable_store(), and vectorize_loops().

void vect_set_verbosity_level ( const char *   ) 

Definition at line 1084 of file tree-vectorizer.c.

tree vect_strip_conversion ( tree   ) 

enum dr_alignment_support vect_supportable_dr_alignment ( struct data_reference  ) 

Definition at line 1389 of file tree-vectorizer.c.

void vect_transform_loop ( loop_vec_info  ,
struct loops  
)

bool vectorizable_assignment ( tree  ,
block_stmt_iterator ,
tree  
)

Transform.

Definition at line 679 of file tree-vect-transform.c.

bool vectorizable_load ( tree  ,
block_stmt_iterator ,
tree  
)

In tree-vect-transform.c

Transform.

Definition at line 939 of file tree-vect-transform.c.

bool vectorizable_operation ( tree  ,
block_stmt_iterator ,
tree  
)

Transform.

Definition at line 742 of file tree-vect-transform.c.

bool vectorizable_store ( tree  ,
block_stmt_iterator ,
tree  
)

Transform.

Definition at line 856 of file tree-vect-transform.c.

void vectorize_loops ( struct loops  ) 

Definition at line 1559 of file tree-vectorizer.c.

static stmt_vec_info vinfo_for_stmt ( tree  stmt  )  [inline, static]


Variable Documentation

Definition at line 173 of file tree-vectorizer.c.

Definition at line 177 of file tree-vectorizer.c.


Generated on Wed Apr 8 14:23:06 2009 for Open64 by  doxygen 1.5.6