aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2018-08-15 21:34:26 +0200
committerUros Bizjak <uros@gcc.gnu.org>2018-08-15 21:34:26 +0200
commit0c8956e09adb63362e8596548f8631a26ac7ff9b (patch)
tree49e31ff204ae79662246eb77f5c1460812fb2beb
parentb479fbad246b04fca27175415cfafe40404443d2 (diff)
downloadgcc-0c8956e09adb63362e8596548f8631a26ac7ff9b.zip
gcc-0c8956e09adb63362e8596548f8631a26ac7ff9b.tar.gz
gcc-0c8956e09adb63362e8596548f8631a26ac7ff9b.tar.bz2
i386.c (expand_vec_perm_movs): Enable V4SFmode for TARGET_SSE.
* config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode for TARGET_SSE. From-SVN: r263567
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/emmintrin.h2
-rw-r--r--gcc/config/i386/i386.c5
3 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8ea9783..d922dee 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-15 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (expand_vec_perm_movs): Enable V4SFmode
+ for TARGET_SSE.
+
2018-08-15 David Malcolm <dmalcolm@redhat.com>
* common.opt (fdiagnostics-show-labels): New option.
diff --git a/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h
index 6501638..7a6ff80 100644
--- a/gcc/config/i386/emmintrin.h
+++ b/gcc/config/i386/emmintrin.h
@@ -113,7 +113,7 @@ _mm_setzero_pd (void)
extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_move_sd (__m128d __A, __m128d __B)
{
- return __extension__ (__m128d) __builtin_shuffle((__v2df)__A, (__v2df)__B, (__v2di){2, 1});
+ return __extension__ (__m128d) __builtin_shuffle ((__v2df)__A, (__v2df)__B, (__v2di){2, 1});
}
/* Load two DPFP values from P. The address must be 16-byte aligned. */
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 15a3caa..dad91c1 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -46157,9 +46157,8 @@ expand_vec_perm_movs (struct expand_vec_perm_d *d)
if (d->one_operand_p)
return false;
- if (TARGET_SSE2 && (vmode == V2DFmode || vmode == V4SFmode))
- ;
- else
+ if (!(TARGET_SSE && vmode == V4SFmode)
+ && !(TARGET_SSE2 && vmode == V2DFmode))
return false;
/* Only the first element is changed. */