https://gcc.gnu.org/g:b2667fca938c393579e6e4ae9144ff5111ee8b8f
commit r15-7133-gb2667fca938c393579e6e4ae9144ff5111ee8b8f Author: Haochen Jiang <haochen.ji...@intel.com> Date: Thu Jan 23 09:51:56 2025 +0800 i386: Change mnemonics from V[ADDNE,DIVNE,MULNE,RCP,SUBNE]PBF16 to V[ADD,DIV,MUL,RCP,SUB]BF16 gcc/ChangeLog: PR target/118270 * config/i386/avx10_2-512bf16intrin.h: Change intrin and builtin name according to new mnemonics. * config/i386/avx10_2bf16intrin.h: Ditto. * config/i386/i386-builtin.def (BDESC): Ditto. * config/i386/sse.md (div<mode>3): Adjust emit_insn. (avx10_2_<insn>nepbf16_<mode><mask_name>): Rename to... (avx10_2_<insn>bf16_<mode><mask_name>): ...this. Change instruction name output. (avx10_2_rcppbf16_<mode><mask_name>): Rename to... (avx10_2_rcpbf16_<mode><mask_name>):...this. Change instruction name output. gcc/testsuite/ChangeLog: PR target/118270 * gcc.target/i386/avx10_2-512-bf16-1.c: Adjust output and intrin call. * gcc.target/i386/avx10_2-512-bf-vector-operations-1.c: Move to ... * gcc.target/i386/avx10_2-512-bf16-vector-operations-1.c: ...here. Adjust asm check. * gcc.target/i386/avx10_2-512-vaddnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-512-vaddbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-512-vdivnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-512-vdivbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-512-vmulnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-512-vmulbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-512-vrcppbf16-2.c: Move to... * gcc.target/i386/avx10_2-512-vrcpbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-512-vsubnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-512-vsubbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-bf16-1.c: Adjust output and intrin call. * gcc.target/i386/avx10_2-bf-vector-operations-1.c: Move to .... * gcc.target/i386/avx10_2-bf16-vector-operations-1.c: ...here. Adjust asm check. * gcc.target/i386/avx10_2-partial-bf-vector-fast-math-1.c: Move to... * gcc.target/i386/avx10_2-partial-bf16-vector-fast-math-1.c: ...here. Adjust asm check. * gcc.target/i386/avx10_2-partial-bf-vector-operations-1.c: Move to... * gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c: ...here. Adjust asm check. * gcc.target/i386/avx10_2-vaddnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-vaddbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-vdivnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-vdivbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-vmulnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-vmulbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-vrcppbf16-2.c: Move to... * gcc.target/i386/avx10_2-vrcpbf16-2.c: ...here. Adjust intrin call. * gcc.target/i386/avx10_2-vsubnepbf16-2.c: Move to... * gcc.target/i386/avx10_2-vsubbf16-2.c: ...here. Adjust intrin call. * lib/target-supports.exp (check_effective_target_avx10_2): Adjust asm usage. (check_effective_target_avx10_2_512): Ditto. Diff: --- gcc/config/i386/avx10_2-512bf16intrin.h | 86 +++++----- gcc/config/i386/avx10_2bf16intrin.h | 174 ++++++++++----------- gcc/config/i386/i386-builtin.def | 54 +++---- gcc/config/i386/sse.md | 12 +- .../i386/avx10_2-512-bf-vector-operations-1.c | 42 ----- gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-1.c | 54 +++---- .../i386/avx10_2-512-bf16-vector-operations-1.c | 42 +++++ ...12-vaddnepbf16-2.c => avx10_2-512-vaddbf16-2.c} | 6 +- ...12-vdivnepbf16-2.c => avx10_2-512-vdivbf16-2.c} | 6 +- ...12-vmulnepbf16-2.c => avx10_2-512-vmulbf16-2.c} | 6 +- ...-512-vrcppbf16-2.c => avx10_2-512-vrcpbf16-2.c} | 0 ...12-vsubnepbf16-2.c => avx10_2-512-vsubbf16-2.c} | 6 +- .../i386/avx10_2-bf-vector-operations-1.c | 79 ---------- gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c | 108 ++++++------- .../i386/avx10_2-bf16-vector-operations-1.c | 79 ++++++++++ ...c => avx10_2-partial-bf16-vector-fast-math-1.c} | 4 +- ... => avx10_2-partial-bf16-vector-operations-1.c} | 8 +- ...{avx10_2-vrcppbf16-2.c => avx10_2-vaddbf16-2.c} | 4 +- ...vx10_2-vaddnepbf16-2.c => avx10_2-vdivbf16-2.c} | 4 +- ...vx10_2-vdivnepbf16-2.c => avx10_2-vmulbf16-2.c} | 4 +- ...vx10_2-vmulnepbf16-2.c => avx10_2-vrcpbf16-2.c} | 4 +- gcc/testsuite/gcc.target/i386/avx10_2-vsubbf16-2.c | 16 ++ .../gcc.target/i386/avx10_2-vsubnepbf16-2.c | 16 -- gcc/testsuite/lib/target-supports.exp | 4 +- 24 files changed, 409 insertions(+), 409 deletions(-) diff --git a/gcc/config/i386/avx10_2-512bf16intrin.h b/gcc/config/i386/avx10_2-512bf16intrin.h index d43860a18a2f..4d197afc7027 100644 --- a/gcc/config/i386/avx10_2-512bf16intrin.h +++ b/gcc/config/i386/avx10_2-512bf16intrin.h @@ -36,106 +36,106 @@ extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_addne_pbh (__m512bh __A, __m512bh __B) +_mm512_add_pbh (__m512bh __A, __m512bh __B) { - return (__m512bh) __builtin_ia32_addnepbf16512 (__A, __B); + return (__m512bh) __builtin_ia32_addbf16512 (__A, __B); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_addne_pbh (__m512bh __W, __mmask32 __U, - __m512bh __A, __m512bh __B) +_mm512_mask_add_pbh (__m512bh __W, __mmask32 __U, + __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_addnepbf16512_mask (__A, __B, __W, __U); + __builtin_ia32_addbf16512_mask (__A, __B, __W, __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_addne_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) +_mm512_maskz_add_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_addnepbf16512_mask (__A, __B, - (__v32bf) _mm512_setzero_si512 (), - __U); + __builtin_ia32_addbf16512_mask (__A, __B, + (__v32bf) _mm512_setzero_si512 (), + __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_subne_pbh (__m512bh __A, __m512bh __B) +_mm512_sub_pbh (__m512bh __A, __m512bh __B) { - return (__m512bh) __builtin_ia32_subnepbf16512 (__A, __B); + return (__m512bh) __builtin_ia32_subbf16512 (__A, __B); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_subne_pbh (__m512bh __W, __mmask32 __U, - __m512bh __A, __m512bh __B) +_mm512_mask_sub_pbh (__m512bh __W, __mmask32 __U, + __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_subnepbf16512_mask (__A, __B, __W, __U); + __builtin_ia32_subbf16512_mask (__A, __B, __W, __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_subne_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) +_mm512_maskz_sub_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_subnepbf16512_mask (__A, __B, - (__v32bf) _mm512_setzero_si512 (), - __U); + __builtin_ia32_subbf16512_mask (__A, __B, + (__v32bf) _mm512_setzero_si512 (), + __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mulne_pbh (__m512bh __A, __m512bh __B) +_mm512_mul_pbh (__m512bh __A, __m512bh __B) { - return (__m512bh) __builtin_ia32_mulnepbf16512 (__A, __B); + return (__m512bh) __builtin_ia32_mulbf16512 (__A, __B); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_mulne_pbh (__m512bh __W, __mmask32 __U, - __m512bh __A, __m512bh __B) +_mm512_mask_mul_pbh (__m512bh __W, __mmask32 __U, + __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_mulnepbf16512_mask (__A, __B, __W, __U); + __builtin_ia32_mulbf16512_mask (__A, __B, __W, __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_mulne_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) +_mm512_maskz_mul_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_mulnepbf16512_mask (__A, __B, - (__v32bf) _mm512_setzero_si512 (), - __U); + __builtin_ia32_mulbf16512_mask (__A, __B, + (__v32bf) _mm512_setzero_si512 (), + __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_divne_pbh (__m512bh __A, __m512bh __B) +_mm512_div_pbh (__m512bh __A, __m512bh __B) { - return (__m512bh) __builtin_ia32_divnepbf16512 (__A, __B); + return (__m512bh) __builtin_ia32_divbf16512 (__A, __B); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_divne_pbh (__m512bh __W, __mmask32 __U, - __m512bh __A, __m512bh __B) +_mm512_mask_div_pbh (__m512bh __W, __mmask32 __U, + __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_divnepbf16512_mask (__A, __B, __W, __U); + __builtin_ia32_divbf16512_mask (__A, __B, __W, __U); } extern __inline__ __m512bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_divne_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) +_mm512_maskz_div_pbh (__mmask32 __U, __m512bh __A, __m512bh __B) { return (__m512bh) - __builtin_ia32_divnepbf16512_mask (__A, __B, - (__v32bf) _mm512_setzero_si512 (), - __U); + __builtin_ia32_divbf16512_mask (__A, __B, + (__v32bf) _mm512_setzero_si512 (), + __U); } extern __inline__ __m512bh @@ -418,9 +418,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_rcp_pbh (__m512bh __A) { return (__m512bh) - __builtin_ia32_rcppbf16512_mask (__A, - (__v32bf) _mm512_setzero_si512 (), - (__mmask32) -1); + __builtin_ia32_rcpbf16512_mask (__A, + (__v32bf) _mm512_setzero_si512 (), + (__mmask32) -1); } extern __inline__ __m512bh @@ -428,7 +428,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_mask_rcp_pbh (__m512bh __W, __mmask32 __U, __m512bh __A) { return (__m512bh) - __builtin_ia32_rcppbf16512_mask (__A, __W, __U); + __builtin_ia32_rcpbf16512_mask (__A, __W, __U); } extern __inline__ __m512bh @@ -436,9 +436,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_maskz_rcp_pbh (__mmask32 __U, __m512bh __A) { return (__m512bh) - __builtin_ia32_rcppbf16512_mask (__A, - (__v32bf) _mm512_setzero_si512 (), - __U); + __builtin_ia32_rcpbf16512_mask (__A, + (__v32bf) _mm512_setzero_si512 (), + __U); } extern __inline__ __m512bh diff --git a/gcc/config/i386/avx10_2bf16intrin.h b/gcc/config/i386/avx10_2bf16intrin.h index 1394cd2699b0..216e8bd32cdd 100644 --- a/gcc/config/i386/avx10_2bf16intrin.h +++ b/gcc/config/i386/avx10_2bf16intrin.h @@ -36,217 +36,217 @@ extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_addne_pbh (__m256bh __A, __m256bh __B) +_mm256_add_pbh (__m256bh __A, __m256bh __B) { - return (__m256bh) __builtin_ia32_addnepbf16256 (__A, __B); + return (__m256bh) __builtin_ia32_addbf16256 (__A, __B); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_mask_addne_pbh (__m256bh __W, __mmask16 __U, - __m256bh __A, __m256bh __B) +_mm256_mask_add_pbh (__m256bh __W, __mmask16 __U, + __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_addnepbf16256_mask (__A, __B, __W, __U); + __builtin_ia32_addbf16256_mask (__A, __B, __W, __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_maskz_addne_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) +_mm256_maskz_add_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_addnepbf16256_mask (__A, __B, - (__v16bf) _mm256_setzero_si256 (), - __U); + __builtin_ia32_addbf16256_mask (__A, __B, + (__v16bf) _mm256_setzero_si256 (), + __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_addne_pbh (__m128bh __A, __m128bh __B) +_mm_add_pbh (__m128bh __A, __m128bh __B) { - return (__m128bh) __builtin_ia32_addnepbf16128 (__A, __B); + return (__m128bh) __builtin_ia32_addbf16128 (__A, __B); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_addne_pbh (__m128bh __W, __mmask8 __U, - __m128bh __A, __m128bh __B) +_mm_mask_add_pbh (__m128bh __W, __mmask8 __U, + __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_addnepbf16128_mask (__A, __B, __W, __U); + __builtin_ia32_addbf16128_mask (__A, __B, __W, __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_addne_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) +_mm_maskz_add_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_addnepbf16128_mask (__A, __B, - (__v8bf) _mm_setzero_si128 (), - __U); + __builtin_ia32_addbf16128_mask (__A, __B, + (__v8bf) _mm_setzero_si128 (), + __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_subne_pbh (__m256bh __A, __m256bh __B) +_mm256_sub_pbh (__m256bh __A, __m256bh __B) { - return (__m256bh) __builtin_ia32_subnepbf16256 (__A, __B); + return (__m256bh) __builtin_ia32_subbf16256 (__A, __B); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_mask_subne_pbh (__m256bh __W, __mmask16 __U, - __m256bh __A, __m256bh __B) +_mm256_mask_sub_pbh (__m256bh __W, __mmask16 __U, + __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_subnepbf16256_mask (__A, __B, __W, __U); + __builtin_ia32_subbf16256_mask (__A, __B, __W, __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_maskz_subne_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) +_mm256_maskz_sub_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_subnepbf16256_mask (__A, __B, - (__v16bf) _mm256_setzero_si256 (), - __U); + __builtin_ia32_subbf16256_mask (__A, __B, + (__v16bf) _mm256_setzero_si256 (), + __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_subne_pbh (__m128bh __A, __m128bh __B) +_mm_sub_pbh (__m128bh __A, __m128bh __B) { - return (__m128bh) __builtin_ia32_subnepbf16128 (__A, __B); + return (__m128bh) __builtin_ia32_subbf16128 (__A, __B); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_subne_pbh (__m128bh __W, __mmask8 __U, - __m128bh __A, __m128bh __B) +_mm_mask_sub_pbh (__m128bh __W, __mmask8 __U, + __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_subnepbf16128_mask (__A, __B, __W, __U); + __builtin_ia32_subbf16128_mask (__A, __B, __W, __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_subne_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) +_mm_maskz_sub_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_subnepbf16128_mask (__A, __B, - (__v8bf) _mm_setzero_si128 (), - __U); + __builtin_ia32_subbf16128_mask (__A, __B, + (__v8bf) _mm_setzero_si128 (), + __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_mulne_pbh (__m256bh __A, __m256bh __B) +_mm256_mul_pbh (__m256bh __A, __m256bh __B) { - return (__m256bh) __builtin_ia32_mulnepbf16256 (__A, __B); + return (__m256bh) __builtin_ia32_mulbf16256 (__A, __B); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_mask_mulne_pbh (__m256bh __W, __mmask16 __U, - __m256bh __A, __m256bh __B) +_mm256_mask_mul_pbh (__m256bh __W, __mmask16 __U, + __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_mulnepbf16256_mask (__A, __B, __W, __U); + __builtin_ia32_mulbf16256_mask (__A, __B, __W, __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_maskz_mulne_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) +_mm256_maskz_mul_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_mulnepbf16256_mask (__A, __B, - (__v16bf) _mm256_setzero_si256 (), - __U); + __builtin_ia32_mulbf16256_mask (__A, __B, + (__v16bf) _mm256_setzero_si256 (), + __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mulne_pbh (__m128bh __A, __m128bh __B) +_mm_mul_pbh (__m128bh __A, __m128bh __B) { - return (__m128bh) __builtin_ia32_mulnepbf16128 (__A, __B); + return (__m128bh) __builtin_ia32_mulbf16128 (__A, __B); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_mulne_pbh (__m128bh __W, __mmask8 __U, - __m128bh __A, __m128bh __B) +_mm_mask_mul_pbh (__m128bh __W, __mmask8 __U, + __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_mulnepbf16128_mask (__A, __B, __W, __U); + __builtin_ia32_mulbf16128_mask (__A, __B, __W, __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_mulne_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) +_mm_maskz_mul_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_mulnepbf16128_mask (__A, __B, - (__v8bf) _mm_setzero_si128 (), - __U); + __builtin_ia32_mulbf16128_mask (__A, __B, + (__v8bf) _mm_setzero_si128 (), + __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_divne_pbh (__m256bh __A, __m256bh __B) +_mm256_div_pbh (__m256bh __A, __m256bh __B) { - return (__m256bh) __builtin_ia32_divnepbf16256 (__A, __B); + return (__m256bh) __builtin_ia32_divbf16256 (__A, __B); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_mask_divne_pbh (__m256bh __W, __mmask16 __U, - __m256bh __A, __m256bh __B) +_mm256_mask_div_pbh (__m256bh __W, __mmask16 __U, + __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_divnepbf16256_mask (__A, __B, __W, __U); + __builtin_ia32_divbf16256_mask (__A, __B, __W, __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm256_maskz_divne_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) +_mm256_maskz_div_pbh (__mmask16 __U, __m256bh __A, __m256bh __B) { return (__m256bh) - __builtin_ia32_divnepbf16256_mask (__A, __B, - (__v16bf) _mm256_setzero_si256 (), - __U); + __builtin_ia32_divbf16256_mask (__A, __B, + (__v16bf) _mm256_setzero_si256 (), + __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_divne_pbh (__m128bh __A, __m128bh __B) +_mm_div_pbh (__m128bh __A, __m128bh __B) { - return (__m128bh) __builtin_ia32_divnepbf16128 (__A, __B); + return (__m128bh) __builtin_ia32_divbf16128 (__A, __B); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_divne_pbh (__m128bh __W, __mmask8 __U, - __m128bh __A, __m128bh __B) +_mm_mask_div_pbh (__m128bh __W, __mmask8 __U, + __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_divnepbf16128_mask (__A, __B, __W, __U); + __builtin_ia32_divbf16128_mask (__A, __B, __W, __U); } extern __inline__ __m128bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_divne_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) +_mm_maskz_div_pbh (__mmask8 __U, __m128bh __A, __m128bh __B) { return (__m128bh) - __builtin_ia32_divnepbf16128_mask (__A, __B, - (__v8bf) _mm_setzero_si128 (), - __U); + __builtin_ia32_divbf16128_mask (__A, __B, + (__v8bf) _mm_setzero_si128 (), + __U); } extern __inline__ __m256bh __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_max_pbh (__m256bh __A, __m256bh __B) { - return (__m256bh) __builtin_ia32_maxpbf16256 (__A, __B); + return (__m256bh) __builtin_ia32_maxbf16256 (__A, __B); } extern __inline__ __m256bh @@ -794,9 +794,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_rcp_pbh (__m256bh __A) { return (__m256bh) - __builtin_ia32_rcppbf16256_mask (__A, - (__v16bf) _mm256_setzero_si256 (), - (__mmask16) -1); + __builtin_ia32_rcpbf16256_mask (__A, + (__v16bf) _mm256_setzero_si256 (), + (__mmask16) -1); } extern __inline__ __m256bh @@ -804,7 +804,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_mask_rcp_pbh (__m256bh __W, __mmask16 __U, __m256bh __A) { return (__m256bh) - __builtin_ia32_rcppbf16256_mask (__A, __W, __U); + __builtin_ia32_rcpbf16256_mask (__A, __W, __U); } extern __inline__ __m256bh @@ -812,9 +812,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_maskz_rcp_pbh (__mmask16 __U, __m256bh __A) { return (__m256bh) - __builtin_ia32_rcppbf16256_mask (__A, - (__v16bf) _mm256_setzero_si256 (), - __U); + __builtin_ia32_rcpbf16256_mask (__A, + (__v16bf) _mm256_setzero_si256 (), + __U); } extern __inline__ __m128bh @@ -822,9 +822,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_rcp_pbh (__m128bh __A) { return (__m128bh) - __builtin_ia32_rcppbf16128_mask (__A, - (__v8bf) _mm_setzero_si128 (), - (__mmask8) -1); + __builtin_ia32_rcpbf16128_mask (__A, + (__v8bf) _mm_setzero_si128 (), + (__mmask8) -1); } extern __inline__ __m128bh @@ -832,7 +832,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_mask_rcp_pbh (__m128bh __W, __mmask8 __U, __m128bh __A) { return (__m128bh) - __builtin_ia32_rcppbf16128_mask (__A, __W, __U); + __builtin_ia32_rcpbf16128_mask (__A, __W, __U); } extern __inline__ __m128bh @@ -840,9 +840,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_maskz_rcp_pbh (__mmask8 __U, __m128bh __A) { return (__m128bh) - __builtin_ia32_rcppbf16128_mask (__A, - (__v8bf) _mm_setzero_si128 (), - __U); + __builtin_ia32_rcpbf16128_mask (__A, + (__v8bf) _mm_setzero_si128 (), + __U); } extern __inline__ __m256bh diff --git a/gcc/config/i386/i386-builtin.def b/gcc/config/i386/i386-builtin.def index 5549c77a64ff..1de85b7454fd 100644 --- a/gcc/config/i386/i386-builtin.def +++ b/gcc/config/i386/i386-builtin.def @@ -3179,30 +3179,30 @@ BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_vcvtneph2hf8sv32hf_mask, "__bui BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_vcvthf82phv8hf_mask, "__builtin_ia32_vcvthf82ph128_mask", IX86_BUILTIN_VCVTHF82PH128_MASK, UNKNOWN, (int) V8HF_FTYPE_V16QI_V8HF_UQI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_vcvthf82phv16hf_mask, "__builtin_ia32_vcvthf82ph256_mask", IX86_BUILTIN_VCVTHF82PH256_MASK, UNKNOWN, (int) V16HF_FTYPE_V16QI_V16HF_UHI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_vcvthf82phv32hf_mask, "__builtin_ia32_vcvthf82ph512_mask", IX86_BUILTIN_VCVTHF82PH512_MASK, UNKNOWN, (int) V32HF_FTYPE_V32QI_V32HF_USI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_addnepbf16_v32bf, "__builtin_ia32_addnepbf16512", IX86_BUILTIN_ADDNEPBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_addnepbf16_v32bf_mask, "__builtin_ia32_addnepbf16512_mask", IX86_BUILTIN_ADDNEPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addnepbf16_v16bf, "__builtin_ia32_addnepbf16256", IX86_BUILTIN_ADDNEPBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addnepbf16_v16bf_mask, "__builtin_ia32_addnepbf16256_mask", IX86_BUILTIN_ADDNEPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addnepbf16_v8bf, "__builtin_ia32_addnepbf16128", IX86_BUILTIN_ADDNEPBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addnepbf16_v8bf_mask, "__builtin_ia32_addnepbf16128_mask", IX86_BUILTIN_ADDNEPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_subnepbf16_v32bf, "__builtin_ia32_subnepbf16512", IX86_BUILTIN_SUBNEPBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_subnepbf16_v32bf_mask, "__builtin_ia32_subnepbf16512_mask", IX86_BUILTIN_SUBNEPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subnepbf16_v16bf, "__builtin_ia32_subnepbf16256", IX86_BUILTIN_SUBNEPBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subnepbf16_v16bf_mask, "__builtin_ia32_subnepbf16256_mask", IX86_BUILTIN_SUBNEPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subnepbf16_v8bf, "__builtin_ia32_subnepbf16128", IX86_BUILTIN_SUBNEPBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subnepbf16_v8bf_mask, "__builtin_ia32_subnepbf16128_mask", IX86_BUILTIN_SUBNEPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_mulnepbf16_v32bf, "__builtin_ia32_mulnepbf16512", IX86_BUILTIN_MULNEPBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_mulnepbf16_v32bf_mask, "__builtin_ia32_mulnepbf16512_mask", IX86_BUILTIN_MULNEPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulnepbf16_v16bf, "__builtin_ia32_mulnepbf16256", IX86_BUILTIN_MULNEPBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulnepbf16_v16bf_mask, "__builtin_ia32_mulnepbf16256_mask", IX86_BUILTIN_MULNEPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulnepbf16_v8bf, "__builtin_ia32_mulnepbf16128", IX86_BUILTIN_MULNEPBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulnepbf16_v8bf_mask, "__builtin_ia32_mulnepbf16128_mask", IX86_BUILTIN_MULNEPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_divnepbf16_v32bf, "__builtin_ia32_divnepbf16512", IX86_BUILTIN_DIVNEPBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_divnepbf16_v32bf_mask, "__builtin_ia32_divnepbf16512_mask", IX86_BUILTIN_DIVNEPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divnepbf16_v16bf, "__builtin_ia32_divnepbf16256", IX86_BUILTIN_DIVNEPBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divnepbf16_v16bf_mask, "__builtin_ia32_divnepbf16256_mask", IX86_BUILTIN_DIVNEPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divnepbf16_v8bf, "__builtin_ia32_divnepbf16128", IX86_BUILTIN_DIVNEPBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divnepbf16_v8bf_mask, "__builtin_ia32_divnepbf16128_mask", IX86_BUILTIN_DIVNEPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_addbf16_v32bf, "__builtin_ia32_addbf16512", IX86_BUILTIN_ADDBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_addbf16_v32bf_mask, "__builtin_ia32_addbf16512_mask", IX86_BUILTIN_ADDBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addbf16_v16bf, "__builtin_ia32_addbf16256", IX86_BUILTIN_ADDBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addbf16_v16bf_mask, "__builtin_ia32_addbf16256_mask", IX86_BUILTIN_ADDBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addbf16_v8bf, "__builtin_ia32_addbf16128", IX86_BUILTIN_ADDBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_addbf16_v8bf_mask, "__builtin_ia32_addbf16128_mask", IX86_BUILTIN_ADDBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_subbf16_v32bf, "__builtin_ia32_subbf16512", IX86_BUILTIN_SUBBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_subbf16_v32bf_mask, "__builtin_ia32_subbf16512_mask", IX86_BUILTIN_SUBBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subbf16_v16bf, "__builtin_ia32_subbf16256", IX86_BUILTIN_SUBBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subbf16_v16bf_mask, "__builtin_ia32_subbf16256_mask", IX86_BUILTIN_SUBBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subbf16_v8bf, "__builtin_ia32_subbf16128", IX86_BUILTIN_SUBBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_subbf16_v8bf_mask, "__builtin_ia32_subbf16128_mask", IX86_BUILTIN_SUBBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_mulbf16_v32bf, "__builtin_ia32_mulbf16512", IX86_BUILTIN_MULBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_mulbf16_v32bf_mask, "__builtin_ia32_mulbf16512_mask", IX86_BUILTIN_MULBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulbf16_v16bf, "__builtin_ia32_mulbf16256", IX86_BUILTIN_MULBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulbf16_v16bf_mask, "__builtin_ia32_mulbf16256_mask", IX86_BUILTIN_MULBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulbf16_v8bf, "__builtin_ia32_mulbf16128", IX86_BUILTIN_MULBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_mulbf16_v8bf_mask, "__builtin_ia32_mulbf16128_mask", IX86_BUILTIN_MULBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_divbf16_v32bf, "__builtin_ia32_divbf16512", IX86_BUILTIN_DIVBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_divbf16_v32bf_mask, "__builtin_ia32_divbf16512_mask", IX86_BUILTIN_DIVBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divbf16_v16bf, "__builtin_ia32_divbf16256", IX86_BUILTIN_DIVBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divbf16_v16bf_mask, "__builtin_ia32_divbf16256_mask", IX86_BUILTIN_DIVBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_V16BF_UHI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divbf16_v8bf, "__builtin_ia32_divbf16128", IX86_BUILTIN_DIVBF16128, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_divbf16_v8bf_mask, "__builtin_ia32_divbf16128_mask", IX86_BUILTIN_DIVBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_V8BF_UQI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_smaxpbf16_v32bf, "__builtin_ia32_maxpbf16512", IX86_BUILTIN_MAXPBF16512, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF) BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_smaxpbf16_v32bf_mask, "__builtin_ia32_maxpbf16512_mask", IX86_BUILTIN_MAXPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_V32BF_USI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_smaxpbf16_v16bf, "__builtin_ia32_maxpbf16256", IX86_BUILTIN_MAXPBF16256, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF) @@ -3263,9 +3263,9 @@ BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_rsqrtpbf16_v8bf_mask, " BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_sqrtnepbf16_v32bf_mask, "__builtin_ia32_sqrtnepbf16512_mask", IX86_BUILTIN_SQRTNEPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_USI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_sqrtnepbf16_v16bf_mask, "__builtin_ia32_sqrtnepbf16256_mask", IX86_BUILTIN_SQRTNEPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_UHI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_sqrtnepbf16_v8bf_mask, "__builtin_ia32_sqrtnepbf16128_mask", IX86_BUILTIN_SQRTNEPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_UQI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_rcppbf16_v32bf_mask, "__builtin_ia32_rcppbf16512_mask", IX86_BUILTIN_RCPPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_USI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_rcppbf16_v16bf_mask, "__builtin_ia32_rcppbf16256_mask", IX86_BUILTIN_RCPPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_rcppbf16_v8bf_mask, "__builtin_ia32_rcppbf16128_mask", IX86_BUILTIN_RCPPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_UQI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_rcpbf16_v32bf_mask, "__builtin_ia32_rcpbf16512_mask", IX86_BUILTIN_RCPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_USI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_rcpbf16_v16bf_mask, "__builtin_ia32_rcpbf16256_mask", IX86_BUILTIN_RCPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_UHI) +BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_rcpbf16_v8bf_mask, "__builtin_ia32_rcpbf16128_mask", IX86_BUILTIN_RCPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_UQI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_512, CODE_FOR_avx10_2_getexppbf16_v32bf_mask, "__builtin_ia32_getexppbf16512_mask", IX86_BUILTIN_GETEXPPBF16512_MASK, UNKNOWN, (int) V32BF_FTYPE_V32BF_V32BF_USI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_getexppbf16_v16bf_mask, "__builtin_ia32_getexppbf16256_mask", IX86_BUILTIN_GETEXPPBF16256_MASK, UNKNOWN, (int) V16BF_FTYPE_V16BF_V16BF_UHI) BDESC (0, OPTION_MASK_ISA2_AVX10_2_256, CODE_FOR_avx10_2_getexppbf16_v8bf_mask, "__builtin_ia32_getexppbf16128_mask", IX86_BUILTIN_GETEXPPBF16128_MASK, UNKNOWN, (int) V8BF_FTYPE_V8BF_V8BF_UQI) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 14617786aaa5..43141246b993 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2867,8 +2867,8 @@ { rtx op = gen_reg_rtx (<MODE>mode); operands[2] = force_reg (<MODE>mode, operands[2]); - emit_insn (gen_avx10_2_rcppbf16_<mode> (op, operands[2])); - emit_insn (gen_avx10_2_mulnepbf16_<mode> (operands[0], operands[1], op)); + emit_insn (gen_avx10_2_rcpbf16_<mode> (op, operands[2])); + emit_insn (gen_avx10_2_mulbf16_<mode> (operands[0], operands[1], op)); DONE; } }) @@ -32102,13 +32102,13 @@ [(set_attr "prefix" "evex") (set_attr "mode" "<MODE>")]) -(define_insn "avx10_2_<insn>nepbf16_<mode><mask_name>" +(define_insn "avx10_2_<insn>bf16_<mode><mask_name>" [(set (match_operand:VBF_AVX10_2 0 "register_operand" "=v") (plusminusmultdiv:VBF_AVX10_2 (match_operand:VBF_AVX10_2 1 "register_operand" "v") (match_operand:VBF_AVX10_2 2 "nonimmediate_operand" "vm")))] "TARGET_AVX10_2_256" - "v<insn>nepbf16\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}" + "v<insn>bf16\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}" [(set_attr "prefix" "evex")]) (define_expand "avx10_2_fmaddnepbf16_<mode>_maskz" @@ -32388,13 +32388,13 @@ "vsqrtnepbf16\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}" [(set_attr "prefix" "evex")]) -(define_insn "avx10_2_rcppbf16_<mode><mask_name>" +(define_insn "avx10_2_rcpbf16_<mode><mask_name>" [(set (match_operand:VBF_AVX10_2 0 "register_operand" "=v") (unspec:VBF_AVX10_2 [(match_operand:VBF_AVX10_2 1 "nonimmediate_operand" "vm")] UNSPEC_RCP))] "TARGET_AVX10_2_256" - "vrcppbf16\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}" + "vrcpbf16\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}" [(set_attr "prefix" "evex")]) (define_insn "avx10_2_getexppbf16_<mode><mask_name>" diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-bf-vector-operations-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-bf-vector-operations-1.c deleted file mode 100644 index d507e184092c..000000000000 --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-bf-vector-operations-1.c +++ /dev/null @@ -1,42 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=x86-64-v3 -mavx10.2-512 -O2" } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ - -#include <immintrin.h> - -typedef __bf16 v32bf __attribute__ ((__vector_size__ (64))); - -v32bf -foo_mul (v32bf a, v32bf b) -{ - return a * b; -} - -v32bf -foo_add (v32bf a, v32bf b) -{ - return a + b; -} - -v32bf -foo_div (v32bf a, v32bf b) -{ - return a / b; -} - -v32bf -foo_sub (v32bf a, v32bf b) -{ - return a - b; -} - -__attribute__((optimize("fast-math"))) -v32bf -foo_div_fast_math (v32bf a, v32bf b) -{ - return a / b; -} diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-1.c index 016d1c65bc60..52c802d48803 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-1.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-1.c @@ -1,17 +1,17 @@ /* { dg-do compile } */ /* { dg-options "-march=x86-64-v3 -mavx10.2-512 -O2" } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vmaxpbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vmaxpbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vmaxpbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ @@ -43,9 +43,9 @@ /* { dg-final { scan-assembler-times "vsqrtnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vsqrtnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vsqrtnepbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vgetexppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vgetexppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vgetexppbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ @@ -73,18 +73,18 @@ volatile __mmask32 m32; void extern avx10_2_512_test (void) { - res = _mm512_addne_pbh (x1, x2); - res = _mm512_mask_addne_pbh (res, m32, x1, x2); - res = _mm512_maskz_addne_pbh (m32, x1, x2); - res = _mm512_subne_pbh (x1, x2); - res = _mm512_mask_subne_pbh (res, m32, x1, x2); - res = _mm512_maskz_subne_pbh (m32, x1, x2); - res = _mm512_mulne_pbh (x1, x2); - res = _mm512_mask_mulne_pbh (res, m32, x1, x2); - res = _mm512_maskz_mulne_pbh (m32, x1, x2); - res = _mm512_divne_pbh (x1, x2); - res = _mm512_mask_divne_pbh (res, m32, x1, x2); - res = _mm512_maskz_divne_pbh (m32, x1, x2); + res = _mm512_add_pbh (x1, x2); + res = _mm512_mask_add_pbh (res, m32, x1, x2); + res = _mm512_maskz_add_pbh (m32, x1, x2); + res = _mm512_sub_pbh (x1, x2); + res = _mm512_mask_sub_pbh (res, m32, x1, x2); + res = _mm512_maskz_sub_pbh (m32, x1, x2); + res = _mm512_mul_pbh (x1, x2); + res = _mm512_mask_mul_pbh (res, m32, x1, x2); + res = _mm512_maskz_mul_pbh (m32, x1, x2); + res = _mm512_div_pbh (x1, x2); + res = _mm512_mask_div_pbh (res, m32, x1, x2); + res = _mm512_maskz_div_pbh (m32, x1, x2); res = _mm512_max_pbh (x1, x2); res = _mm512_mask_max_pbh (res, m32, x1, x2); res = _mm512_maskz_max_pbh (m32, x1, x2); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-vector-operations-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-vector-operations-1.c new file mode 100644 index 000000000000..e224a362c8e6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-bf16-vector-operations-1.c @@ -0,0 +1,42 @@ +/* { dg-do compile } */ +/* { dg-options "-march=x86-64-v3 -mavx10.2-512 -O2" } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + +#include <immintrin.h> + +typedef __bf16 v32bf __attribute__ ((__vector_size__ (64))); + +v32bf +foo_mul (v32bf a, v32bf b) +{ + return a * b; +} + +v32bf +foo_add (v32bf a, v32bf b) +{ + return a + b; +} + +v32bf +foo_div (v32bf a, v32bf b) +{ + return a / b; +} + +v32bf +foo_sub (v32bf a, v32bf b) +{ + return a - b; +} + +__attribute__((optimize("fast-math"))) +v32bf +foo_div_fast_math (v32bf a, v32bf b) +{ + return a / b; +} diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vaddnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-vaddbf16-2.c similarity index 86% rename from gcc/testsuite/gcc.target/i386/avx10_2-512-vaddnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-512-vaddbf16-2.c index 04d1b9502e99..fe13c643ca1d 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vaddnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vaddbf16-2.c @@ -33,9 +33,9 @@ TEST (void) res_ref[i] = res_ref2[i] = convert_fp32_to_bf16_ne (res); } - res1.x = INTRINSIC (_addne_pbh) (src1.x, src2.x); - res2.x = INTRINSIC (_mask_addne_pbh) (res2.x, mask, src1.x, src2.x); - res3.x = INTRINSIC (_maskz_addne_pbh) (mask, src1.x, src2.x); + res1.x = INTRINSIC (_add_pbh) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_add_pbh) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_add_pbh) (mask, src1.x, src2.x); if (UNION_CHECK (AVX512F_LEN, bf16_uw) (res1, res_ref)) abort (); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vdivnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-vdivbf16-2.c similarity index 86% rename from gcc/testsuite/gcc.target/i386/avx10_2-512-vdivnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-512-vdivbf16-2.c index 1f23cd80dc9f..54bc2757cb2c 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vdivnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vdivbf16-2.c @@ -33,9 +33,9 @@ TEST (void) res_ref[i] = res_ref2[i] = convert_fp32_to_bf16_ne (res); } - res1.x = INTRINSIC (_divne_pbh) (src1.x, src2.x); - res2.x = INTRINSIC (_mask_divne_pbh) (res2.x, mask, src1.x, src2.x); - res3.x = INTRINSIC (_maskz_divne_pbh) (mask, src1.x, src2.x); + res1.x = INTRINSIC (_div_pbh) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_div_pbh) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_div_pbh) (mask, src1.x, src2.x); if (UNION_CHECK (AVX512F_LEN, bf16_uw) (res1, res_ref)) abort (); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vmulnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-vmulbf16-2.c similarity index 86% rename from gcc/testsuite/gcc.target/i386/avx10_2-512-vmulnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-512-vmulbf16-2.c index 8663f783d124..6e03d7146848 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vmulnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vmulbf16-2.c @@ -33,9 +33,9 @@ TEST (void) res_ref[i] = res_ref2[i] = convert_fp32_to_bf16_ne (res); } - res1.x = INTRINSIC (_mulne_pbh) (src1.x, src2.x); - res2.x = INTRINSIC (_mask_mulne_pbh) (res2.x, mask, src1.x, src2.x); - res3.x = INTRINSIC (_maskz_mulne_pbh) (mask, src1.x, src2.x); + res1.x = INTRINSIC (_mul_pbh) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_mul_pbh) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_mul_pbh) (mask, src1.x, src2.x); if (UNION_CHECK (AVX512F_LEN, bf16_uw) (res1, res_ref)) abort (); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vrcppbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-vrcpbf16-2.c similarity index 100% rename from gcc/testsuite/gcc.target/i386/avx10_2-512-vrcppbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-512-vrcpbf16-2.c diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vsubnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-512-vsubbf16-2.c similarity index 86% rename from gcc/testsuite/gcc.target/i386/avx10_2-512-vsubnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-512-vsubbf16-2.c index 244fa49e8653..7e8df5fd95fb 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vsubnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vsubbf16-2.c @@ -33,9 +33,9 @@ TEST (void) res_ref[i] = res_ref2[i] = convert_fp32_to_bf16_ne (res); } - res1.x = INTRINSIC (_subne_pbh) (src1.x, src2.x); - res2.x = INTRINSIC (_mask_subne_pbh) (res2.x, mask, src1.x, src2.x); - res3.x = INTRINSIC (_maskz_subne_pbh) (mask, src1.x, src2.x); + res1.x = INTRINSIC (_sub_pbh) (src1.x, src2.x); + res2.x = INTRINSIC (_mask_sub_pbh) (res2.x, mask, src1.x, src2.x); + res3.x = INTRINSIC (_maskz_sub_pbh) (mask, src1.x, src2.x); if (UNION_CHECK (AVX512F_LEN, bf16_uw) (res1, res_ref)) abort (); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-bf-vector-operations-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-bf-vector-operations-1.c deleted file mode 100644 index 5a8cb1e79723..000000000000 --- a/gcc/testsuite/gcc.target/i386/avx10_2-bf-vector-operations-1.c +++ /dev/null @@ -1,79 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ - -#include <immintrin.h> - -typedef __bf16 v16bf __attribute__ ((__vector_size__ (32))); -typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); - -v16bf -foo_mul_256 (v16bf a, v16bf b) -{ - return a * b; -} - -v16bf -foo_add_256 (v16bf a, v16bf b) -{ - return a + b; -} - -v16bf -foo_div_256 (v16bf a, v16bf b) -{ - return a / b; -} - -v16bf -foo_sub_256 (v16bf a, v16bf b) -{ - return a - b; -} - -__attribute__((optimize("fast-math"))) -v16bf -foo_div_fast_math_256 (v16bf a, v16bf b) -{ - return a / b; -} - -v8bf -foo_mul_128 (v8bf a, v8bf b) -{ - return a * b; -} - -v8bf -foo_add_128 (v8bf a, v8bf b) -{ - return a + b; -} - -v8bf -foo_div_128 (v8bf a, v8bf b) -{ - return a / b; -} - -v8bf -foo_sub_128 (v8bf a, v8bf b) -{ - return a - b; -} - -__attribute__((optimize("fast-math"))) -v8bf -foo_div_fast_math_128 (v8bf a, v8bf b) -{ - return a / b; -} diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c index c0fd3b66cd4b..7512af7aede8 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c @@ -1,29 +1,29 @@ /* { dg-do compile } */ /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vmaxpbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vmaxpbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vmaxpbf16\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ @@ -86,12 +86,12 @@ /* { dg-final { scan-assembler-times "vsqrtnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vsqrtnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vsqrtnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vgetexppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vgetexppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ /* { dg-final { scan-assembler-times "vgetexppbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */ @@ -136,33 +136,33 @@ volatile __mmask8 m8; void extern avx10_2_test (void) { - res = _mm256_addne_pbh (x1, x2); - res = _mm256_mask_addne_pbh (res, m16, x1, x2); - res = _mm256_maskz_addne_pbh (m16, x1, x2); - res1 = _mm_addne_pbh (x3, x4); - res1 = _mm_mask_addne_pbh (res1, m8, x3, x4); - res1 = _mm_maskz_addne_pbh (m8, x3, x4); + res = _mm256_add_pbh (x1, x2); + res = _mm256_mask_add_pbh (res, m16, x1, x2); + res = _mm256_maskz_add_pbh (m16, x1, x2); + res1 = _mm_add_pbh (x3, x4); + res1 = _mm_mask_add_pbh (res1, m8, x3, x4); + res1 = _mm_maskz_add_pbh (m8, x3, x4); - res = _mm256_subne_pbh (x1, x2); - res = _mm256_mask_subne_pbh (res, m16, x1, x2); - res = _mm256_maskz_subne_pbh (m16, x1, x2); - res1 = _mm_subne_pbh (x3, x4); - res1 = _mm_mask_subne_pbh (res1, m8, x3, x4); - res1 = _mm_maskz_subne_pbh (m8, x3, x4); + res = _mm256_sub_pbh (x1, x2); + res = _mm256_mask_sub_pbh (res, m16, x1, x2); + res = _mm256_maskz_sub_pbh (m16, x1, x2); + res1 = _mm_sub_pbh (x3, x4); + res1 = _mm_mask_sub_pbh (res1, m8, x3, x4); + res1 = _mm_maskz_sub_pbh (m8, x3, x4); - res = _mm256_mulne_pbh (x1, x2); - res = _mm256_mask_mulne_pbh (res, m16, x1, x2); - res = _mm256_maskz_mulne_pbh (m16, x1, x2); - res1 = _mm_mulne_pbh (x3, x4); - res1 = _mm_mask_mulne_pbh (res1, m8, x3, x4); - res1 = _mm_maskz_mulne_pbh (m8, x3, x4); + res = _mm256_mul_pbh (x1, x2); + res = _mm256_mask_mul_pbh (res, m16, x1, x2); + res = _mm256_maskz_mul_pbh (m16, x1, x2); + res1 = _mm_mul_pbh (x3, x4); + res1 = _mm_mask_mul_pbh (res1, m8, x3, x4); + res1 = _mm_maskz_mul_pbh (m8, x3, x4); - res = _mm256_divne_pbh (x1, x2); - res = _mm256_mask_divne_pbh (res, m16, x1, x2); - res = _mm256_maskz_divne_pbh (m16, x1, x2); - res1 = _mm_divne_pbh (x3, x4); - res1 = _mm_mask_divne_pbh (res1, m8, x3, x4); - res1 = _mm_maskz_divne_pbh (m8, x3, x4); + res = _mm256_div_pbh (x1, x2); + res = _mm256_mask_div_pbh (res, m16, x1, x2); + res = _mm256_maskz_div_pbh (m16, x1, x2); + res1 = _mm_div_pbh (x3, x4); + res1 = _mm_mask_div_pbh (res1, m8, x3, x4); + res1 = _mm_maskz_div_pbh (m8, x3, x4); res = _mm256_max_pbh (x1, x2); res = _mm256_mask_max_pbh (res, m16, x1, x2); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-operations-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-operations-1.c new file mode 100644 index 000000000000..530167bd5fe8 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-operations-1.c @@ -0,0 +1,79 @@ +/* { dg-do compile } */ +/* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + +#include <immintrin.h> + +typedef __bf16 v16bf __attribute__ ((__vector_size__ (32))); +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); + +v16bf +foo_mul_256 (v16bf a, v16bf b) +{ + return a * b; +} + +v16bf +foo_add_256 (v16bf a, v16bf b) +{ + return a + b; +} + +v16bf +foo_div_256 (v16bf a, v16bf b) +{ + return a / b; +} + +v16bf +foo_sub_256 (v16bf a, v16bf b) +{ + return a - b; +} + +__attribute__((optimize("fast-math"))) +v16bf +foo_div_fast_math_256 (v16bf a, v16bf b) +{ + return a / b; +} + +v8bf +foo_mul_128 (v8bf a, v8bf b) +{ + return a * b; +} + +v8bf +foo_add_128 (v8bf a, v8bf b) +{ + return a + b; +} + +v8bf +foo_div_128 (v8bf a, v8bf b) +{ + return a / b; +} + +v8bf +foo_sub_128 (v8bf a, v8bf b) +{ + return a - b; +} + +__attribute__((optimize("fast-math"))) +v8bf +foo_div_fast_math_128 (v8bf a, v8bf b) +{ + return a / b; +} diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf-vector-fast-math-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fast-math-1.c similarity index 60% rename from gcc/testsuite/gcc.target/i386/avx10_2-partial-bf-vector-fast-math-1.c rename to gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fast-math-1.c index d9f78d4edb38..28856b1f3804 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf-vector-fast-math-1.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fast-math-1.c @@ -1,7 +1,7 @@ /* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vrcppbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vrcpbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ typedef __bf16 v4bf __attribute__ ((__vector_size__ (8))); typedef __bf16 v2bf __attribute__ ((__vector_size__ (4))); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf-vector-operations-1.c b/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c similarity index 51% rename from gcc/testsuite/gcc.target/i386/avx10_2-partial-bf-vector-operations-1.c rename to gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c index 89fac2cd88ab..22ba8a2c0c60 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf-vector-operations-1.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c @@ -1,9 +1,9 @@ /* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */ -/* { dg-final { scan-assembler-times "vmulnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vaddnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vdivnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ -/* { dg-final { scan-assembler-times "vsubnepbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vmulbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vdivbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-times "vsubbf16\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */ typedef __bf16 v4bf __attribute__ ((__vector_size__ (8))); typedef __bf16 v2bf __attribute__ ((__vector_size__ (4))); diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vrcppbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c similarity index 80% rename from gcc/testsuite/gcc.target/i386/avx10_2-vrcppbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c index 4914b25a77c9..d88045425628 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-vrcppbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c @@ -6,11 +6,11 @@ #define AVX512VL #define AVX512F_LEN 256 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vrcppbf16-2.c" +#include "avx10_2-512-vaddbf16-2.c" #undef AVX512F_LEN #undef AVX512F_LEN_HALF #define AVX512F_LEN 128 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vrcppbf16-2.c" +#include "avx10_2-512-vaddbf16-2.c" diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vaddnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vdivbf16-2.c similarity index 79% rename from gcc/testsuite/gcc.target/i386/avx10_2-vaddnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-vdivbf16-2.c index 893fa0c1f19a..69d5019e4a04 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-vaddnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-vdivbf16-2.c @@ -6,11 +6,11 @@ #define AVX512VL #define AVX512F_LEN 256 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vaddnepbf16-2.c" +#include "avx10_2-512-vdivbf16-2.c" #undef AVX512F_LEN #undef AVX512F_LEN_HALF #define AVX512F_LEN 128 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vaddnepbf16-2.c" +#include "avx10_2-512-vdivbf16-2.c" diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vdivnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vmulbf16-2.c similarity index 79% rename from gcc/testsuite/gcc.target/i386/avx10_2-vdivnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-vmulbf16-2.c index 199a6ec6483c..568c0a9eb121 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-vdivnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-vmulbf16-2.c @@ -6,11 +6,11 @@ #define AVX512VL #define AVX512F_LEN 256 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vdivnepbf16-2.c" +#include "avx10_2-512-vmulbf16-2.c" #undef AVX512F_LEN #undef AVX512F_LEN_HALF #define AVX512F_LEN 128 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vdivnepbf16-2.c" +#include "avx10_2-512-vmulbf16-2.c" diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vmulnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vrcpbf16-2.c similarity index 79% rename from gcc/testsuite/gcc.target/i386/avx10_2-vmulnepbf16-2.c rename to gcc/testsuite/gcc.target/i386/avx10_2-vrcpbf16-2.c index 1daa21f96ab6..367b2cff70ac 100644 --- a/gcc/testsuite/gcc.target/i386/avx10_2-vmulnepbf16-2.c +++ b/gcc/testsuite/gcc.target/i386/avx10_2-vrcpbf16-2.c @@ -6,11 +6,11 @@ #define AVX512VL #define AVX512F_LEN 256 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vmulnepbf16-2.c" +#include "avx10_2-512-vrcpbf16-2.c" #undef AVX512F_LEN #undef AVX512F_LEN_HALF #define AVX512F_LEN 128 #define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vmulnepbf16-2.c" +#include "avx10_2-512-vrcpbf16-2.c" diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vsubbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vsubbf16-2.c new file mode 100644 index 000000000000..16f444afbf8a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx10_2-vsubbf16-2.c @@ -0,0 +1,16 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -march=x86-64-v3 -mavx10.2" } */ +/* { dg-require-effective-target avx10_2 } */ + +#define AVX10_2 +#define AVX512VL +#define AVX512F_LEN 256 +#define AVX512F_LEN_HALF 128 +#include "avx10_2-512-vsubbf16-2.c" + +#undef AVX512F_LEN +#undef AVX512F_LEN_HALF + +#define AVX512F_LEN 128 +#define AVX512F_LEN_HALF 128 +#include "avx10_2-512-vsubbf16-2.c" diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vsubnepbf16-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vsubnepbf16-2.c deleted file mode 100644 index 907a7059d64b..000000000000 --- a/gcc/testsuite/gcc.target/i386/avx10_2-vsubnepbf16-2.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -march=x86-64-v3 -mavx10.2" } */ -/* { dg-require-effective-target avx10_2 } */ - -#define AVX10_2 -#define AVX512VL -#define AVX512F_LEN 256 -#define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vsubnepbf16-2.c" - -#undef AVX512F_LEN -#undef AVX512F_LEN_HALF - -#define AVX512F_LEN 128 -#define AVX512F_LEN_HALF 128 -#include "avx10_2-512-vsubnepbf16-2.c" diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index baafa1d8fcfa..1785a9d61500 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -10968,7 +10968,7 @@ proc check_effective_target_avx10_2 { } { { __asm__ volatile ("vdpphps\t%ymm4, %ymm5, %ymm6"); __asm__ volatile ("vcvthf82ph\t%xmm5, %ymm6"); - __asm__ volatile ("vaddnepbf16\t%ymm4, %ymm5, %ymm6"); + __asm__ volatile ("vaddbf16\t%ymm4, %ymm5, %ymm6"); __asm__ volatile ("vcvtph2ibs\t%ymm5, %ymm6"); __asm__ volatile ("vminmaxpd\t$123, %ymm4, %ymm5, %ymm6"); } @@ -10983,7 +10983,7 @@ proc check_effective_target_avx10_2_512 { } { { __asm__ volatile ("vdpphps\t%zmm4, %zmm5, %zmm6"); __asm__ volatile ("vcvthf82ph\t%ymm5, %zmm6"); - __asm__ volatile ("vaddnepbf16\t%zmm4, %zmm5, %zmm6"); + __asm__ volatile ("vaddbf16\t%zmm4, %zmm5, %zmm6"); __asm__ volatile ("vcvtph2ibs\t%zmm5, %zmm6"); __asm__ volatile ("vminmaxpd\t$123, %zmm4, %zmm5, %zmm6"); }