aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2008-05-21 16:57:05 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2008-05-21 09:57:05 -0700
commit0864e1e889d6d9d1b17d6fffb5e00e9071ae0810 (patch)
tree6ea4edf0dffd9af479bdcae4169a6f57d239b436
parentf8caa3a86cd7cd739d6a228489d2eb0eaaa63cef (diff)
downloadgcc-0864e1e889d6d9d1b17d6fffb5e00e9071ae0810.zip
gcc-0864e1e889d6d9d1b17d6fffb5e00e9071ae0810.tar.gz
gcc-0864e1e889d6d9d1b17d6fffb5e00e9071ae0810.tar.bz2
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/i386.c (ix86_expand_vector_init_general): Remove goto for vec_concat and vec_interleave. From-SVN: r135725
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c21
2 files changed, 9 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b686fe5..55b9968 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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.
(vec_initv2df): Likewise.
(vec_initv2di): Likewise.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index c61cc8a..c36b425 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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);