diff options
author | Dorit Nuzman <dorit@il.ibm.com> | 2008-08-08 19:00:36 +0000 |
---|---|---|
committer | Dorit Nuzman <dorit@gcc.gnu.org> | 2008-08-08 19:00:36 +0000 |
commit | 7910ae0cde83554100eefaca68a506bb25655498 (patch) | |
tree | aa8655be46a1806b9692a464a4fabff43b1eb1b9 /gcc/tree-vect-transform.c | |
parent | f6fad28ea1317a6aa30869b40c427ad56c6950c5 (diff) | |
download | gcc-7910ae0cde83554100eefaca68a506bb25655498.zip gcc-7910ae0cde83554100eefaca68a506bb25655498.tar.gz gcc-7910ae0cde83554100eefaca68a506bb25655498.tar.bz2 |
tree-vect-transform.c (vectorizable_conversion): Pass the integral type to vectorize.builtin_conversion.
2008-08-08 Dorit Nuzman <dorit@il.ibm.com>
* tree-vect-transform.c (vectorizable_conversion): Pass the integral
type to vectorize.builtin_conversion.
(vectorizable_conversion): Likewise.
* config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
integral type as input.
* config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
FIX_TRUNC_EXPR.
(rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
and ALTIVEC_BUILTIN_VCTSXS.
(rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
formatting.
From-SVN: r138885
Diffstat (limited to 'gcc/tree-vect-transform.c')
-rw-r--r-- | gcc/tree-vect-transform.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 9d3d40a..9e2814f 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -3456,6 +3456,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, int i; VEC(tree,heap) *vec_oprnds0 = NULL; tree vop0; + tree integral_type; /* Is STMT a vectorizable conversion? */ @@ -3508,6 +3509,8 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, || (!INTEGRAL_TYPE_P (rhs_type) && !INTEGRAL_TYPE_P (lhs_type))) return false; + integral_type = INTEGRAL_TYPE_P (rhs_type) ? vectype_in : vectype_out; + if (modifier == NARROW) ncopies = LOOP_VINFO_VECT_FACTOR (loop_vinfo) / nunits_out; else @@ -3540,7 +3543,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, /* Supportable by target? */ if ((modifier == NONE - && !targetm.vectorize.builtin_conversion (code, vectype_in)) + && !targetm.vectorize.builtin_conversion (code, integral_type)) || (modifier == WIDEN && !supportable_widening_operation (code, stmt, vectype_in, &decl1, &decl2, @@ -3550,7 +3553,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, &code1))) { if (vect_print_dump_info (REPORT_DETAILS)) - fprintf (vect_dump, "op not supported by target."); + fprintf (vect_dump, "conversion not supported by target."); return false; } @@ -3593,7 +3596,7 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi, vect_get_vec_defs_for_stmt_copy (dt, &vec_oprnds0, NULL); builtin_decl = - targetm.vectorize.builtin_conversion (code, vectype_in); + targetm.vectorize.builtin_conversion (code, integral_type); for (i = 0; VEC_iterate (tree, vec_oprnds0, i, vop0); i++) { /* Arguments are ready. create the new vector stmt. */ |