diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2008-10-08 10:37:02 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2008-10-08 03:37:02 -0700 |
commit | 54723b46231868447f68ed5322d916bd05bffae3 (patch) | |
tree | 104fc5c7bfed600e4090eb5700cc9699279c7e43 /gcc | |
parent | ddd5eeb13ccd898861dbe4827b190f48aac0971d (diff) | |
download | gcc-54723b46231868447f68ed5322d916bd05bffae3.zip gcc-54723b46231868447f68ed5322d916bd05bffae3.tar.gz gcc-54723b46231868447f68ed5322d916bd05bffae3.tar.bz2 |
i386.c (initial_ix86_tune_features): Add X86_TUNE_USE_VECTOR_FP_CONVERTS.
2008-10-08 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (initial_ix86_tune_features): Add
X86_TUNE_USE_VECTOR_FP_CONVERTS.
* config/i386/i386.h (ix86_tune_indices): Likewise.
(TARGET_USE_VECTOR_FP_CONVERTS): New.
* config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
for FP to FP splitters.
From-SVN: r140972
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 4 |
4 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5fa5070..9fc2a98 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,16 @@ 2008-10-08 H.J. Lu <hongjiu.lu@intel.com> + * config/i386/i386.c (initial_ix86_tune_features): Add + X86_TUNE_USE_VECTOR_FP_CONVERTS. + * config/i386/i386.h (ix86_tune_indices): Likewise. + (TARGET_USE_VECTOR_FP_CONVERTS): New. + + * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS + instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC) + for FP to FP splitters. + +2008-10-08 H.J. Lu <hongjiu.lu@intel.com> + * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert splitter. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index be37117..a3d4951 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1434,6 +1434,10 @@ static unsigned int initial_ix86_tune_features[X86_TUNE_LAST] = { replacement is long decoded, so this split helps here as well. */ m_K6, + /* X86_TUNE_USE_VECTOR_FP_CONVERTS: Prefer vector packed SSE conversion + from FP to FP. */ + m_AMDFAM10 | m_GENERIC, + /* X86_TUNE_USE_VECTOR_CONVERTS: Prefer vector packed SSE conversion from integer to FP. */ m_AMDFAM10, diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 81a282e..32f793b 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -292,6 +292,7 @@ enum ix86_tune_indices { X86_TUNE_MOVE_M1_VIA_OR, X86_TUNE_NOT_UNPAIRABLE, X86_TUNE_NOT_VECTORMODE, + X86_TUNE_USE_VECTOR_FP_CONVERTS, X86_TUNE_USE_VECTOR_CONVERTS, X86_TUNE_FUSE_CMP_AND_BRANCH, @@ -375,6 +376,8 @@ extern unsigned char ix86_tune_features[X86_TUNE_LAST]; #define TARGET_MOVE_M1_VIA_OR ix86_tune_features[X86_TUNE_MOVE_M1_VIA_OR] #define TARGET_NOT_UNPAIRABLE ix86_tune_features[X86_TUNE_NOT_UNPAIRABLE] #define TARGET_NOT_VECTORMODE ix86_tune_features[X86_TUNE_NOT_VECTORMODE] +#define TARGET_USE_VECTOR_FP_CONVERTS \ + ix86_tune_features[X86_TUNE_USE_VECTOR_FP_CONVERTS] #define TARGET_USE_VECTOR_CONVERTS \ ix86_tune_features[X86_TUNE_USE_VECTOR_CONVERTS] #define TARGET_FUSE_CMP_AND_BRANCH \ diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 0c3442c..ff5b679 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4216,7 +4216,7 @@ [(set (match_operand:DF 0 "register_operand" "") (float_extend:DF (match_operand:SF 1 "nonimmediate_operand" "")))] - "(TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC) + "TARGET_USE_VECTOR_FP_CONVERTS && optimize_insn_for_speed_p () && reload_completed && SSE_REG_P (operands[0])" [(set (match_dup 2) @@ -4356,7 +4356,7 @@ [(set (match_operand:SF 0 "register_operand" "") (float_truncate:SF (match_operand:DF 1 "nonimmediate_operand" "")))] - "(TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC) + "TARGET_USE_VECTOR_FP_CONVERTS && optimize_insn_for_speed_p () && reload_completed && SSE_REG_P (operands[0])" [(set (match_dup 2) |