From 9d3a9de1ee02811717f605b56bb0064cad19a82e Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 22 May 2008 12:43:16 +0000 Subject: defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument. 2008-05-22 H.J. Lu * 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 --- gcc/tree-vect-analyze.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'gcc/tree-vect-analyze.c') 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)) -- cgit v1.1