Commit aadd9a6e by Jakub Jelinek

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
parent 38de8b39
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> 2019-04-17 Peter Bergner <bergner@linux.ibm.com>
* ira-conflicts.c (print_allocno_conflicts): Always print something, * ira-conflicts.c (print_allocno_conflicts): Always print something,
......
...@@ -12104,10 +12104,10 @@ _mm_maskz_fnmsub_round_ss (__mmask8 __U, __m128 __W, __m128 __A, __m128 __B, ...@@ -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) (__m128) __builtin_ia32_vfmaddss3_mask3 (A, B, C, U, R)
#define _mm_maskz_fmadd_round_sd(U, A, B, C, 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) \ #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) \ #define _mm_mask_fmsub_round_sd(A, U, B, C, R) \
(__m128d) __builtin_ia32_vfmaddsd3_mask (A, B, -(C), U, 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, ...@@ -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) (__m128) __builtin_ia32_vfmsubss3_mask3 (A, B, C, U, R)
#define _mm_maskz_fmsub_round_sd(U, A, B, C, 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) \ #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) \ #define _mm_mask_fnmadd_round_sd(A, U, B, C, R) \
(__m128d) __builtin_ia32_vfmaddsd3_mask (A, -(B), C, U, 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, ...@@ -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) (__m128) __builtin_ia32_vfmaddss3_mask3 (A, -(B), C, U, R)
#define _mm_maskz_fnmadd_round_sd(U, A, B, C, 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) \ #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) \ #define _mm_mask_fnmsub_round_sd(A, U, B, C, R) \
(__m128d) __builtin_ia32_vfmaddsd3_mask (A, -(B), -(C), U, 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, ...@@ -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) (__m128) __builtin_ia32_vfmsubss3_mask3 (A, -(B), C, U, R)
#define _mm_maskz_fnmsub_round_sd(U, A, B, C, 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) \ #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 #endif
#ifdef __OPTIMIZE__ #ifdef __OPTIMIZE__
......
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> 2019-04-17 Marek Polacek <polacek@redhat.com>
PR c++/90124 - bogus error with incomplete type in decltype. PR c++/90124 - bogus error with incomplete type in decltype.
......
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfmaddXXXsd-2.c"
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfmaddXXXss-2.c"
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfmsubXXXsd-2.c"
...@@ -41,8 +41,8 @@ avx512f_test (void) ...@@ -41,8 +41,8 @@ avx512f_test (void)
for (i = 0; i < SIZE; i++) for (i = 0; i < SIZE; i++)
{ {
src1.a[i] = DEFAULT_VALUE; src1.a[i] = DEFAULT_VALUE;
src2.a[i] = 56.78 * (i + 1) * sign; src2.a[i] = 56.75 * (i + 1) * sign;
src3.a[i] = 90.12 * (i + 2) * sign; src3.a[i] = 90.25 * (i + 2) * sign;
sign = sign * -1; sign = sign * -1;
} }
for (i = 0; i < SIZE; i++) for (i = 0; i < SIZE; i++)
......
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfmsubXXXss-2.c"
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfnmaddXXXsd-2.c"
...@@ -41,8 +41,8 @@ avx512f_test (void) ...@@ -41,8 +41,8 @@ avx512f_test (void)
for (i = 0; i < SIZE; i++) for (i = 0; i < SIZE; i++)
{ {
src1.a[i] = DEFAULT_VALUE; src1.a[i] = DEFAULT_VALUE;
src2.a[i] = 56.78 * (i + 1) * sign; src2.a[i] = 56.75 * (i + 1) * sign;
src3.a[i] = 90.12 * (i + 2) * sign; src3.a[i] = 90.25 * (i + 2) * sign;
sign = sign * -1; sign = sign * -1;
} }
for (i = 0; i < SIZE; i++) for (i = 0; i < SIZE; i++)
......
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfnmaddXXXss-2.c"
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfnmsubXXXsd-2.c"
/* { dg-do run } */
/* { dg-options "-O0 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-vfnmsubXXXss-2.c"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment