On 11/16/20 6:44 PM, H.J. Lu wrote: > On Mon, Nov 16, 2020 at 4:58 PM Jeff Law <l...@redhat.com> wrote: >> >> On 11/9/20 11:57 AM, H.J. Lu via Gcc-patches wrote: >>> GCC 11 supports -march=x86-64-v[234] to enable x86 micro-architecture ISA >>> levels: >>> >>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97250 >>> >>> Binutils has been updated to support GNU_PROPERTY_X86_ISA_1_V[234] marker: >>> >>> https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/13 >>> >>> with >>> >>> commit b0ab06937385e0ae25cebf1991787d64f439bf12 >>> Author: H.J. Lu <hjl.to...@gmail.com> >>> Date: Fri Oct 30 06:49:57 2020 -0700 >>> >>> x86: Support GNU_PROPERTY_X86_ISA_1_BASELINE marker >>> >>> and >>> >>> commit 32930e4edbc06bc6f10c435dbcc63131715df678 >>> Author: H.J. Lu <hjl.to...@gmail.com> >>> Date: Fri Oct 9 05:05:57 2020 -0700 >>> >>> x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker >>> >>> in x86 ELF binaries. >>> >>> Add -mneeded to emit GNU_PROPERTY_X86_ISA_1_NEEDED property to indicate >>> the micro-architecture ISA level required to execute the binary. >>> >>> gcc/ >>> >>> * config.gcc: Replace cet.o with gnu-property.o. Replace >>> i386/t-cet with i386/t-gnu-property. >>> * config/i386/cet.c: Renamed to ... >>> * config/i386/gnu-property.c: This. >>> (emit_gnu_property): New function. >>> (file_end_indicate_exec_stack_and_cet): Renamed to ... >>> (file_end_indicate_exec_stack_and_gnu_property): This. Call >>> emit_gnu_property to generate GNU_PROPERTY_X86_FEATURE_1_AND and >>> GNU_PROPERTY_X86_ISA_1_NEEDED properties. >>> * config/i386/i386.opt (mneeded): New. >>> * config/i386/linux-common.h (file_end_indicate_exec_stack_and_cet): >>> Renamed to ... >>> (file_end_indicate_exec_stack_and_gnu_property): This. >>> (TARGET_ASM_FILE_END): Updated. >>> * config/i386/t-cet: Renamed to ... >>> * config/i386/t-gnu-property: This. >>> (cet.o): Renamed to ... >>> (gnu-property.o): This. >>> * doc/invoke.texi: Document -mneeded. >>> >>> gcc/testsuite/ >>> >>> * gcc.target/i386/x86-needed-1.c: New test. >>> * gcc.target/i386/x86-needed-2.c: Likewise. >>> * gcc.target/i386/x86-needed-3.c: Likewise. >> Would it make sense to have -mneeded on by default if we detect a >> suitable assembler? The goal being that on the distro level we'd have >> the appropriate markup for everything in the distro without having to >> worry about injecting the -mneeded flag into every build. > It is OK to set the file level USED ISA bits. But the file level NEEDED > ISA bits should be set by developers. Otherwise, function multiversioning > with AVX512 will lead to output marked with ISA v4 needed which isn't > true. True. Function multi-versioning does turn a lot of traditional thinking in this space on its side. OK for the trunk. jeff