> From: Dipesh Sharma <[email protected]>
> Sent: Wednesday, September 23, 2026 7:05 PM
> To: [email protected]
> Cc: Jiang, Haochen <[email protected]>; [email protected]; Liu,
> Hongtao <[email protected]>; [email protected]; Dipesh
> Sharma <[email protected]>; Venkataramanan Kumar
> <[email protected]>
> Subject: [PATCH 2/4] Share builtins and md patterns from avx10.2 and
> vnniint{8,16} for avx10v1aux.
>
> This patch shares the builtins and md patterns from avx10.2 and
> vnniint{8,16} for avx10v1aux.
>
> gcc/ChangeLog:
>
> * config/i386/i386-builtin.def (BDESC): Share builtin between
> avx10.2, vnniint{8,16} and avx10v1aux.
> * config/i386/i386-builtins.cc (def_builtin): Ditto.
> * config/i386/i386-expand.cc (ix86_check_builtin_isa_match): Ditto.
> * config/i386/i386.md: Add isa target avx10v1aux.
> * config/i386/sse.md: Enable instructions for avx10v1aux.
>
> Co-authored-by: Venkataramanan Kumar
> <[email protected]>
> ---
> gcc/config/i386/i386-builtin.def | 308 +++++++++++++++----------------
> gcc/config/i386/i386-builtins.cc | 5 +-
> gcc/config/i386/i386-expand.cc | 9 +
> gcc/config/i386/i386.md | 4 +-
> gcc/config/i386/sse.md | 74 ++++----
> 5 files changed, 206 insertions(+), 194 deletions(-)
>
> diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
> index 2d250fa57b2..c9e60632497 100644
> --- a/gcc/config/i386/i386-expand.cc
> +++ b/gcc/config/i386/i386-expand.cc
> @@ -14992,6 +14992,9 @@ ix86_check_builtin_isa_match (unsigned int
> fcode,
> OPTION_MASK_ISA_AES or (OPTION_MASK_ISA_AVX512VL |
> OPTION_MASK_ISA2_VAES)
> OPTION_MASK_ISA2_AVX10_2 or OPTION_MASK_ISA2_AVXVNNIINT8
> OPTION_MASK_ISA2_AVX10_2 or OPTION_MASK_ISA2_AVXVNNIINT16
> + OPTION_MASK_ISA2_AVX10V1AUX or
> OPTION_MASK_ISA2_AVXVNNIINT8
> + OPTION_MASK_ISA2_AVX10V1AUX or
> OPTION_MASK_ISA2_AVXVNNIINT16
> + OPTION_MASK_ISA2_AVX10V1AUX or OPTION_MASK_ISA2_AVX10_2
> OPTION_MASK_ISA2_AMX_TILE or OPTION_MASK_ISA2_ACEV1
> where for each such pair it is sufficient if either of the ISAs is
> enabled, plus if it is ored with other options also those others.
> @@ -15023,6 +15026,12 @@ ix86_check_builtin_isa_match (unsigned int
> fcode,
> SHARE_BUILTIN (0, OPTION_MASK_ISA2_AVXVNNIINT16, 0,
> OPTION_MASK_ISA2_AVX10_2);
> SHARE_BUILTIN (0, OPTION_MASK_ISA2_AMX_TILE, 0,
> OPTION_MASK_ISA2_ACEV1);
> + SHARE_BUILTIN (0, OPTION_MASK_ISA2_AVXVNNIINT8, 0,
> + OPTION_MASK_ISA2_AVX10V1AUX);
> + SHARE_BUILTIN (0, OPTION_MASK_ISA2_AVXVNNIINT16, 0,
> + OPTION_MASK_ISA2_AVX10V1AUX);
> + SHARE_BUILTIN (0, OPTION_MASK_ISA2_AVX10_2, 0,
> + OPTION_MASK_ISA2_AVX10V1AUX);
> isa = tmp_isa;
> isa2 = tmp_isa2;
>
Please you also add testcases to see if this work as expected like
avxvnniint{8,16}-builtin-1.c, avx10_2-builtin-*.c.
> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> index e4bc746dacc..16cde4c53a0 100644
> --- a/gcc/config/i386/sse.md
> +++ b/gcc/config/i386/sse.md
> @@ -715,7 +715,7 @@
> [V16SI (V8SI "TARGET_AVX512VL") (V4SI "TARGET_AVX512VL")])
>
> (define_mode_iterator VI4_AVX10_2
> - [(V16SI "TARGET_AVX10_2") V8SI V4SI])
> + [(V16SI "TARGET_AVX10_2 || TARGET_AVX10V1AUX") V8SI V4SI])
You should not alter this iterator since SM4 patterns are also using them.
Please use a new one.
>
> (define_mode_iterator VI48_AVX512F_AVX512VL
> [V4SI V8SI (V16SI "TARGET_AVX512F")
> @@ -33316,7 +33316,7 @@
> (match_operand:<ssePSmode> 2 "<round_nimm_predicate>"
> "<round_constraint>"))
> (float_truncate:<ssehalfvecmode>
> (match_operand:<ssePSmode> 1 "register_operand" "v"))))]
> - "TARGET_AVX10_2 && <round_mode512bit_condition>"
> + "(TARGET_AVX10_2 || TARGET_AVX10V1AUX) && <round_mode512bit_condition>"
>
> "vcvt2ps2phx\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>,
> %1, %2<round_mask_op3>}")
>
If you only touch VNNI in this patch and convert in the following up
patch, this should also be moved to the next patch and ditto for other
occurrences.
Thx,
Haochen