diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2008-05-22 12:43:16 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2008-05-22 05:43:16 -0700 |
commit | 9d3a9de1ee02811717f605b56bb0064cad19a82e (patch) | |
tree | 63f0f4421ad75511d63828fa645f16face8c9dc8 /gcc/tree-vect-analyze.c | |
parent | d36f0e7895c96cbbbb6f67a9691c3ee839c73af1 (diff) | |
download | gcc-9d3a9de1ee02811717f605b56bb0064cad19a82e.zip gcc-9d3a9de1ee02811717f605b56bb0064cad19a82e.tar.gz gcc-9d3a9de1ee02811717f605b56bb0064cad19a82e.tar.bz2 |
defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
2008-05-22 H.J. Lu <hongjiu.lu@intel.com>
* defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
* doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
* tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
(vect_update_misalignment_for_peel): Likewise.
(vector_alignment_reachable_p): Likewise.
* tree-vect-transform.c (vectorizable_load): Likewise.
* tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
* tree-vectorizer.c (get_vectype_for_scalar_type): Pass mode of
scalar_type to UNITS_PER_SIMD_WORD.
* config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
* config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
* config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
* config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
* config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
From-SVN: r135759
Diffstat (limited to 'gcc/tree-vect-analyze.c')
-rw-r--r-- | gcc/tree-vect-analyze.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c index 66d83a5..18d7bb8 100644 --- a/gcc/tree-vect-analyze.c +++ b/gcc/tree-vect-analyze.c @@ -1370,6 +1370,7 @@ vect_compute_data_ref_alignment (struct data_reference *dr) misalign = DR_INIT (dr); aligned_to = DR_ALIGNED_TO (dr); base_addr = DR_BASE_ADDRESS (dr); + vectype = STMT_VINFO_VECTYPE (stmt_info); /* In case the dataref is in an inner-loop of the loop that is being vectorized (LOOP), we use the base and misalignment information @@ -1382,7 +1383,7 @@ vect_compute_data_ref_alignment (struct data_reference *dr) tree step = DR_STEP (dr); HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step); - if (dr_step % UNITS_PER_SIMD_WORD == 0) + if (dr_step % GET_MODE_SIZE (TYPE_MODE (vectype)) == 0) { if (vect_print_dump_info (REPORT_ALIGNMENT)) fprintf (vect_dump, "inner step divides the vector-size."); @@ -1399,7 +1400,6 @@ vect_compute_data_ref_alignment (struct data_reference *dr) } base = build_fold_indirect_ref (base_addr); - vectype = STMT_VINFO_VECTYPE (stmt_info); alignment = ssize_int (TYPE_ALIGN (vectype)/BITS_PER_UNIT); if ((aligned_to && tree_int_cst_compare (aligned_to, alignment) < 0) @@ -1541,8 +1541,9 @@ vect_update_misalignment_for_peel (struct data_reference *dr, && known_alignment_for_access_p (dr_peel)) { int misal = DR_MISALIGNMENT (dr); + tree vectype = STMT_VINFO_VECTYPE (stmt_info); misal += npeel * dr_size; - misal %= UNITS_PER_SIMD_WORD; + misal %= GET_MODE_SIZE (TYPE_MODE (vectype)); SET_DR_MISALIGNMENT (dr, misal); return; } @@ -1622,7 +1623,7 @@ vector_alignment_reachable_p (struct data_reference *dr) if (!known_alignment_for_access_p (dr)) return false; - elem_size = UNITS_PER_SIMD_WORD / nelements; + elem_size = GET_MODE_SIZE (TYPE_MODE (vectype)) / nelements; mis_in_elements = DR_MISALIGNMENT (dr) / elem_size; if ((nelements - mis_in_elements) % DR_GROUP_SIZE (stmt_info)) |