https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91498

--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
Following patch

--cut here--
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 49ab50ea41bf..11c75be113e0 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -18601,9 +18601,9 @@ ix86_register_move_cost (machine_mode mode, reg_class_t
class1_i,
        where integer modes in SSE registers are not tieable
        because of missing QImode and HImode moves to, from or between
        MMX/SSE registers.  */
-    return MAX (8, SSE_CLASS_P (class1)
-               ? ix86_cost->hard_register.sse_to_integer
-               : ix86_cost->hard_register.integer_to_sse);
+    return (SSE_CLASS_P (class1)
+           ? ix86_cost->hard_register.sse_to_integer
+           : ix86_cost->hard_register.integer_to_sse);

   if (MAYBE_FLOAT_CLASS_P (class1))
     return ix86_cost->hard_register.fp_move;
--cut here--

fixes the regression.

(BTW: QI/HImodes are not "missing" at all. We can use %k modifier to move
QImode and HImode values using MOVD instruction between register sets.)

Reply via email to