From 41ee4e75ab27ebf63d1512fc56e673fdee74e8aa Mon Sep 17 00:00:00 2001
From: Jan Hubicka <hubicka@ucw.cz>
Date: Mon, 31 Dec 2018 11:05:30 +0100
Subject: [PATCH] * x86-tune.def: Enable inter_unit_moves_to_vec for generic.

From-SVN: r267484
---
 gcc/ChangeLog                | 4 ++++
 gcc/config/i386/x86-tune.def | 8 ++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 54585381cbe4..5ef85238541a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2018-12-30  Jan Hubicka  <hubicka@ucw.cz>
+
+	* x86-tune.def: Enable inter_unit_moves_to_vec for generic.
+
 2018-12-30  Martin Sebor  <msebor@redhat.com>
 	    Jeff Law  <law@redhat.com>
 
diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
index b91dca18af9e..02d8eda997fa 100644
--- a/gcc/config/i386/x86-tune.def
+++ b/gcc/config/i386/x86-tune.def
@@ -379,9 +379,13 @@ DEF_TUNE (X86_TUNE_SSE_LOAD0_BY_PXOR, "sse_load0_by_pxor",
 
 /* X86_TUNE_INTER_UNIT_MOVES_TO_VEC: Enable moves in from integer
    to SSE registers.  If disabled, the moves will be done by storing
-   the value to memory and reloading.  */
+   the value to memory and reloading.
+   Enable this flag for generic - the only relevant architecture preferring
+   no inter-unit moves is Buldozer. While this makes small regression on SPECfp
+   scores (sub 0.3%), disabling inter-unit moves penalizes noticeably hand
+   written vectorized code which use i.e. _mm_set_epi16.  */
 DEF_TUNE (X86_TUNE_INTER_UNIT_MOVES_TO_VEC, "inter_unit_moves_to_vec",
-          ~(m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER | m_GENERIC))
+          ~(m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER))
 
 /* X86_TUNE_INTER_UNIT_MOVES_TO_VEC: Enable moves in from SSE
    to integer registers.  If disabled, the moves will be done by storing
-- 
GitLab