aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2019-04-17 21:23:45 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-04-17 21:23:45 +0200
commitaadd9a6e26915538eb1417c36c43739b09acfe48 (patch)
treea48ba8ca69c0e1c7ab20ae91f40befd281bf9546
parent38de8b39ef9202c742226c70484a19f6df84b7cb (diff)
downloadgcc-aadd9a6e26915538eb1417c36c43739b09acfe48.zip
gcc-aadd9a6e26915538eb1417c36c43739b09acfe48.tar.gz
gcc-aadd9a6e26915538eb1417c36c43739b09acfe48.tar.bz2
re PR target/90125 (Typo of AVX512 intrinsics)
PR target/90125 * config/i386/avx512fintrin.h (_mm_maskz_fmadd_round_sd, _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd, _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd, _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd, _mm_maskz_fnmsub_round_ss): Use _maskz builtin instead of _mask3. PR target/90125 * gcc.target/i386/avx512f-vfmsubXXXss-2.c (avx512f_test): Adjust constants to ensure precise result even when not using fma. * gcc.target/i386/avx512f-vfnmaddXXXss-2.c (avx512f_test): Likewise. * gcc.target/i386/avx512f-vfmaddXXXsd-3.c: New test. * gcc.target/i386/avx512f-vfmaddXXXss-3.c: New test. * gcc.target/i386/avx512f-vfmsubXXXsd-3.c: New test. * gcc.target/i386/avx512f-vfmsubXXXss-3.c: New test. * gcc.target/i386/avx512f-vfnmaddXXXsd-3.c: New test. * gcc.target/i386/avx512f-vfnmaddXXXss-3.c: New test. * gcc.target/i386/avx512f-vfnmsubXXXsd-3.c: New test. * gcc.target/i386/avx512f-vfnmsubXXXss-3.c: New test. From-SVN: r270421
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/i386/avx512fintrin.h16
-rw-r--r--gcc/testsuite/ChangeLog15
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-2.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-2.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-3.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-3.c5
13 files changed, 76 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3b01ff7..4744dd2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2019-04-17 Hongtao Liu <hongtao.liu@intel.com>
+
+ PR target/90125
+ * config/i386/avx512fintrin.h (_mm_maskz_fmadd_round_sd,
+ _mm_maskz_fmadd_round_ss, _mm_maskz_fmsub_round_sd,
+ _mm_maskz_fmsub_round_ss, _mm_maskz_fnmadd_round_sd,
+ _mm_maskz_fnmadd_round_ss, _mm_maskz_fnmsub_round_sd,
+ _mm_maskz_fnmsub_round_ss): Use _maskz builtin instead of _mask3.
+
2019-04-17 Peter Bergner <bergner@linux.ibm.com>
* ira-conflicts.c (print_allocno_conflicts): Always print something,
diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h
index afcba5d..e35eedb 100644
--- a/gcc/config/i386/avx512fintrin.h
+++ b/gcc/config/i386/avx512fintrin.h
@@ -12104,10 +12104,10 @@ _mm_maskz_fnmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
(__m128) __builtin_ia32_vfmaddss3_mask3 (A, B, C, U, R)
#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) \
- (__m128d) __builtin_ia32_vfmaddsd3_mask3 (A, B, C, U, R)
+ (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, B, C, U, R)
#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) \
- (__m128) __builtin_ia32_vfmaddss3_mask3 (A, B, C, U, R)
+ (__m128) __builtin_ia32_vfmaddss3_maskz (A, B, C, U, R)
#define _mm_mask_fmsub_round_sd(A, U, B, C, R) \
(__m128d) __builtin_ia32_vfmaddsd3_mask (A, B, -(C), U, R)
@@ -12122,10 +12122,10 @@ _mm_maskz_fnmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
(__m128) __builtin_ia32_vfmsubss3_mask3 (A, B, C, U, R)
#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) \
- (__m128d) __builtin_ia32_vfmaddsd3_mask3 (A, B, -(C), U, R)
+ (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, B, -(C), U, R)
#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) \
- (__m128) __builtin_ia32_vfmaddss3_mask3 (A, B, -(C), U, R)
+ (__m128) __builtin_ia32_vfmaddss3_maskz (A, B, -(C), U, R)
#define _mm_mask_fnmadd_round_sd(A, U, B, C, R) \
(__m128d) __builtin_ia32_vfmaddsd3_mask (A, -(B), C, U, R)
@@ -12140,10 +12140,10 @@ _mm_maskz_fnmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
(__m128) __builtin_ia32_vfmaddss3_mask3 (A, -(B), C, U, R)
#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) \
- (__m128d) __builtin_ia32_vfmaddsd3_mask3 (A, -(B), C, U, R)
+ (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, -(B), C, U, R)
#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) \
- (__m128) __builtin_ia32_vfmaddss3_mask3 (A, -(B), C, U, R)
+ (__m128) __builtin_ia32_vfmaddss3_maskz (A, -(B), C, U, R)
#define _mm_mask_fnmsub_round_sd(A, U, B, C, R) \
(__m128d) __builtin_ia32_vfmaddsd3_mask (A, -(B), -(C), U, R)
@@ -12158,10 +12158,10 @@ _mm_maskz_fnmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B,
(__m128) __builtin_ia32_vfmsubss3_mask3 (A, -(B), C, U, R)
#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) \
- (__m128d) __builtin_ia32_vfmaddsd3_mask3 (A, -(B), -(C), U, R)
+ (__m128d) __builtin_ia32_vfmaddsd3_maskz (A, -(B), -(C), U, R)
#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) \
- (__m128) __builtin_ia32_vfmaddss3_mask3 (A, -(B), -(C), U, R)
+ (__m128) __builtin_ia32_vfmaddss3_maskz (A, -(B), -(C), U, R)
#endif
#ifdef __OPTIMIZE__
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e9e0077..963245e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2019-04-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/90125
+ * gcc.target/i386/avx512f-vfmsubXXXss-2.c (avx512f_test): Adjust
+ constants to ensure precise result even when not using fma.
+ * gcc.target/i386/avx512f-vfnmaddXXXss-2.c (avx512f_test): Likewise.
+ * gcc.target/i386/avx512f-vfmaddXXXsd-3.c: New test.
+ * gcc.target/i386/avx512f-vfmaddXXXss-3.c: New test.
+ * gcc.target/i386/avx512f-vfmsubXXXsd-3.c: New test.
+ * gcc.target/i386/avx512f-vfmsubXXXss-3.c: New test.
+ * gcc.target/i386/avx512f-vfnmaddXXXsd-3.c: New test.
+ * gcc.target/i386/avx512f-vfnmaddXXXss-3.c: New test.
+ * gcc.target/i386/avx512f-vfnmsubXXXsd-3.c: New test.
+ * gcc.target/i386/avx512f-vfnmsubXXXss-3.c: New test.
+
2019-04-17 Marek Polacek <polacek@redhat.com>
PR c++/90124 - bogus error with incomplete type in decltype.
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-3.c
new file mode 100644
index 0000000..8ad05b8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXsd-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfmaddXXXsd-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-3.c
new file mode 100644
index 0000000..b373816
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmaddXXXss-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfmaddXXXss-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-3.c
new file mode 100644
index 0000000..ed10e18
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXsd-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfmsubXXXsd-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-2.c
index 6beaed8..cd3131f 100644
--- a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-2.c
@@ -41,8 +41,8 @@ avx512f_test (void)
for (i = 0; i < SIZE; i++)
{
src1.a[i] = DEFAULT_VALUE;
- src2.a[i] = 56.78 * (i + 1) * sign;
- src3.a[i] = 90.12 * (i + 2) * sign;
+ src2.a[i] = 56.75 * (i + 1) * sign;
+ src3.a[i] = 90.25 * (i + 2) * sign;
sign = sign * -1;
}
for (i = 0; i < SIZE; i++)
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-3.c
new file mode 100644
index 0000000..d1b268e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfmsubXXXss-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfmsubXXXss-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-3.c
new file mode 100644
index 0000000..70b47f7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXsd-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfnmaddXXXsd-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-2.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-2.c
index e94b7d4..aad28c4 100644
--- a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-2.c
@@ -41,8 +41,8 @@ avx512f_test (void)
for (i = 0; i < SIZE; i++)
{
src1.a[i] = DEFAULT_VALUE;
- src2.a[i] = 56.78 * (i + 1) * sign;
- src3.a[i] = 90.12 * (i + 2) * sign;
+ src2.a[i] = 56.75 * (i + 1) * sign;
+ src3.a[i] = 90.25 * (i + 2) * sign;
sign = sign * -1;
}
for (i = 0; i < SIZE; i++)
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-3.c
new file mode 100644
index 0000000..ab352a2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmaddXXXss-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfnmaddXXXss-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-3.c
new file mode 100644
index 0000000..f454094
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXsd-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfnmsubXXXsd-2.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-3.c b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-3.c
new file mode 100644
index 0000000..dcc1a8f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-vfnmsubXXXss-3.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512f" } */
+/* { dg-require-effective-target avx512f } */
+
+#include "avx512f-vfnmsubXXXss-2.c"