This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] elf: Update GNU_PROPERTY_X86_XXX macros [BZ #23797]
- From: Florian Weimer <fw at deneb dot enyo dot de>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Sat, 20 Oct 2018 11:32:17 +0200
- Subject: Re: [PATCH] elf: Update GNU_PROPERTY_X86_XXX macros [BZ #23797]
- References: <20181019224743.9457-1-hjl.tools@gmail.com>
* H. J. Lu:
> +#define GNU_PROPERTY_X86_ISA_1_CMOV (1U << 0)
> +#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 1)
> +#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 2)
> +#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 3)
> +#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 4)
> +#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 5)
> +#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 6)
> +#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 7)
> +#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 8)
> +#define GNU_PROPERTY_X86_ISA_1_FMA (1U << 9)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 10)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 11)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 12)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 13)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 14)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 15)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 16)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS (1U << 17)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW (1U << 18)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_BITALG (1U << 19)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_IFMA (1U << 20)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_VBMI (1U << 21)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2 (1U << 22)
> +#define GNU_PROPERTY_X86_ISA_1_AVX512_VNNI (1U << 23)
What guides the selection of flags? Why is there CMOV (which
presumably implies FCMOV), but not CMPXCHG16B? What about TZCNT,
which silently executed incorrectly if the CPU does not support it?
Which FMA is FMA?
> +#define GNU_PROPERTY_X86_FEATURE_2_X86 (1U << 0)
> +#define GNU_PROPERTY_X86_FEATURE_2_X87 (1U << 1)
> +#define GNU_PROPERTY_X86_FEATURE_2_MMX (1U << 2)
> +#define GNU_PROPERTY_X86_FEATURE_2_XMM (1U << 3)
> +#define GNU_PROPERTY_X86_FEATURE_2_YMM (1U << 4)
> +#define GNU_PROPERTY_X86_FEATURE_2_ZMM (1U << 5)
> +#define GNU_PROPERTY_X86_FEATURE_2_FXSR (1U << 6)
> +#define GNU_PROPERTY_X86_FEATURE_2_XSAVE (1U << 7)
> +#define GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT (1U << 8)
> +#define GNU_PROPERTY_X86_FEATURE_2_XSAVEC (1U << 9)
What's the difference between an ISA and a feature?