]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/70453 (gcc generates invalid instruction vextractu64x4 (should be: vextr...
authorKirill Yukhin <kirill.yukhin@intel.com>
Thu, 31 Mar 2016 15:23:29 +0000 (15:23 +0000)
committerKirill Yukhin <kyukhin@gcc.gnu.org>
Thu, 31 Mar 2016 15:23:29 +0000 (15:23 +0000)
Fix PR target/70453.

gcc/
* config/i386/sse.md (define_mode_attr shuffletype): Fix typo.

gcc/testsuite/
* gcc.target/i386/pr70453.c: New test.

From-SVN: r234634

gcc/ChangeLog
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr70453.c [new file with mode: 0644]

index 64c8fcd5ca51f5f55d8dc66d0c2979c972b9e7c1..5a9b321582232ccffbebcc8ed0c55a3d31b870e7 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-31  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       PR target/70453
+       * config/i386/sse.md (define_mode_attr shuffletype): Fix typo.
+
 2016-03-31  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/70460
index 44141ea5d97f92e2e067d84fd79a33ea5f90988e..5fd650fde4ace23a91a88a7b3c8eb1595d2d216e 100644 (file)
   [(V16SF "f") (V16SI "i") (V8DF "f") (V8DI "i")
   (V8SF "f") (V8SI "i") (V4DF "f") (V4DI "i")
   (V4SF "f") (V4SI "i") (V2DF "f") (V2DI "i")
-  (V32QI "i") (V16HI "u") (V16QI "i") (V8HI "i")
+  (V32QI "i") (V16HI "i") (V16QI "i") (V8HI "i")
   (V64QI "i") (V1TI "i") (V2TI "i")])
 
 (define_mode_attr ssequartermode
index 49c25095da71251f371a460038f986ee47be178d..4cab39478b7ad5b0454462c0da647e44efb3da89 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-31  Kirill Yukhin  <kirill.yukhin@intel.com>
+
+       PR target/70453
+       * gcc.target/i386/pr70453.c: New test.
+
 2016-03-31  Andrey Belevantsev  <abel@ispras.ru>
 
        PR target/70292
diff --git a/gcc/testsuite/gcc.target/i386/pr70453.c b/gcc/testsuite/gcc.target/i386/pr70453.c
new file mode 100644 (file)
index 0000000..2ff1fbb
--- /dev/null
@@ -0,0 +1,18 @@
+/* PR target/70453 */
+/* { dg-do assemble { target { lp64 } } } */
+/* { dg-require-effective-target avx512vbmi } */
+/* { dg-options "-Og -fschedule-insns -mavx512vbmi" } */
+
+
+typedef char v64u8 __attribute__ ((vector_size (64)));
+typedef short v64u16 __attribute__ ((vector_size (64)));
+typedef __int128 v64u128 __attribute__ ((vector_size (64)));
+
+int
+foo(v64u8 v64u8_0, v64u16 v64u16_0, v64u128 v64u128_0)
+{
+  v64u128_0 /= (v64u128){ v64u8_0[28] }  | 0x1424171b0c;
+  v64u8_0 %= (v64u8){ v64u16_0[25], v64u128_0[1]}  ;
+  v64u128_0 %= (v64u128){ v64u16_0[8] };
+  return v64u8_0[0] + v64u8_0[1] + v64u16_0[0] + v64u128_0[0];
+}