diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2010-11-10 20:08:27 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2010-11-10 12:08:27 -0800 |
commit | c204d113c0f4fb764de0482320fcfa98af651607 (patch) | |
tree | d984c938b2229ed019403ce490a8feadc6d4b9ae /gcc/tree-inline.c | |
parent | e6a054481d2586056b845639c8e26158169c027f (diff) | |
download | gcc-c204d113c0f4fb764de0482320fcfa98af651607.zip gcc-c204d113c0f4fb764de0482320fcfa98af651607.tar.gz gcc-c204d113c0f4fb764de0482320fcfa98af651607.tar.bz2 |
Check preferred vector mode for vector type in estimate_move_cost.
gcc/
2010-11-10 H.J. Lu <hongjiu.lu@intel.com>
PR tree-optimization/46414
* tree-inline.c (estimate_move_cost): Check preferred vector
mode for vector type.
gcc/testsuite/
2010-11-10 H.J. Lu <hongjiu.lu@intel.com>
PR tree-optimization/46414
* gcc.target/i386/recip-vec-sqrtf-avx.c: Updated for loop
unrolling.
From-SVN: r166552
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index fc470a7..2c05835 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -3249,6 +3249,16 @@ estimate_move_cost (tree type) gcc_assert (!VOID_TYPE_P (type)); + if (TREE_CODE (type) == VECTOR_TYPE) + { + enum machine_mode inner = TYPE_MODE (TREE_TYPE (type)); + enum machine_mode simd + = targetm.vectorize.preferred_simd_mode (inner); + int simd_mode_size = GET_MODE_SIZE (simd); + return ((GET_MODE_SIZE (TYPE_MODE (type)) + simd_mode_size - 1) + / simd_mode_size); + } + size = int_size_in_bytes (type); if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO (!optimize_size)) |