]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
i386.c (initial_ix86_tune_features): Add X86_TUNE_USE_VECTOR_FP_CONVERTS.
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 8 Oct 2008 10:37:02 +0000 (10:37 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 8 Oct 2008 10:37:02 +0000 (03:37 -0700)
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

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/i386.md

index 5fa5070d58bf8c0c8d8209bda8194efd78229dcd..9fc2a98f50a839daa779cbd42b306a747607807e 100644 (file)
@@ -1,3 +1,14 @@
+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
index be371173fa2cc7d34755439115e71a464705c07b..a3d4951fafe88484cab642d25b350a812b8a6464 100644 (file)
@@ -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,
index 81a282e055399e1990769f9a5e4cccd3b624798c..32f793b1cf752cdc5a38f6713a5a7a1540ebac99 100644 (file)
@@ -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 \
index 0c3442c0f40b905009a974643a1b4b0e91216917..ff5b679ed6fbb3cf6716deb2c01309efe3265af2 100644 (file)
   [(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)
   [(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)