i386.c (ix86_expand_vector_init_general): Remove goto for vec_concat and vec_interleave.
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 21 May 2008 16:57:05 +0000 (16:57 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 21 May 2008 16:57:05 +0000 (09:57 -0700)
2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/i386.c (ix86_expand_vector_init_general): Remove
goto for vec_concat and vec_interleave.

From-SVN: r135725

gcc/ChangeLog
gcc/config/i386/i386.c

index b686fe5db7fec1f24766b3e8c45342eb49d14c38..55b99682d9fe31950c2740cf7361b5603eab4cdb 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/i386/i386.c (ix86_expand_vector_init_general): Remove
+       goto for vec_concat and vec_interleave.
+
 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/i386/sse.md (vec_initv4sf): Removed.
index c61cc8a87cf2fdc1190df81eab8f4693292b5823..c36b42550667369b3732e05d4a9aab4cc4ec7ae6 100644 (file)
@@ -24084,21 +24084,13 @@ ix86_expand_vector_init_general (bool mmx_ok, enum machine_mode mode,
     case V2SImode:
       if (!mmx_ok && !TARGET_SSE)
        break;
-
-      n = 2;
-      goto vec_concat;
+      /* FALLTHRU */
 
     case V4SFmode:
     case V4SImode:
-      n = 4;
-      goto vec_concat;
-
     case V2DFmode:
     case V2DImode:
-      n = 2;
-      goto vec_concat;
-
-vec_concat:
+      n = GET_MODE_SIZE (mode) / GET_MODE_SIZE (GET_MODE_INNER (mode));
       for (i = 0; i < n; i++)
        ops[i] = XVECEXP (vals, 0, i);
       ix86_expand_vector_init_concat (mode, target, ops, n);
@@ -24107,18 +24099,13 @@ vec_concat:
     case V16QImode:
       if (!TARGET_SSE4_1)
        break;
-
-      n = 16;
-      goto vec_interleave;
+      /* FALLTHRU */
 
     case V8HImode:
       if (!TARGET_SSE2)
        break;
 
-      n = 8;
-      goto vec_interleave;
-
-vec_interleave:
+      n = GET_MODE_SIZE (mode) / GET_MODE_SIZE (GET_MODE_INNER (mode));
       for (i = 0; i < n; i++)
        ops[i] = XVECEXP (vals, 0, i);
       ix86_expand_vector_init_interleave (mode, target, ops, n >> 1);