sh.md (movv8qi_i+2): For V8QI destinations, generate V4HI register for mperm_w operation.
authorJ"orn Rennecke <joern.rennecke@superh.com>
Fri, 11 Oct 2002 11:36:21 +0000 (11:36 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Fri, 11 Oct 2002 11:36:21 +0000 (12:36 +0100)
* sh.md (movv8qi_i+2): For V8QI destinations, generate V4HI
register for mperm_w operation.

From-SVN: r58051

gcc/ChangeLog
gcc/config/sh/sh.md

index c2c29c58b03f3ccc9fdbbea5510b0ba5390986fb..8330920785c8a8e8cafe040ea65f26f5ac717a7c 100644 (file)
@@ -1,3 +1,8 @@
+Fri Oct 11 12:34:33 2002  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * sh.md (movv8qi_i+2): For V8QI destinations, generate V4HI
+       register for mperm_w operation.
+
 Fri Oct 11 10:56:17 2002  J"orn Rennecke <joern.rennecke@superh.com>
 
        * emit-rtl.c (gen_lowpart_common): When asked to make a vector from
index 2c02ee373130b312bd96d333d88cf30b5253204c..a27170922a1eb42258e516dda116615ee1392e07 100644 (file)
   if (unit_size > 2)
     operands[2] = gen_mshflo_l (operands[0], operands[0], operands[0]);
   else
-    operands[2] = gen_mperm_w0 (operands[0], operands[0]);
+    {
+      if (unit_size < 2)
+       operands[0] = gen_rtx_REG (V4HImode, true_regnum (operands[0]));
+      operands[2] = gen_mperm_w0 (operands[0], operands[0]);
+    }
   operands[0] = gen_rtx_REG (DImode, true_regnum (operands[0]));
   operands[1] = XVECEXP (operands[1], 0, 0);
   if (unit_size < 2)