On Wed, Jul 30, 2025 at 7:24 PM Yangyu Chen <c...@cyyself.name> wrote:
>
> This patch adds the missing PTA_POPCNT and PTA_LZCNT with the PTA_ABM
> bitmask definition for the bdver1, btver1, and lujiazui architectures
> in the i386 architecture configuration file.
>
> Although these two features were not present in the original definition,
> their absence does not affect the functionality of these architectures
> because the POPCNT and LZCNT bits are set when ABM is enabled in the
> ix86_option_override_internal function. However, including them in these
> definitions improves consistency and clarity. This issue was discovered
> while writing a script to extract these bitmasks from the i386.h file
> referenced in [1].
>
> Additionally, the PTA_YONGFENG bitmask appears incorrect as it includes
> PTA_LZCNT while already inheriting PTA_ABM from PTA_LUJIAZUI. This seems
> to be a typo and should be corrected.
>
> [1] https://github.com/cyyself/x86-pta
>
> gcc/ChangeLog:
>
>         * config/i386/i386.h: Add missing PTA_POPCNT, PTA_LZCNT with PTA_ABM

OK.

How do you plan to proceed with the patch? If you don't have write
access, I can commit the patch for you, but you may want to point out
lack of write access in your initial submission, as advised at the end
of [1].

[1] https://gcc.gnu.org/contribute.html#patches

Thanks,
Uros.

> Signed-off-by: Yangyu Chen <c...@cyyself.name>
> ---
> Changes in v3:
> - Added PTA_LZCNT to PTA_BTVER1 and PTA_LUJIAZUI definitions as well.
> - Remove PTA_LZCNT from PTA_YONGFENG definition since it is already included 
> via PTA_LUJIAZUI.
>
> v2: 
> https://patchwork.sourceware.org/project/gcc/patch/tencent_15d739eae1aec5d486f43736f23909466...@qq.com/
>
> Changes in v2:
> - Added PTA_LZCNT to the patch as well.
>
> v1: 
> https://patchwork.sourceware.org/project/gcc/patch/tencent_f08f827bda658e18b8e0319021b88d6d7...@qq.com/
> ---
>  gcc/config/i386/i386.h | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
> index 791f3b9e133..8d1d1f5add3 100644
> --- a/gcc/config/i386/i386.h
> +++ b/gcc/config/i386/i386.h
> @@ -2479,7 +2479,8 @@ constexpr wide_int_bitmask PTA_DIAMONDRAPIDS = 
> PTA_GRANITERAPIDS_D
>  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
>    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3
>    | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_FMA4
> -  | PTA_XOP | PTA_LWP | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE;
> +  | PTA_XOP | PTA_LWP | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE | PTA_LZCNT
> +  | PTA_POPCNT;
>  constexpr wide_int_bitmask PTA_BDVER2 = PTA_BDVER1 | PTA_BMI | PTA_TBM
>    | PTA_F16C | PTA_FMA;
>  constexpr wide_int_bitmask PTA_BDVER3 = PTA_BDVER2 | PTA_XSAVEOPT
> @@ -2507,7 +2508,7 @@ constexpr wide_int_bitmask PTA_ZNVER5 = PTA_ZNVER4 | 
> PTA_AVXVNNI
>
>  constexpr wide_int_bitmask PTA_BTVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
>    | PTA_SSE2 | PTA_SSE3 | PTA_SSSE3 | PTA_SSE4A | PTA_ABM | PTA_CX16
> -  | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE;
> +  | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE | PTA_LZCNT | PTA_POPCNT;
>  constexpr wide_int_bitmask PTA_BTVER2 = PTA_BTVER1 | PTA_SSE4_1 | PTA_SSE4_2
>    | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_BMI | PTA_F16C | PTA_MOVBE
>    | PTA_XSAVEOPT;
> @@ -2516,9 +2517,9 @@ constexpr wide_int_bitmask PTA_LUJIAZUI = PTA_64BIT | 
> PTA_MMX | PTA_SSE
>    | PTA_SSE2 | PTA_SSE3 | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
>    | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_BMI | PTA_BMI2 | PTA_PRFCHW
>    | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE | PTA_RDRND | 
> PTA_MOVBE
> -  | PTA_ADX | PTA_RDSEED | PTA_POPCNT;
> +  | PTA_ADX | PTA_RDSEED | PTA_LZCNT | PTA_POPCNT;
>  constexpr wide_int_bitmask PTA_YONGFENG = PTA_LUJIAZUI | PTA_AVX | PTA_AVX2
> -  | PTA_F16C | PTA_FMA | PTA_SHA | PTA_LZCNT;
> +  | PTA_F16C | PTA_FMA | PTA_SHA;
>
>  #ifndef GENERATOR_FILE
>
> --
> 2.49.0
>

Reply via email to