From 32930e4edbc06bc6f10c435dbcc63131715df678 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Fri, 9 Oct 2020 05:05:57 -0700
Subject: [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker

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

Update GNU_PROPERTY_X86_ISA_1_XXX macros:

https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/13

in x86 ELF binaries to indicate that micro-architecture ISA levels
required to execute the binary:

 #define GNU_PROPERTY_X86_ISA_1_NEEDED (GNU_PROPERTY_X86_UINT32_OR_LO + 2)
 #define GNU_PROPERTY_X86_ISA_1_USED (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 2)
 #define GNU_PROPERTY_X86_ISA_1_V2 (1U << 0)
 #define GNU_PROPERTY_X86_ISA_1_V3 (1U << 1)
 #define GNU_PROPERTY_X86_ISA_1_V4 (1U << 2)

The previous GNU_PROPERTY_X86_ISA_1_XXX  macros are deprecated and renamed
to GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX.

In addition to EM_X86_64, GNU_PROPERTY_X86_ISA_1_V[234] marker can be used
by ld.so to detect the x86-64-v4 shared library placed in an x86-64-v2
directory by mistake on an x86-64-v2 machine to avoid crashes on x86-64-v4
instructions.

Add -z x86-64-v[234] linker command line option to mark x86-64-v[234]
ISA level as needed.

Also add

 #define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11)

for mask registers.

bfd/

	PR gas/26703
	* elf-linker-x86.h (elf_linker_x86_params): Add isa_level.
	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge
	GNU_PROPERTY_X86_ISA_1_V[234].
	(_bfd_x86_elf_link_setup_gnu_properties): Generate
	GNU_PROPERTY_X86_ISA_1_V[234] for -z x86-64-v[234].

binutils/

	PR gas/26703
	* readelf.c (decode_x86_compat_2_isa): New function.
	(decode_x86_isa): Updated for new X86_ISA_1_XXX bits.
	(decode_x86_feature_1): Handle GNU_PROPERTY_X86_FEATURE_2_MASK.
	(print_gnu_property_note): Handle X86_COMPAT_2_ISA_1_USED,
	and X86_COMPAT_2_ISA_1_NEEDED.
	* testsuite/binutils-all/i386/pr21231b.s: Updated to the current
	GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
	values.
	* testsuite/binutils-all/x86-64/pr21231b.s: Likewise.
	* testsuite/binutils-all/x86-64/pr23494a.s: Likewise.
	* testsuite/binutils-all/x86-64/pr23494b.s: Likewise.
	* testsuite/binutils-all/x86-64/pr23494c.s: Likewise.
	* testsuite/binutils-all/i386/empty.d: Updated.
	* testsuite/binutils-all/i386/ibt.d: Likewise.
	* testsuite/binutils-all/i386/pr21231a.d: Likewise.
	* testsuite/binutils-all/i386/pr21231b.d: Likewise.
	* testsuite/binutils-all/i386/shstk.d: Likewise.
	* testsuite/binutils-all/x86-64/empty-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/empty.d: Likewise.
	* testsuite/binutils-all/x86-64/ibt-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/ibt.d: Likewise.
	* testsuite/binutils-all/x86-64/pr21231a.d: Likewise.
	* testsuite/binutils-all/x86-64/pr21231b.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494a-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494a.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494c-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494c.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494d-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494d.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494e-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494e.d: Likewise.
	* testsuite/binutils-all/x86-64/shstk-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/shstk.d: Likewise.

gas/

	PR gas/26703
	* config/tc-i386.c (xstate): Add xstate_mask.
	(md_assemble): Check i.types[j], instead of i.tm.operand_types[j],
	for xstate.  Set xstate_mask, instead of xstate_zmm, for RegMask.
	(output_insn): Update for GNU_PROPERTY_X86_ISA_1_V[234].  Update
	xstate for mask register and VSIB.
	* testsuite/gas/i386/i386.exp: Run more GNU_PROPERTY tests.
	* testsuite/gas/i386/property-1.s: Updated to the current
	GNU_PROPERTY_X86_ISA_1_USED value.
	* testsuite/gas/i386/property-2.s: Only keep cmove.
	* testsuite/gas/i386/property-3.s: Changed to addsubpd.
	* testsuite/gas/i386/property-1.d: Updated.
	* testsuite/gas/i386/property-2.d: Likewise.
	* testsuite/gas/i386/property-3.d: Likewise.
	* testsuite/gas/i386/property-4.d: Likewise.
	* testsuite/gas/i386/property-5.d: Likewise.
	* testsuite/gas/i386/property-6.d: Likewise.
	* testsuite/gas/i386/x86-64-property-1.d: Likewise.
	* testsuite/gas/i386/x86-64-property-2.d: Likewise.
	* testsuite/gas/i386/x86-64-property-3.d: Likewise.
	* testsuite/gas/i386/x86-64-property-4.d: Likewise.
	* testsuite/gas/i386/x86-64-property-5.d: Likewise.
	* testsuite/gas/i386/x86-64-property-6.d: Likewise.
	* testsuite/gas/i386/x86-64-property-7.d: Likewise.
	* testsuite/gas/i386/x86-64-property-8.d: Likewise.
	* testsuite/gas/i386/x86-64-property-9.d: Likewise.
	* testsuite/gas/i386/property-11.d: New file.
	* testsuite/gas/i386/property-11.s: Likewise.
	* testsuite/gas/i386/property-12.d: Likewise.
	* testsuite/gas/i386/property-12.s: Likewise.
	* testsuite/gas/i386/property-13.d: Likewise.
	* testsuite/gas/i386/property-13.s: Likewise.
	* testsuite/gas/i386/x86-64-property-11.d: Likewise.
	* testsuite/gas/i386/x86-64-property-12.d: Likewise.
	* testsuite/gas/i386/x86-64-property-13.d: Likewise.
	* testsuite/gas/i386/x86-64-property-14.d: Likewise.
	* testsuite/gas/i386/x86-64-property-14.s: Likewise.

include/

	PR gas/26703
	* elf/common.h (GNU_PROPERTY_X86_ISA_1_USED): Renamed to ...
	(GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED): This.
	(GNU_PROPERTY_X86_ISA_1_NEEDED): Renamed to ...
	(GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED): This.
	(GNU_PROPERTY_X86_ISA_1_XXX): Renamed to ...
	(GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX): This.
	(GNU_PROPERTY_X86_ISA_1_NEEDED): New.
	(GNU_PROPERTY_X86_ISA_1_USED): Likewise.
	(GNU_PROPERTY_X86_ISA_1_V2): Likewise.
	(GNU_PROPERTY_X86_ISA_1_V3): Likewise.
	(GNU_PROPERTY_X86_ISA_1_V4): Likewise.
	(GNU_PROPERTY_X86_FEATURE_2_MASK): Likewise.

ld/

	PR gas/26703
	* NEWS: Mention -z x86-64-v[234].
	* ld.texi: Document -z x86-64-v[234].
	* emulparams/elf32_x86_64.sh: Use x86-64-level.sh.
	* emulparams/elf_i386.sh: Likewise.
	* emulparams/elf_x86_64.sh: Likewise.
	* emulparams/x86-64-level.sh: New file.
	* testsuite/ld-elf/x86-feature-1a.rd: Update.
	* testsuite/ld-elf/x86-feature-1b.rd: Likewise.
	* testsuite/ld-elf/x86-feature-1c.rd: Likewise.
	* testsuite/ld-elf/x86-feature-1d.rd: Likewise.
	* testsuite/ld-elf/x86-feature-1e.rd: Likewise.
	* testsuite/ld-i386/pr23372c.d: Likewise.
	* testsuite/ld-i386/pr23486c.d: Likewise.
	* testsuite/ld-i386/pr23486d.d: Likewise.
	* testsuite/ld-i386/pr24322a.d: Likewise.
	* testsuite/ld-i386/pr24322b.d: Likewise.
	* testsuite/ld-i386/property-1a.r: Likewise.
	* testsuite/ld-i386/property-2a.r: Likewise.
	* testsuite/ld-i386/property-3.r: Likewise.
	* testsuite/ld-i386/property-3a.r: Likewise.
	* testsuite/ld-i386/property-4.r: Likewise.
	* testsuite/ld-i386/property-4a.r: Likewise.
	* testsuite/ld-i386/property-5.r: Likewise.
	* testsuite/ld-i386/property-5a.r: Likewise.
	* testsuite/ld-i386/property-7a.r: Likewise.
	* testsuite/ld-i386/property-x86-3.d: Likewise.
	* testsuite/ld-i386/property-x86-4a.d: Likewise.
	* testsuite/ld-i386/property-x86-5.d: Likewise.
	* testsuite/ld-i386/property-x86-cet1.d: Likewise.
	* testsuite/ld-i386/property-x86-cet2a.d: Likewise.
	* testsuite/ld-i386/property-x86-cet5a.d: Likewise.
	* testsuite/ld-i386/property-x86-cet5b.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt1a.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt1b.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt2.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt4.d: Likewise.
	* testsuite/ld-i386/property-x86-ibt5.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk1a.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk1b.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk2.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk4.d: Likewise.
	* testsuite/ld-i386/property-x86-shstk5.d: Likewise.
	* testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
	* testsuite/ld-x86-64/pr23372c.d: Likewise.
	* testsuite/ld-x86-64/pr23486c.d: Likewise.
	* testsuite/ld-x86-64/pr23486d-x32.d: Likewise.
	* testsuite/ld-x86-64/pr23486d.d: Likewise.
	* testsuite/ld-x86-64/pr24322a-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24322a.d: Likewise.
	* testsuite/ld-x86-64/pr24322b-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24322b.d: Likewise.
	* testsuite/ld-x86-64/pr24458a-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24458a.d: Likewise.
	* testsuite/ld-x86-64/pr24458b-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24458b.d: Likewise.
	* testsuite/ld-x86-64/pr24458c-x32.d: Likewise.
	* testsuite/ld-x86-64/pr24458c.d: Likewise.
	* testsuite/ld-x86-64/property-1a.r: Likewise.
	* testsuite/ld-x86-64/property-2a.r: Likewise.
	* testsuite/ld-x86-64/property-3.r: Likewise.
	* testsuite/ld-x86-64/property-3a.r: Likewise.
	* testsuite/ld-x86-64/property-4.r: Likewise.
	* testsuite/ld-x86-64/property-4a.r: Likewise.
	* testsuite/ld-x86-64/property-5.r: Likewise.
	* testsuite/ld-x86-64/property-5a.r: Likewise.
	* testsuite/ld-x86-64/property-7a.r: Likewise.
	* testsuite/ld-x86-64/property-x86-3-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-3.d: Likewise.
	* testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-4a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-5-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-5.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet1.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet2a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-cet5b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt1b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt1b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt2-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt2.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt4-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt4.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt5-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-ibt5.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk2.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk4-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk4.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-shstk5.d: Likewise.
	* testsuite/ld-i386/i386.exp: Run property-x86-6,
	property-x86-isa1, property-x86-isa2 and property-x86-isa3.
	* testsuite/ld-i386/property-x86-1.S: Updated to the current
	GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
	values.
	* testsuite/ld-i386/property-x86-2.S: Likewise.
	* testsuite/ld-i386/property-x86-3.s: Likewise.
	* testsuite/ld-x86-64/pr23372d.s: Likewise.
	* testsuite/ld-x86-64/pr23372e.s: Likewise.
	* testsuite/ld-x86-64/pr23372f.s: Likewise.
	* testsuite/ld-x86-64/pr23486c.s: Likewise.
	* testsuite/ld-x86-64/pr23486d.s: Likewise.
	* testsuite/ld-x86-64/property-x86-1.S: Likewise.
	* testsuite/ld-x86-64/property-x86-2.S: Likewise.
	* testsuite/ld-x86-64/property-x86-3.s: Likewise.
	* testsuite/ld-x86-64/property-x86-5a.s: Likewise.
	* testsuite/ld-x86-64/property-x86-5b.s: Likewise.
	* testsuite/ld-i386/property-x86-6.d: New file.
	* testsuite/ld-i386/property-x86-isa1.d: Likewise.
	* testsuite/ld-i386/property-x86-isa2.d: Likewise.
	* testsuite/ld-i386/property-x86-isa3.d: Likewise.
	* testsuite/ld-x86-64/property-x86-6-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-6.d: Likewise.
	* testsuite/ld-x86-64/property-x86-6.s: Likewise.
	* testsuite/ld-x86-64/property-x86-isa1-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-isa1.d: Likewise.
	* testsuite/ld-x86-64/property-x86-isa1.s: Likewise.
	* testsuite/ld-x86-64/property-x86-isa2-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-isa2.d: Likewise.
	* testsuite/ld-x86-64/property-x86-isa3-x32.d: Likewise.
	* testsuite/ld-x86-64/property-x86-isa3.d: Likewise.
	* testsuite/ld-x86-64/simple.s: Likewise.
	* ld/testsuite/ld-x86-64/x86-64.exp: Run property-x86-6,
	property-x86-6-x32, property-x86-isa1, property-x86-isa1-x32,
	property-x86-isa2, property-x86-isa2-x32, property-x86-isa3-x32
	and property-x86-isa3.
---
 bfd/ChangeLog                                 |   9 ++
 bfd/elf-linker-x86.h                          |   3 +
 bfd/elfxx-x86.c                               |  64 +++++++-
 binutils/ChangeLog                            |  37 +++++
 binutils/readelf.c                            | 111 ++++++++++---
 binutils/testsuite/binutils-all/i386/empty.d  |   2 +-
 binutils/testsuite/binutils-all/i386/ibt.d    |   2 +-
 .../testsuite/binutils-all/i386/pr21231a.d    |   2 +-
 .../testsuite/binutils-all/i386/pr21231b.d    |   6 +-
 .../testsuite/binutils-all/i386/pr21231b.s    |   4 +-
 binutils/testsuite/binutils-all/i386/shstk.d  |   2 +-
 .../testsuite/binutils-all/x86-64/empty-x32.d |   2 +-
 .../testsuite/binutils-all/x86-64/empty.d     |   2 +-
 .../testsuite/binutils-all/x86-64/ibt-x32.d   |   2 +-
 binutils/testsuite/binutils-all/x86-64/ibt.d  |   2 +-
 .../testsuite/binutils-all/x86-64/pr21231a.d  |   2 +-
 .../testsuite/binutils-all/x86-64/pr21231b.d  |   6 +-
 .../testsuite/binutils-all/x86-64/pr21231b.s  |   4 +-
 .../binutils-all/x86-64/pr23494a-x32.d        |   4 +-
 .../testsuite/binutils-all/x86-64/pr23494a.d  |   4 +-
 .../testsuite/binutils-all/x86-64/pr23494a.s  |   6 +-
 .../testsuite/binutils-all/x86-64/pr23494b.s  |   2 +-
 .../binutils-all/x86-64/pr23494c-x32.d        |   2 +-
 .../testsuite/binutils-all/x86-64/pr23494c.d  |   2 +-
 .../testsuite/binutils-all/x86-64/pr23494c.s  |   6 +-
 .../binutils-all/x86-64/pr23494d-x32.d        |   4 +-
 .../testsuite/binutils-all/x86-64/pr23494d.d  |   4 +-
 .../binutils-all/x86-64/pr23494e-x32.d        |   4 +-
 .../testsuite/binutils-all/x86-64/pr23494e.d  |   4 +-
 .../testsuite/binutils-all/x86-64/shstk-x32.d |   2 +-
 .../testsuite/binutils-all/x86-64/shstk.d     |   2 +-
 gas/ChangeLog                                 |  40 +++++
 gas/config/tc-i386.c                          | 126 ++++++++-------
 gas/testsuite/gas/i386/i386.exp               |   7 +
 gas/testsuite/gas/i386/property-1.d           |   2 +-
 gas/testsuite/gas/i386/property-1.s           |   2 +-
 gas/testsuite/gas/i386/property-10.d          |   2 +-
 gas/testsuite/gas/i386/property-11.d          |   9 ++
 gas/testsuite/gas/i386/property-11.s          |   2 +
 gas/testsuite/gas/i386/property-12.d          |   9 ++
 gas/testsuite/gas/i386/property-12.s          |   2 +
 gas/testsuite/gas/i386/property-13.d          |   9 ++
 gas/testsuite/gas/i386/property-13.s          |   2 +
 gas/testsuite/gas/i386/property-2.d           |   4 +-
 gas/testsuite/gas/i386/property-2.s           |  30 ----
 gas/testsuite/gas/i386/property-3.d           |   4 +-
 gas/testsuite/gas/i386/property-3.s           |   2 +-
 gas/testsuite/gas/i386/property-4.d           |   4 +-
 gas/testsuite/gas/i386/property-5.d           |   4 +-
 gas/testsuite/gas/i386/property-6.d           |   4 +-
 gas/testsuite/gas/i386/x86-64-property-1.d    |   2 +-
 gas/testsuite/gas/i386/x86-64-property-10.d   |   2 +-
 gas/testsuite/gas/i386/x86-64-property-11.d   |  10 ++
 gas/testsuite/gas/i386/x86-64-property-12.d   |  10 ++
 gas/testsuite/gas/i386/x86-64-property-13.d   |  10 ++
 gas/testsuite/gas/i386/x86-64-property-14.d   |   9 ++
 gas/testsuite/gas/i386/x86-64-property-14.s   |   2 +
 gas/testsuite/gas/i386/x86-64-property-2.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-3.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-4.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-5.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-6.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-7.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-8.d    |   4 +-
 gas/testsuite/gas/i386/x86-64-property-9.d    |   4 +-
 include/ChangeLog                             |  16 ++
 include/elf/common.h                          |  76 +++++----
 ld/ChangeLog                                  | 152 ++++++++++++++++++
 ld/NEWS                                       |   3 +
 ld/emulparams/elf32_x86_64.sh                 |   1 +
 ld/emulparams/elf_i386.sh                     |   1 +
 ld/emulparams/elf_x86_64.sh                   |   1 +
 ld/emulparams/x86-64-level.sh                 |  18 +++
 ld/ld.texi                                    |   9 ++
 ld/testsuite/ld-elf/x86-feature-1a.rd         |   2 +-
 ld/testsuite/ld-elf/x86-feature-1b.rd         |   2 +-
 ld/testsuite/ld-elf/x86-feature-1c.rd         |   2 +-
 ld/testsuite/ld-elf/x86-feature-1d.rd         |   2 +-
 ld/testsuite/ld-elf/x86-feature-1e.rd         |   2 +-
 ld/testsuite/ld-i386/i386.exp                 |   4 +
 ld/testsuite/ld-i386/pr23372c.d               |   2 +-
 ld/testsuite/ld-i386/pr23486c.d               |   2 +-
 ld/testsuite/ld-i386/pr23486d.d               |   2 +-
 ld/testsuite/ld-i386/pr24322a.d               |   2 +-
 ld/testsuite/ld-i386/pr24322b.d               |   2 +-
 ld/testsuite/ld-i386/property-1a.r            |   2 +-
 ld/testsuite/ld-i386/property-2a.r            |   2 +-
 ld/testsuite/ld-i386/property-3.r             |   2 +-
 ld/testsuite/ld-i386/property-3a.r            |   4 +-
 ld/testsuite/ld-i386/property-4.r             |   2 +-
 ld/testsuite/ld-i386/property-4a.r            |   4 +-
 ld/testsuite/ld-i386/property-5.r             |   2 +-
 ld/testsuite/ld-i386/property-5a.r            |   4 +-
 ld/testsuite/ld-i386/property-7a.r            |   2 +-
 ld/testsuite/ld-i386/property-x86-1.S         |   4 +-
 ld/testsuite/ld-i386/property-x86-2.S         |   4 +-
 ld/testsuite/ld-i386/property-x86-3.d         |   4 +-
 ld/testsuite/ld-i386/property-x86-3.s         |   8 +-
 ld/testsuite/ld-i386/property-x86-4a.d        |   2 +-
 ld/testsuite/ld-i386/property-x86-5.d         |   4 +-
 ld/testsuite/ld-i386/property-x86-6.d         |  10 ++
 ld/testsuite/ld-i386/property-x86-cet1.d      |   2 +-
 ld/testsuite/ld-i386/property-x86-cet2a.d     |   4 +-
 ld/testsuite/ld-i386/property-x86-cet5a.d     |   4 +-
 ld/testsuite/ld-i386/property-x86-cet5b.d     |   2 +-
 ld/testsuite/ld-i386/property-x86-ibt1a.d     |   4 +-
 ld/testsuite/ld-i386/property-x86-ibt1b.d     |   4 +-
 ld/testsuite/ld-i386/property-x86-ibt2.d      |   2 +-
 ld/testsuite/ld-i386/property-x86-ibt3a.d     |   4 +-
 ld/testsuite/ld-i386/property-x86-ibt3b.d     |   4 +-
 ld/testsuite/ld-i386/property-x86-ibt4.d      |   2 +-
 ld/testsuite/ld-i386/property-x86-ibt5.d      |   2 +-
 ld/testsuite/ld-i386/property-x86-isa1.d      |  11 ++
 ld/testsuite/ld-i386/property-x86-isa2.d      |   9 ++
 ld/testsuite/ld-i386/property-x86-isa3.d      |   9 ++
 ld/testsuite/ld-i386/property-x86-shstk1a.d   |   4 +-
 ld/testsuite/ld-i386/property-x86-shstk1b.d   |   4 +-
 ld/testsuite/ld-i386/property-x86-shstk2.d    |   2 +-
 ld/testsuite/ld-i386/property-x86-shstk3a.d   |   4 +-
 ld/testsuite/ld-i386/property-x86-shstk3b.d   |   4 +-
 ld/testsuite/ld-i386/property-x86-shstk4.d    |   2 +-
 ld/testsuite/ld-i386/property-x86-shstk5.d    |   2 +-
 ld/testsuite/ld-x86-64/pr23372c-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/pr23372c.d             |   2 +-
 ld/testsuite/ld-x86-64/pr23372d.s             |   2 +-
 ld/testsuite/ld-x86-64/pr23372e.s             |   2 +-
 ld/testsuite/ld-x86-64/pr23372f.s             |   2 +-
 ld/testsuite/ld-x86-64/pr23486c-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/pr23486c.d             |   2 +-
 ld/testsuite/ld-x86-64/pr23486c.s             |   2 +-
 ld/testsuite/ld-x86-64/pr23486d-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/pr23486d.d             |   2 +-
 ld/testsuite/ld-x86-64/pr23486d.s             |   2 +-
 ld/testsuite/ld-x86-64/pr24322a-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/pr24322a.d             |   2 +-
 ld/testsuite/ld-x86-64/pr24322b-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/pr24322b.d             |   2 +-
 ld/testsuite/ld-x86-64/pr24458a-x32.d         |   4 +-
 ld/testsuite/ld-x86-64/pr24458a.d             |   4 +-
 ld/testsuite/ld-x86-64/pr24458b-x32.d         |   4 +-
 ld/testsuite/ld-x86-64/pr24458b.d             |   4 +-
 ld/testsuite/ld-x86-64/pr24458c-x32.d         |   4 +-
 ld/testsuite/ld-x86-64/pr24458c.d             |   4 +-
 ld/testsuite/ld-x86-64/property-1a.r          |   2 +-
 ld/testsuite/ld-x86-64/property-2a.r          |   2 +-
 ld/testsuite/ld-x86-64/property-3.r           |   2 +-
 ld/testsuite/ld-x86-64/property-3a.r          |   4 +-
 ld/testsuite/ld-x86-64/property-4.r           |   2 +-
 ld/testsuite/ld-x86-64/property-4a.r          |   4 +-
 ld/testsuite/ld-x86-64/property-5.r           |   2 +-
 ld/testsuite/ld-x86-64/property-5a.r          |   4 +-
 ld/testsuite/ld-x86-64/property-7a.r          |   2 +-
 ld/testsuite/ld-x86-64/property-x86-1.S       |   4 +-
 ld/testsuite/ld-x86-64/property-x86-2.S       |   4 +-
 ld/testsuite/ld-x86-64/property-x86-3-x32.d   |   4 +-
 ld/testsuite/ld-x86-64/property-x86-3.d       |   4 +-
 ld/testsuite/ld-x86-64/property-x86-3.s       |   8 +-
 ld/testsuite/ld-x86-64/property-x86-4a-x32.d  |   2 +-
 ld/testsuite/ld-x86-64/property-x86-4a.d      |   2 +-
 ld/testsuite/ld-x86-64/property-x86-5-x32.d   |   4 +-
 ld/testsuite/ld-x86-64/property-x86-5.d       |   4 +-
 ld/testsuite/ld-x86-64/property-x86-5a.s      |   4 +-
 ld/testsuite/ld-x86-64/property-x86-5b.s      |   2 +-
 ld/testsuite/ld-x86-64/property-x86-6-x32.d   |  10 ++
 ld/testsuite/ld-x86-64/property-x86-6.d       |   9 ++
 ld/testsuite/ld-x86-64/property-x86-6.s       |  83 ++++++++++
 .../ld-x86-64/property-x86-cet1-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/property-x86-cet1.d    |   2 +-
 .../ld-x86-64/property-x86-cet2a-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-cet2a.d   |   4 +-
 .../ld-x86-64/property-x86-cet5a-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-cet5a.d   |   4 +-
 .../ld-x86-64/property-x86-cet5b-x32.d        |   2 +-
 ld/testsuite/ld-x86-64/property-x86-cet5b.d   |   2 +-
 .../ld-x86-64/property-x86-ibt1a-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-ibt1a.d   |   4 +-
 .../ld-x86-64/property-x86-ibt1b-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-ibt1b.d   |   4 +-
 .../ld-x86-64/property-x86-ibt2-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/property-x86-ibt2.d    |   2 +-
 .../ld-x86-64/property-x86-ibt3a-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-ibt3a.d   |   4 +-
 .../ld-x86-64/property-x86-ibt3b-x32.d        |   4 +-
 ld/testsuite/ld-x86-64/property-x86-ibt3b.d   |   4 +-
 .../ld-x86-64/property-x86-ibt4-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/property-x86-ibt4.d    |   2 +-
 .../ld-x86-64/property-x86-ibt5-x32.d         |   2 +-
 ld/testsuite/ld-x86-64/property-x86-ibt5.d    |   2 +-
 .../ld-x86-64/property-x86-isa1-x32.d         |  11 ++
 ld/testsuite/ld-x86-64/property-x86-isa1.d    |  11 ++
 ld/testsuite/ld-x86-64/property-x86-isa1.s    |  54 +++++++
 .../ld-x86-64/property-x86-isa2-x32.d         |   9 ++
 ld/testsuite/ld-x86-64/property-x86-isa2.d    |   9 ++
 .../ld-x86-64/property-x86-isa3-x32.d         |   9 ++
 ld/testsuite/ld-x86-64/property-x86-isa3.d    |   9 ++
 .../ld-x86-64/property-x86-shstk1a-x32.d      |   4 +-
 ld/testsuite/ld-x86-64/property-x86-shstk1a.d |   4 +-
 .../ld-x86-64/property-x86-shstk1b-x32.d      |   4 +-
 ld/testsuite/ld-x86-64/property-x86-shstk1b.d |   4 +-
 .../ld-x86-64/property-x86-shstk2-x32.d       |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk2.d  |   2 +-
 .../ld-x86-64/property-x86-shstk3a-x32.d      |   4 +-
 ld/testsuite/ld-x86-64/property-x86-shstk3a.d |   4 +-
 .../ld-x86-64/property-x86-shstk3b-x32.d      |   4 +-
 ld/testsuite/ld-x86-64/property-x86-shstk3b.d |   4 +-
 .../ld-x86-64/property-x86-shstk4-x32.d       |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk4.d  |   2 +-
 .../ld-x86-64/property-x86-shstk5-x32.d       |   2 +-
 ld/testsuite/ld-x86-64/property-x86-shstk5.d  |   2 +-
 ld/testsuite/ld-x86-64/simple.s               |   4 +
 ld/testsuite/ld-x86-64/x86-64.exp             |   8 +
 211 files changed, 1149 insertions(+), 404 deletions(-)
 create mode 100644 gas/testsuite/gas/i386/property-11.d
 create mode 100644 gas/testsuite/gas/i386/property-11.s
 create mode 100644 gas/testsuite/gas/i386/property-12.d
 create mode 100644 gas/testsuite/gas/i386/property-12.s
 create mode 100644 gas/testsuite/gas/i386/property-13.d
 create mode 100644 gas/testsuite/gas/i386/property-13.s
 create mode 100644 gas/testsuite/gas/i386/x86-64-property-11.d
 create mode 100644 gas/testsuite/gas/i386/x86-64-property-12.d
 create mode 100644 gas/testsuite/gas/i386/x86-64-property-13.d
 create mode 100644 gas/testsuite/gas/i386/x86-64-property-14.d
 create mode 100644 gas/testsuite/gas/i386/x86-64-property-14.s
 create mode 100644 ld/emulparams/x86-64-level.sh
 create mode 100644 ld/testsuite/ld-i386/property-x86-6.d
 create mode 100644 ld/testsuite/ld-i386/property-x86-isa1.d
 create mode 100644 ld/testsuite/ld-i386/property-x86-isa2.d
 create mode 100644 ld/testsuite/ld-i386/property-x86-isa3.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-6-x32.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-6.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-6.s
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa1-x32.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa1.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa1.s
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa2-x32.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa2.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa3-x32.d
 create mode 100644 ld/testsuite/ld-x86-64/property-x86-isa3.d
 create mode 100644 ld/testsuite/ld-x86-64/simple.s

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 468c6f64c31..9650b3d827c 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* elf-linker-x86.h (elf_linker_x86_params): Add isa_level.
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge
+	GNU_PROPERTY_X86_ISA_1_V[234].
+	(_bfd_x86_elf_link_setup_gnu_properties): Generate
+	GNU_PROPERTY_X86_ISA_1_V[234] for -z x86-64-v[234].
+
 2020-10-06  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/26711
diff --git a/bfd/elf-linker-x86.h b/bfd/elf-linker-x86.h
index d0cb20dde52..77e81960ab7 100644
--- a/bfd/elf-linker-x86.h
+++ b/bfd/elf-linker-x86.h
@@ -55,6 +55,9 @@ struct elf_linker_x86_params
   /* TRUE if --dynamic-linker is passed at command-line.  */
   unsigned int has_dynamic_linker : 1;
 
+  /* X86-64 ISA level needed.  */
+  unsigned int isa_level;
+
   /* Report missing IBT and SHSTK properties.  */
   enum elf_x86_cet_report cet_report;
 
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
index 143aae4b5cc..4a0360fb098 100644
--- a/bfd/elfxx-x86.c
+++ b/bfd/elfxx-x86.c
@@ -2337,6 +2337,8 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
 {
   unsigned int number, features;
   bfd_boolean updated = FALSE;
+  const struct elf_backend_data *bed;
+  struct elf_x86_link_hash_table *htab;
   unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
 
   if (pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
@@ -2366,10 +2368,32 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
 	   || (pr_type >= GNU_PROPERTY_X86_UINT32_OR_LO
 	       && pr_type <= GNU_PROPERTY_X86_UINT32_OR_HI))
     {
+      features = 0;
+      if (pr_type == GNU_PROPERTY_X86_ISA_1_NEEDED)
+	{
+	  bed = get_elf_backend_data (info->output_bfd);
+	  htab = elf_x86_hash_table (info, bed->target_id);
+	  switch (htab->params->isa_level)
+	    {
+	    case 0:
+	      break;
+	    case 2:
+	      features = GNU_PROPERTY_X86_ISA_1_V2;
+	      break;
+	    case 3:
+	      features = GNU_PROPERTY_X86_ISA_1_V3;
+	      break;
+	    case 4:
+	      features = GNU_PROPERTY_X86_ISA_1_V4;
+	      break;
+	    default:
+	      abort ();
+	    }
+	}
       if (aprop != NULL && bprop != NULL)
 	{
 	  number = aprop->u.number;
-	  aprop->u.number = number | bprop->u.number;
+	  aprop->u.number = number | bprop->u.number | features;
 	  /* Remove the property if all bits are empty.  */
 	  if (aprop->u.number == 0)
 	    {
@@ -2384,6 +2408,7 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
 	  /* Only one of APROP and BPROP can be NULL.  */
 	  if (aprop != NULL)
 	    {
+	      aprop->u.number |= features;
 	      if (aprop->u.number == 0)
 		{
 		  /* Remove APROP if all bits are empty.  */
@@ -2396,6 +2421,7 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
 	      /* Return TRUE if APROP is NULL and all bits of BPROP
 		 aren't empty to indicate that BPROP should be added
 		 to ABFD.  */
+	      bprop->u.number |= features;
 	      updated = bprop->u.number != 0;
 	    }
 	}
@@ -2409,10 +2435,8 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
 	 2. If APROP is NULL, remove x86 feature.
 	 3. Otherwise, do nothing.
        */
-      const struct elf_backend_data *bed
-	= get_elf_backend_data (info->output_bfd);
-      struct elf_x86_link_hash_table *htab
-	= elf_x86_hash_table (info, bed->target_id);
+      bed = get_elf_backend_data (info->output_bfd);
+      htab = elf_x86_hash_table (info, bed->target_id);
       if (!htab)
 	abort ();
       if (aprop != NULL && bprop != NULL)
@@ -2490,7 +2514,7 @@ _bfd_x86_elf_link_setup_gnu_properties
   asection *sec, *pltsec;
   bfd *dynobj;
   bfd_boolean use_ibt_plt;
-  unsigned int plt_alignment, features;
+  unsigned int plt_alignment, features, isa_level;
   struct elf_x86_link_hash_table *htab;
   bfd *pbfd;
   bfd *ebfd = NULL;
@@ -2532,6 +2556,24 @@ _bfd_x86_elf_link_setup_gnu_properties
   if (!(htab->params->cet_report & (cet_report_ibt | cet_report_shstk)))
     htab->params->cet_report = cet_report_none;
 
+  switch (htab->params->isa_level)
+    {
+    case 0:
+      isa_level = 0;
+      break;
+    case 2:
+      isa_level = GNU_PROPERTY_X86_ISA_1_V2;
+      break;
+    case 3:
+      isa_level = GNU_PROPERTY_X86_ISA_1_V3;
+      break;
+    case 4:
+      isa_level = GNU_PROPERTY_X86_ISA_1_V4;
+      break;
+    default:
+      abort ();
+    }
+
   if (ebfd != NULL)
     {
       prop = NULL;
@@ -2546,6 +2588,16 @@ _bfd_x86_elf_link_setup_gnu_properties
 	  prop->pr_kind = property_number;
 	}
 
+      if (isa_level)
+	{
+	  /* If ISA level is set, add GNU_PROPERTY_X86_ISA_1_NEEDED.  */
+	  prop = _bfd_elf_get_property (ebfd,
+					GNU_PROPERTY_X86_ISA_1_NEEDED,
+					4);
+	  prop->u.number |= isa_level;
+	  prop->pr_kind = property_number;
+	}
+
       /* Create the GNU property note section if needed.  */
       if (prop != NULL && pbfd == NULL)
 	{
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index b751eeec5e2..ed05b24acfd 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,40 @@
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* readelf.c (decode_x86_compat_2_isa): New function.
+	(decode_x86_isa): Updated for new X86_ISA_1_XXX bits.
+	(decode_x86_feature_1): Handle GNU_PROPERTY_X86_FEATURE_2_MASK.
+	(print_gnu_property_note): Handle X86_COMPAT_2_ISA_1_USED,
+	and X86_COMPAT_2_ISA_1_NEEDED.
+	* testsuite/binutils-all/i386/pr21231b.s: Updated to the current
+	GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
+	values.
+	* testsuite/binutils-all/x86-64/pr21231b.s: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494a.s: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494b.s: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494c.s: Likewise.
+	* testsuite/binutils-all/i386/empty.d: Updated.
+	* testsuite/binutils-all/i386/ibt.d: Likewise.
+	* testsuite/binutils-all/i386/pr21231a.d: Likewise.
+	* testsuite/binutils-all/i386/pr21231b.d: Likewise.
+	* testsuite/binutils-all/i386/shstk.d: Likewise.
+	* testsuite/binutils-all/x86-64/empty-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/empty.d: Likewise.
+	* testsuite/binutils-all/x86-64/ibt-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/ibt.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr21231a.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr21231b.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494a-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494a.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494c-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494c.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494d-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494d.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494e-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/pr23494e.d: Likewise.
+	* testsuite/binutils-all/x86-64/shstk-x32.d: Likewise.
+	* testsuite/binutils-all/x86-64/shstk.d: Likewise.
+
 2020-10-06  Nick Clifton  <nickc@redhat.com>
 
 	* objcopy.c (copy_object): Compare input and output sections by
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 9ba4e29a659..33ae4e527f6 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -18225,7 +18225,7 @@ decode_x86_compat_isa (unsigned int bitmask)
 }
 
 static void
-decode_x86_isa (unsigned int bitmask)
+decode_x86_compat_2_isa (unsigned int bitmask)
 {
   if (!bitmask)
     {
@@ -18240,79 +18240,79 @@ decode_x86_isa (unsigned int bitmask)
       bitmask &= ~ bit;
       switch (bit)
 	{
-	case GNU_PROPERTY_X86_ISA_1_CMOV:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV:
 	  printf ("CMOV");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_SSE:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE:
 	  printf ("SSE");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_SSE2:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2:
 	  printf ("SSE2");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_SSE3:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3:
 	  printf ("SSE3");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_SSSE3:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3:
 	  printf ("SSSE3");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_SSE4_1:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1:
 	  printf ("SSE4_1");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_SSE4_2:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2:
 	  printf ("SSE4_2");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX:
 	  printf ("AVX");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX2:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2:
 	  printf ("AVX2");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_FMA:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA:
 	  printf ("FMA");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512F:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F:
 	  printf ("AVX512F");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512CD:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD:
 	  printf ("AVX512CD");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512ER:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER:
 	  printf ("AVX512ER");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512PF:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF:
 	  printf ("AVX512PF");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512VL:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL:
 	  printf ("AVX512VL");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512DQ:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ:
 	  printf ("AVX512DQ");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512BW:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW:
 	  printf ("AVX512BW");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS:
 	  printf ("AVX512_4FMAPS");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW:
 	  printf ("AVX512_4VNNIW");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_BITALG:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG:
 	  printf ("AVX512_BITALG");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_IFMA:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA:
 	  printf ("AVX512_IFMA");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI:
 	  printf ("AVX512_VBMI");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2:
 	  printf ("AVX512_VBMI2");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_VNNI:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI:
 	  printf ("AVX512_VNNI");
 	  break;
-	case GNU_PROPERTY_X86_ISA_1_AVX512_BF16:
+	case GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16:
 	  printf ("AVX512_BF16");
 	  break;
 	default:
@@ -18324,6 +18324,40 @@ decode_x86_isa (unsigned int bitmask)
     }
 }
 
+static void
+decode_x86_isa (unsigned int bitmask)
+{
+  if (!bitmask)
+    {
+      printf (_("x86-64-baseline"));
+      return;
+    }
+
+  while (bitmask)
+    {
+      unsigned int bit = bitmask & (- bitmask);
+
+      bitmask &= ~ bit;
+      switch (bit)
+	{
+	case GNU_PROPERTY_X86_ISA_1_V2:
+	  printf ("x86-64-v2");
+	  break;
+	case GNU_PROPERTY_X86_ISA_1_V3:
+	  printf ("x86-64-v3");
+	  break;
+	case GNU_PROPERTY_X86_ISA_1_V4:
+	  printf ("x86-64-v4");
+	  break;
+	default:
+	  printf (_("<unknown: %x>"), bit);
+	  break;
+	}
+      if (bitmask)
+	printf (", ");
+    }
+}
+
 static void
 decode_x86_feature_1 (unsigned int bitmask)
 {
@@ -18392,6 +18426,9 @@ decode_x86_feature_2 (unsigned int bitmask)
 	case GNU_PROPERTY_X86_FEATURE_2_TMM:
 	  printf ("TMM");
 	  break;
+	case GNU_PROPERTY_X86_FEATURE_2_MASK:
+	  printf ("MASK");
+	  break;
 	case GNU_PROPERTY_X86_FEATURE_2_FXSR:
 	  printf ("FXSR");
 	  break;
@@ -18570,6 +18607,28 @@ print_gnu_property_note (Filedata * filedata, Elf_Internal_Note * pnote)
 		    }
 		  goto next;
 
+		case GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED:
+		  if (datasz != 4)
+		    printf (_("x86 ISA used: <corrupt length: %#x> "),
+			    datasz);
+		  else
+		    {
+		      printf ("x86 ISA used: ");
+		      decode_x86_compat_2_isa (bitmask);
+		    }
+		  goto next;
+
+		case GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED:
+		  if (datasz != 4)
+		    printf (_("x86 ISA needed: <corrupt length: %#x> "),
+			    datasz);
+		  else
+		    {
+		      printf ("x86 ISA needed: ");
+		      decode_x86_compat_2_isa (bitmask);
+		    }
+		  goto next;
+
 		default:
 		  break;
 		}
diff --git a/binutils/testsuite/binutils-all/i386/empty.d b/binutils/testsuite/binutils-all/i386/empty.d
index 84837ba91af..ec54389be6e 100644
--- a/binutils/testsuite/binutils-all/i386/empty.d
+++ b/binutils/testsuite/binutils-all/i386/empty.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: <None>
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/i386/ibt.d b/binutils/testsuite/binutils-all/i386/ibt.d
index 7698a8ec768..7723d70bf09 100644
--- a/binutils/testsuite/binutils-all/i386/ibt.d
+++ b/binutils/testsuite/binutils-all/i386/ibt.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/i386/pr21231a.d b/binutils/testsuite/binutils-all/i386/pr21231a.d
index 6c49a4981a7..657784d4f08 100644
--- a/binutils/testsuite/binutils-all/i386/pr21231a.d
+++ b/binutils/testsuite/binutils-all/i386/pr21231a.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x00000008	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/i386/pr21231b.d b/binutils/testsuite/binutils-all/i386/pr21231b.d
index 921345d31c3..77ef4e635e8 100644
--- a/binutils/testsuite/binutils-all/i386/pr21231b.d
+++ b/binutils/testsuite/binutils-all/i386/pr21231b.d
@@ -8,8 +8,8 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000002c	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 	no copy on protected 
-	x86 ISA used: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, AVX512_4FMAPS, AVX512_4VNNIW, AVX512_BITALG, AVX512_IFMA, AVX512_VBMI, AVX512_VBMI2, AVX512_VNNI, AVX512_BF16, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>
-	x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ
+	x86 ISA used: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>, <unknown: 10000>, <unknown: 20000>, <unknown: 40000>, <unknown: 80000>, <unknown: 100000>, <unknown: 200000>, <unknown: 400000>, <unknown: 800000>, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>
+	x86 ISA needed: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/i386/pr21231b.s b/binutils/testsuite/binutils-all/i386/pr21231b.s
index 1fd2575e2a6..67cd08dbfb8 100644
--- a/binutils/testsuite/binutils-all/i386/pr21231b.s
+++ b/binutils/testsuite/binutils-all/i386/pr21231b.s
@@ -19,14 +19,14 @@
 	.long 0			/* pr_datasz.  */
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 4f - 3f		/* pr_datasz.  */
 3:
 	.long 0x7fffffff
 4:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 4f - 3f		/* pr_datasz.  */
 3:
 	.long 0xffff
diff --git a/binutils/testsuite/binutils-all/i386/shstk.d b/binutils/testsuite/binutils-all/i386/shstk.d
index c2b5bece604..8d2e9f29690 100644
--- a/binutils/testsuite/binutils-all/i386/shstk.d
+++ b/binutils/testsuite/binutils-all/i386/shstk.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/empty-x32.d b/binutils/testsuite/binutils-all/x86-64/empty-x32.d
index 2e6dc429aaa..820996bbd9b 100644
--- a/binutils/testsuite/binutils-all/x86-64/empty-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/empty-x32.d
@@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: <None>
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/empty.d b/binutils/testsuite/binutils-all/x86-64/empty.d
index f66f0fcd794..0f9d8ceca55 100644
--- a/binutils/testsuite/binutils-all/x86-64/empty.d
+++ b/binutils/testsuite/binutils-all/x86-64/empty.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x00000010	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: <None>
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/ibt-x32.d b/binutils/testsuite/binutils-all/x86-64/ibt-x32.d
index 21a7abe9e78..490938a2cc5 100644
--- a/binutils/testsuite/binutils-all/x86-64/ibt-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/ibt-x32.d
@@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/ibt.d b/binutils/testsuite/binutils-all/x86-64/ibt.d
index 086076151fa..500ab54e4d4 100644
--- a/binutils/testsuite/binutils-all/x86-64/ibt.d
+++ b/binutils/testsuite/binutils-all/x86-64/ibt.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x00000010	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231a.d b/binutils/testsuite/binutils-all/x86-64/pr21231a.d
index 4e2c8e37581..f643a78a6ee 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr21231a.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr21231a.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x00000008	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231b.d b/binutils/testsuite/binutils-all/x86-64/pr21231b.d
index e1ca772363b..e9a185f1674 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr21231b.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr21231b.d
@@ -8,8 +8,8 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x00000038	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 	no copy on protected 
-	x86 ISA used: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, AVX512_4FMAPS, AVX512_4VNNIW, AVX512_BITALG, AVX512_IFMA, AVX512_VBMI, AVX512_VBMI2, AVX512_VNNI, AVX512_BF16, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>
-	x86 ISA needed: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ
+	x86 ISA used: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>, <unknown: 10000>, <unknown: 20000>, <unknown: 40000>, <unknown: 80000>, <unknown: 100000>, <unknown: 200000>, <unknown: 400000>, <unknown: 800000>, <unknown: 1000000>, <unknown: 2000000>, <unknown: 4000000>, <unknown: 8000000>, <unknown: 10000000>, <unknown: 20000000>, <unknown: 40000000>
+	x86 ISA needed: x86-64-v2, x86-64-v3, x86-64-v4, <unknown: 8>, <unknown: 10>, <unknown: 20>, <unknown: 40>, <unknown: 80>, <unknown: 100>, <unknown: 200>, <unknown: 400>, <unknown: 800>, <unknown: 1000>, <unknown: 2000>, <unknown: 4000>, <unknown: 8000>
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/pr21231b.s b/binutils/testsuite/binutils-all/x86-64/pr21231b.s
index 8fefebdb2ff..1feea55169b 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr21231b.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr21231b.s
@@ -19,14 +19,14 @@
 	.long 0			/* pr_datasz.  */
 	.p2align 3
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 4f - 3f		/* pr_datasz.  */
 3:
 	.long 0x7fffffff
 4:
 	.p2align 3
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 4f - 3f		/* pr_datasz.  */
 3:
 	.long 0xffff
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d
index 819551725ca..018809c6cfb 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494a-x32.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE4_1, AVX
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a.d b/binutils/testsuite/binutils-all/x86-64/pr23494a.d
index 906273331d3..dab7d1859cb 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494a.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494a.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE4_1, AVX
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494a.s b/binutils/testsuite/binutils-all/x86-64/pr23494a.s
index 26f7139510a..a36d303a131 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494a.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494a.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
@@ -48,7 +48,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa0
@@ -79,7 +79,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa0
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494b.s b/binutils/testsuite/binutils-all/x86-64/pr23494b.s
index 75a8d5aa7df..aa3cdb5f820 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494b.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494b.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d
index 188705b18ac..05f32635ced 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494c-x32.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000010	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: SSE, SSE3
+      Properties: x86 ISA used: x86-64-v3, <unknown: 8>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c.d b/binutils/testsuite/binutils-all/x86-64/pr23494c.d
index 7fff8e6641c..6b0d4f348e1 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494c.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494c.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: SSE, SSE3
+      Properties: x86 ISA used: x86-64-v3, <unknown: 8>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494c.s b/binutils/testsuite/binutils-all/x86-64/pr23494c.s
index 474182cfb01..0109bdba272 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494c.s
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494c.s
@@ -48,7 +48,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
@@ -79,7 +79,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa0
@@ -110,7 +110,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa0
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d
index eaf5438e1b8..385cbdbc4e1 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494d-x32.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE4_1, AVX
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494d.d b/binutils/testsuite/binutils-all/x86-64/pr23494d.d
index ef70683dbfc..45e9a39aff8 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494d.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494d.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE4_1, AVX
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d b/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d
index 62c655d99fb..968262a9d7a 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494e-x32.d
@@ -8,6 +8,6 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000040	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0xffffffff
-	x86 ISA needed: SSE4_1, AVX
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+	x86 ISA needed: <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/binutils/testsuite/binutils-all/x86-64/pr23494e.d b/binutils/testsuite/binutils-all/x86-64/pr23494e.d
index 6423bbf44d8..bbd9e21d588 100644
--- a/binutils/testsuite/binutils-all/x86-64/pr23494e.d
+++ b/binutils/testsuite/binutils-all/x86-64/pr23494e.d
@@ -8,6 +8,6 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0xffffffff
-	x86 ISA needed: SSE4_1, AVX
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+	x86 ISA needed: <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/binutils/testsuite/binutils-all/x86-64/shstk-x32.d b/binutils/testsuite/binutils-all/x86-64/shstk-x32.d
index e8918b1b3cb..b798d887410 100644
--- a/binutils/testsuite/binutils-all/x86-64/shstk-x32.d
+++ b/binutils/testsuite/binutils-all/x86-64/shstk-x32.d
@@ -9,5 +9,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/binutils/testsuite/binutils-all/x86-64/shstk.d b/binutils/testsuite/binutils-all/x86-64/shstk.d
index 425883436f2..7523e453ecb 100644
--- a/binutils/testsuite/binutils-all/x86-64/shstk.d
+++ b/binutils/testsuite/binutils-all/x86-64/shstk.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x00000010	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 26cae9c15d4..0eb9cd90bf3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,43 @@
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* config/tc-i386.c (xstate): Add xstate_mask.
+	(md_assemble): Check i.types[j], instead of i.tm.operand_types[j],
+	for xstate.  Set xstate_mask, instead of xstate_zmm, for RegMask.
+	(output_insn): Update for GNU_PROPERTY_X86_ISA_1_V[234].  Update
+	xstate for mask register and VSIB.
+	* testsuite/gas/i386/i386.exp: Run more GNU_PROPERTY tests.
+	* testsuite/gas/i386/property-1.s: Updated to the current
+	GNU_PROPERTY_X86_ISA_1_USED value.
+	* testsuite/gas/i386/property-2.s: Only keep cmove.
+	* testsuite/gas/i386/property-3.s: Changed to addsubpd.
+	* testsuite/gas/i386/property-1.d: Updated.
+	* testsuite/gas/i386/property-2.d: Likewise.
+	* testsuite/gas/i386/property-3.d: Likewise.
+	* testsuite/gas/i386/property-4.d: Likewise.
+	* testsuite/gas/i386/property-5.d: Likewise.
+	* testsuite/gas/i386/property-6.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-1.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-2.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-3.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-4.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-5.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-6.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-7.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-8.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-9.d: Likewise.
+	* testsuite/gas/i386/property-11.d: New file.
+	* testsuite/gas/i386/property-11.s: Likewise.
+	* testsuite/gas/i386/property-12.d: Likewise.
+	* testsuite/gas/i386/property-12.s: Likewise.
+	* testsuite/gas/i386/property-13.d: Likewise.
+	* testsuite/gas/i386/property-13.s: Likewise.
+	* testsuite/gas/i386/x86-64-property-11.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-12.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-13.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-14.d: Likewise.
+	* testsuite/gas/i386/x86-64-property-14.s: Likewise.
+
 2020-10-06  Alex Coplan  <alex.coplan@arm.com>
 
 	PR 26699
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index f3eaba6231e..64cd78c8ee9 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -374,7 +374,9 @@ struct _i386_insn
 	/* Use ZMM state.  */
 	xstate_zmm = 1 << 3 | xstate_ymm,
 	/* Use TMM state.  */
-	xstate_tmm = 1 << 4
+	xstate_tmm = 1 << 4,
+	/* Use MASK state.  */
+	xstate_mask = 1 << 5
       } xstate;
 
     /* Has GOTPC or TLS relocation.  */
@@ -4860,7 +4862,7 @@ md_assemble (char *line)
   for (j = 0; j < i.operands; j++)
     {
       i.types[j] = operand_type_and (i.types[j], i.tm.operand_types[j]);
-      switch (i.tm.operand_types[j].bitfield.class)
+      switch (i.types[j].bitfield.class)
 	{
 	default:
 	  break;
@@ -4868,16 +4870,16 @@ md_assemble (char *line)
 	  i.xstate |= xstate_mmx;
 	  break;
 	case RegMask:
-	  i.xstate |= xstate_zmm;
+	  i.xstate |= xstate_mask;
 	  break;
 	case RegSIMD:
-	  if (i.tm.operand_types[j].bitfield.tmmword)
+	  if (i.types[j].bitfield.tmmword)
 	    i.xstate |= xstate_tmm;
-	  else if (i.tm.operand_types[j].bitfield.zmmword)
+	  else if (i.types[j].bitfield.zmmword)
 	    i.xstate |= xstate_zmm;
-	  else if (i.tm.operand_types[j].bitfield.ymmword)
+	  else if (i.types[j].bitfield.ymmword)
 	    i.xstate |= xstate_ymm;
-	  else if (i.tm.operand_types[j].bitfield.xmmword)
+	  else if (i.types[j].bitfield.xmmword)
 	    i.xstate |= xstate_xmm;
 	  break;
 	}
@@ -9167,56 +9169,51 @@ output_insn (void)
 #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
   if (IS_ELF && x86_used_note && now_seg != absolute_section)
     {
-      if (i.tm.cpu_flags.bitfield.cpucmov)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_CMOV;
-      if (i.tm.cpu_flags.bitfield.cpusse)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE;
-      if (i.tm.cpu_flags.bitfield.cpusse2)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE2;
-      if (i.tm.cpu_flags.bitfield.cpusse3)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE3;
-      if (i.tm.cpu_flags.bitfield.cpussse3)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSSE3;
-      if (i.tm.cpu_flags.bitfield.cpusse4_1)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE4_1;
-      if (i.tm.cpu_flags.bitfield.cpusse4_2)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_SSE4_2;
-      if (i.tm.cpu_flags.bitfield.cpuavx)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX;
-      if (i.tm.cpu_flags.bitfield.cpuavx2)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX2;
-      if (i.tm.cpu_flags.bitfield.cpufma)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_FMA;
-      if (i.tm.cpu_flags.bitfield.cpuavx512f)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512F;
-      if (i.tm.cpu_flags.bitfield.cpuavx512cd)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512CD;
-      if (i.tm.cpu_flags.bitfield.cpuavx512er)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512ER;
-      if (i.tm.cpu_flags.bitfield.cpuavx512pf)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512PF;
-      if (i.tm.cpu_flags.bitfield.cpuavx512vl)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512VL;
-      if (i.tm.cpu_flags.bitfield.cpuavx512dq)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512DQ;
-      if (i.tm.cpu_flags.bitfield.cpuavx512bw)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512BW;
-      if (i.tm.cpu_flags.bitfield.cpuavx512_4fmaps)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_4FMAPS;
-      if (i.tm.cpu_flags.bitfield.cpuavx512_4vnniw)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_4VNNIW;
-      if (i.tm.cpu_flags.bitfield.cpuavx512_bitalg)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_BITALG;
-      if (i.tm.cpu_flags.bitfield.cpuavx512ifma)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_IFMA;
-      if (i.tm.cpu_flags.bitfield.cpuavx512vbmi)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VBMI;
-      if (i.tm.cpu_flags.bitfield.cpuavx512_vbmi2)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VBMI2;
-      if (i.tm.cpu_flags.bitfield.cpuavx512_vnni)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_VNNI;
-      if (i.tm.cpu_flags.bitfield.cpuavx512_bf16)
-	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_AVX512_BF16;
+      if ((i.xstate & xstate_tmm) == xstate_tmm
+	  || i.tm.cpu_flags.bitfield.cpuamx_tile)
+	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_TMM;
+
+      if (i.tm.cpu_flags.bitfield.cpusse3
+	  || i.tm.cpu_flags.bitfield.cpussse3
+	  || i.tm.cpu_flags.bitfield.cpusse4_1
+	  || i.tm.cpu_flags.bitfield.cpusse4_2
+	  || i.tm.cpu_flags.bitfield.cpucx16
+	  || i.tm.cpu_flags.bitfield.cpupopcnt
+	  /* LAHF-SAHF insns in 64-bit mode.  */
+	  || (flag_code == CODE_64BIT
+	      && (i.tm.base_opcode | 1) == 0x9f))
+	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V2;
+      if (i.tm.cpu_flags.bitfield.cpuavx
+	  || i.tm.cpu_flags.bitfield.cpuavx2
+	  /* Any VEX encoded insns execpt for CpuAVX512F, CpuAVX512BW,
+	     CpuAVX512DQ, LPW, TBM and AMX.  */
+	  || (i.tm.opcode_modifier.vex
+	      && !i.tm.cpu_flags.bitfield.cpuavx512f
+	      && !i.tm.cpu_flags.bitfield.cpuavx512bw
+	      && !i.tm.cpu_flags.bitfield.cpuavx512dq
+	      && !i.tm.cpu_flags.bitfield.cpulwp
+	      && !i.tm.cpu_flags.bitfield.cputbm
+	      && !(x86_feature_2_used & GNU_PROPERTY_X86_FEATURE_2_TMM))
+	  || i.tm.cpu_flags.bitfield.cpuf16c
+	  || i.tm.cpu_flags.bitfield.cpufma
+	  || i.tm.cpu_flags.bitfield.cpulzcnt
+	  || i.tm.cpu_flags.bitfield.cpumovbe
+	  || i.tm.cpu_flags.bitfield.cpuxsave
+	  || i.tm.cpu_flags.bitfield.cpuxsavec
+	  || i.tm.cpu_flags.bitfield.cpuxsaveopt
+	  || i.tm.cpu_flags.bitfield.cpuxsaves)
+	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V3;
+      if (i.tm.cpu_flags.bitfield.cpuavx512f
+	  || i.tm.cpu_flags.bitfield.cpuavx512bw
+	  || i.tm.cpu_flags.bitfield.cpuavx512dq
+	  || i.tm.cpu_flags.bitfield.cpuavx512vl
+	  /* Any EVEX encoded insns except for AVX512ER, AVX512PF and
+	     VNNIW.  */
+	  || (i.tm.opcode_modifier.evex
+	      && !i.tm.cpu_flags.bitfield.cpuavx512er
+	      && !i.tm.cpu_flags.bitfield.cpuavx512pf
+	      && !i.tm.cpu_flags.bitfield.cpuavx512_4vnniw))
+	x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V4;
 
       if (i.tm.cpu_flags.bitfield.cpu8087
 	  || i.tm.cpu_flags.bitfield.cpu287
@@ -9228,6 +9225,15 @@ output_insn (void)
 	  || i.tm.base_opcode == 0xf77 /* emms */
 	  || i.tm.base_opcode == 0xf0e /* femms */)
 	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MMX;
+      if (i.index_reg)
+	{
+	  if (i.index_reg->reg_type.bitfield.zmmword)
+	    i.xstate |= xstate_zmm;
+	  else if (i.index_reg->reg_type.bitfield.ymmword)
+	    i.xstate |= xstate_ymm;
+	  else if (i.index_reg->reg_type.bitfield.xmmword)
+	    i.xstate |= xstate_xmm;
+	}
       if ((i.xstate & xstate_xmm)
 	  || i.tm.cpu_flags.bitfield.cpuwidekl
 	  || i.tm.cpu_flags.bitfield.cpukl)
@@ -9236,6 +9242,8 @@ output_insn (void)
 	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_YMM;
       if ((i.xstate & xstate_zmm) == xstate_zmm)
 	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_ZMM;
+      if (i.mask || (i.xstate & xstate_mask) == xstate_mask)
+	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_MASK;
       if (i.tm.cpu_flags.bitfield.cpufxsr)
 	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_FXSR;
       if (i.tm.cpu_flags.bitfield.cpuxsave)
@@ -9244,10 +9252,6 @@ output_insn (void)
 	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT;
       if (i.tm.cpu_flags.bitfield.cpuxsavec)
 	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_XSAVEC;
-
-      if ((i.xstate & xstate_tmm) == xstate_tmm
-	  || i.tm.cpu_flags.bitfield.cpuamx_tile)
-	x86_feature_2_used |= GNU_PROPERTY_X86_FEATURE_2_TMM;
     }
 #endif
 
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 3a1ebda494a..8645f3061c2 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -645,6 +645,9 @@ if [gas_32_check] then {
 	run_dump_test "property-5"
 	run_dump_test "property-6"
 	run_dump_test "property-10"
+	run_dump_test "property-11"
+	run_dump_test "property-12"
+	run_dump_test "property-13"
 
 	if {[istarget "*-*-linux*"]} then {
 	    run_dump_test "align-branch-3"
@@ -1254,6 +1257,10 @@ if [gas_64_check] then {
 	run_dump_test "x86-64-property-8"
 	run_dump_test "x86-64-property-9"
 	run_dump_test "x86-64-property-10"
+	run_dump_test "x86-64-property-11"
+	run_dump_test "x86-64-property-12"
+	run_dump_test "x86-64-property-13"
+	run_dump_test "x86-64-property-14"
 
 	if {[istarget "*-*-linux*"]} then {
 	    run_dump_test "x86-64-align-branch-3"
diff --git a/gas/testsuite/gas/i386/property-1.d b/gas/testsuite/gas/i386/property-1.d
index cb9dbf863de..d40bd5259e0 100644
--- a/gas/testsuite/gas/i386/property-1.d
+++ b/gas/testsuite/gas/i386/property-1.d
@@ -5,4 +5,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
diff --git a/gas/testsuite/gas/i386/property-1.s b/gas/testsuite/gas/i386/property-1.s
index 4c293804479..729784ad7a8 100644
--- a/gas/testsuite/gas/i386/property-1.s
+++ b/gas/testsuite/gas/i386/property-1.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0
diff --git a/gas/testsuite/gas/i386/property-10.d b/gas/testsuite/gas/i386/property-10.d
index ad87ca7a1b9..69c8cbb2e05 100644
--- a/gas/testsuite/gas/i386/property-10.d
+++ b/gas/testsuite/gas/i386/property-10.d
@@ -5,5 +5,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/property-11.d b/gas/testsuite/gas/i386/property-11.d
new file mode 100644
index 00000000000..b3a4591b5dd
--- /dev/null
+++ b/gas/testsuite/gas/i386/property-11.d
@@ -0,0 +1,9 @@
+#name: i386 property 11
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-v3
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/property-11.s b/gas/testsuite/gas/i386/property-11.s
new file mode 100644
index 00000000000..0bfc4d855b3
--- /dev/null
+++ b/gas/testsuite/gas/i386/property-11.s
@@ -0,0 +1,2 @@
+	.text
+	vaesenclast %xmm4,%xmm6,%xmm2
diff --git a/gas/testsuite/gas/i386/property-12.d b/gas/testsuite/gas/i386/property-12.d
new file mode 100644
index 00000000000..fb9fa5c19aa
--- /dev/null
+++ b/gas/testsuite/gas/i386/property-12.d
@@ -0,0 +1,9 @@
+#name: i386 property 12
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-v4
+	x86 feature used: x86, XMM, MASK
diff --git a/gas/testsuite/gas/i386/property-12.s b/gas/testsuite/gas/i386/property-12.s
new file mode 100644
index 00000000000..f2a198b9396
--- /dev/null
+++ b/gas/testsuite/gas/i386/property-12.s
@@ -0,0 +1,2 @@
+	.text
+	vpdpwssd %xmm2, %xmm4, %xmm2{%k3}
diff --git a/gas/testsuite/gas/i386/property-13.d b/gas/testsuite/gas/i386/property-13.d
new file mode 100644
index 00000000000..91d1ce608b8
--- /dev/null
+++ b/gas/testsuite/gas/i386/property-13.d
@@ -0,0 +1,9 @@
+#name: i386 property 13
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-baseline
+	x86 feature used: x86, XMM, YMM, ZMM, MASK
diff --git a/gas/testsuite/gas/i386/property-13.s b/gas/testsuite/gas/i386/property-13.s
new file mode 100644
index 00000000000..20e8fdf9805
--- /dev/null
+++ b/gas/testsuite/gas/i386/property-13.s
@@ -0,0 +1,2 @@
+	.text
+	vscatterpf1dps	123(%ebp,%zmm7,8){%k1}
diff --git a/gas/testsuite/gas/i386/property-2.d b/gas/testsuite/gas/i386/property-2.d
index bdb469b56d9..5e322caf281 100644
--- a/gas/testsuite/gas/i386/property-2.d
+++ b/gas/testsuite/gas/i386/property-2.d
@@ -5,5 +5,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, AVX512_4FMAPS, AVX512_4VNNIW, AVX512_BITALG, AVX512_IFMA, AVX512_VBMI, AVX512_VBMI2, AVX512_VNNI, AVX512_BF16
-	x86 feature used: x86, x87, MMX, XMM, YMM, ZMM, FXSR, XSAVE, XSAVEOPT, XSAVEC
+      Properties: x86 ISA used: x86-64-baseline
+	x86 feature used: x86
diff --git a/gas/testsuite/gas/i386/property-2.s b/gas/testsuite/gas/i386/property-2.s
index 15281872bc9..5aaefe77e7f 100644
--- a/gas/testsuite/gas/i386/property-2.s
+++ b/gas/testsuite/gas/i386/property-2.s
@@ -1,32 +1,2 @@
 	.text
-	fsin
-	movq		%mm0, %mm1
-	fxsave		(%eax)
-	xsave		(%eax)
-	xsaveopt	(%eax)
-	xsavec		(%eax)
 	cmove		%eax,%ebx
-	movaps		%xmm0, %xmm1
-	movapd		%xmm0, %xmm1
-	mwait
-	psignb		%xmm0, %xmm1
-	blendvpd	%xmm0, %xmm1
-	pcmpgtq		%xmm0, %xmm1
-	vmovaps		%xmm0, %xmm1
-	vpabsb		%ymm0, %ymm1
-	vfmadd231ps	%ymm0, %ymm1, %ymm1
-	vmovaps		%zmm0, %zmm1
-	vplzcntd	%zmm0, %zmm1
-	vrsqrt28pd	%zmm0, %zmm1
-	vscatterpf0dpd	(%eax,%ymm1){%k1}
-	{evex} vpmovzxdq %xmm0, %xmm1
-	vandnpd		%zmm0, %zmm0, %zmm1
-	vpmaxuw		%zmm0, %zmm0, %zmm1
-	v4fnmaddss	(%ecx), %xmm4, %xmm1
-	vpopcntb	%zmm0, %zmm1
-	vp4dpwssd	(%ecx), %zmm0, %zmm1
-	vpmadd52luq	(%ecx), %zmm0, %zmm1
-	vpermt2b	(%ecx), %zmm0, %zmm1
-	vpcompressb	%zmm0, %zmm1
-	vpdpwssds	(%ecx), %zmm0, %zmm1
-	vcvtne2ps2bf16	(%ecx), %zmm0, %zmm1
diff --git a/gas/testsuite/gas/i386/property-3.d b/gas/testsuite/gas/i386/property-3.d
index 36d215584e5..b6aba35806c 100644
--- a/gas/testsuite/gas/i386/property-3.d
+++ b/gas/testsuite/gas/i386/property-3.d
@@ -5,5 +5,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: SSE
-	x86 feature used: x86, MMX, XMM
+      Properties: x86 ISA used: x86-64-v2
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/property-3.s b/gas/testsuite/gas/i386/property-3.s
index c42bdcbcdc4..4fd398bb474 100644
--- a/gas/testsuite/gas/i386/property-3.s
+++ b/gas/testsuite/gas/i386/property-3.s
@@ -1,2 +1,2 @@
 	.text
-	cvtpi2ps (%eax), %xmm0
+	addsubpd (%eax), %xmm0
diff --git a/gas/testsuite/gas/i386/property-4.d b/gas/testsuite/gas/i386/property-4.d
index 0fe6bc7db4e..c23625cd67f 100644
--- a/gas/testsuite/gas/i386/property-4.d
+++ b/gas/testsuite/gas/i386/property-4.d
@@ -5,5 +5,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: AVX
-	x86 feature used: x86, XMM, YMM
+      Properties: x86 ISA used: x86-64-v3
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/property-5.d b/gas/testsuite/gas/i386/property-5.d
index 16e71d658c4..ba7679d84ba 100644
--- a/gas/testsuite/gas/i386/property-5.d
+++ b/gas/testsuite/gas/i386/property-5.d
@@ -5,5 +5,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: AVX512F
-	x86 feature used: x86, XMM, YMM, ZMM
+      Properties: x86 ISA used: x86-64-v4
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/property-6.d b/gas/testsuite/gas/i386/property-6.d
index cf175c53576..d1a4ed6caaa 100644
--- a/gas/testsuite/gas/i386/property-6.d
+++ b/gas/testsuite/gas/i386/property-6.d
@@ -5,5 +5,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: AVX512F
-	x86 feature used: x86, XMM, YMM, ZMM
+      Properties: x86 ISA used: x86-64-v4
+	x86 feature used: x86, MASK
diff --git a/gas/testsuite/gas/i386/x86-64-property-1.d b/gas/testsuite/gas/i386/x86-64-property-1.d
index cfcb795855d..931c7d26477 100644
--- a/gas/testsuite/gas/i386/x86-64-property-1.d
+++ b/gas/testsuite/gas/i386/x86-64-property-1.d
@@ -6,4 +6,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
diff --git a/gas/testsuite/gas/i386/x86-64-property-10.d b/gas/testsuite/gas/i386/x86-64-property-10.d
index c401ca2faad..1e7748f3083 100644
--- a/gas/testsuite/gas/i386/x86-64-property-10.d
+++ b/gas/testsuite/gas/i386/x86-64-property-10.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-11.d b/gas/testsuite/gas/i386/x86-64-property-11.d
new file mode 100644
index 00000000000..d2402293acc
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-property-11.d
@@ -0,0 +1,10 @@
+#name: x86-64 property 11
+#source: property-11.s
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-v3
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-12.d b/gas/testsuite/gas/i386/x86-64-property-12.d
new file mode 100644
index 00000000000..ff12b6598ed
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-property-12.d
@@ -0,0 +1,10 @@
+#name: x86-64 property 12
+#source: property-12.s
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-v4
+	x86 feature used: x86, XMM, MASK
diff --git a/gas/testsuite/gas/i386/x86-64-property-13.d b/gas/testsuite/gas/i386/x86-64-property-13.d
new file mode 100644
index 00000000000..5ed609a0c2d
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-property-13.d
@@ -0,0 +1,10 @@
+#name: x86-64 property 13
+#source: property-13.s
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-baseline
+	x86 feature used: x86, XMM, YMM, ZMM, MASK
diff --git a/gas/testsuite/gas/i386/x86-64-property-14.d b/gas/testsuite/gas/i386/x86-64-property-14.d
new file mode 100644
index 00000000000..41503c310ba
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-property-14.d
@@ -0,0 +1,9 @@
+#name: x86-64 property 13
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-v2
+	x86 feature used: x86
diff --git a/gas/testsuite/gas/i386/x86-64-property-14.s b/gas/testsuite/gas/i386/x86-64-property-14.s
new file mode 100644
index 00000000000..1b81dae6e3a
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-property-14.s
@@ -0,0 +1,2 @@
+	.text
+	sahf
diff --git a/gas/testsuite/gas/i386/x86-64-property-2.d b/gas/testsuite/gas/i386/x86-64-property-2.d
index bde7e55b30d..d54dff96e10 100644
--- a/gas/testsuite/gas/i386/x86-64-property-2.d
+++ b/gas/testsuite/gas/i386/x86-64-property-2.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: CMOV, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, AVX, AVX2, FMA, AVX512F, AVX512CD, AVX512ER, AVX512PF, AVX512VL, AVX512DQ, AVX512BW, AVX512_4FMAPS, AVX512_4VNNIW, AVX512_BITALG, AVX512_IFMA, AVX512_VBMI, AVX512_VBMI2, AVX512_VNNI, AVX512_BF16
-	x86 feature used: x86, x87, MMX, XMM, YMM, ZMM, FXSR, XSAVE, XSAVEOPT, XSAVEC
+      Properties: x86 ISA used: x86-64-baseline
+	x86 feature used: x86
diff --git a/gas/testsuite/gas/i386/x86-64-property-3.d b/gas/testsuite/gas/i386/x86-64-property-3.d
index aa116e0fbc5..bc1e48303a3 100644
--- a/gas/testsuite/gas/i386/x86-64-property-3.d
+++ b/gas/testsuite/gas/i386/x86-64-property-3.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: SSE
-	x86 feature used: x86, MMX, XMM
+      Properties: x86 ISA used: x86-64-v2
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-4.d b/gas/testsuite/gas/i386/x86-64-property-4.d
index 4a489509d65..fd4bee055bb 100644
--- a/gas/testsuite/gas/i386/x86-64-property-4.d
+++ b/gas/testsuite/gas/i386/x86-64-property-4.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: AVX
-	x86 feature used: x86, XMM, YMM
+      Properties: x86 ISA used: x86-64-v3
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-5.d b/gas/testsuite/gas/i386/x86-64-property-5.d
index 590d8d585f4..73e24b918fc 100644
--- a/gas/testsuite/gas/i386/x86-64-property-5.d
+++ b/gas/testsuite/gas/i386/x86-64-property-5.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: AVX512F
-	x86 feature used: x86, XMM, YMM, ZMM
+      Properties: x86 ISA used: x86-64-v4
+	x86 feature used: x86, XMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-6.d b/gas/testsuite/gas/i386/x86-64-property-6.d
index 862d4c35360..330e6f646ba 100644
--- a/gas/testsuite/gas/i386/x86-64-property-6.d
+++ b/gas/testsuite/gas/i386/x86-64-property-6.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: AVX512F
-	x86 feature used: x86, XMM, YMM, ZMM
+      Properties: x86 ISA used: x86-64-v4
+	x86 feature used: x86, MASK
diff --git a/gas/testsuite/gas/i386/x86-64-property-7.d b/gas/testsuite/gas/i386/x86-64-property-7.d
index e938cc90da9..6fe6a366660 100644
--- a/gas/testsuite/gas/i386/x86-64-property-7.d
+++ b/gas/testsuite/gas/i386/x86-64-property-7.d
@@ -1,9 +1,9 @@
-#name: x86-64 property 4
+#name: x86-64 property 7
 #as: -mx86-used-note=yes --generate-missing-build-notes=no
 #readelf: -n
 
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86, TMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-8.d b/gas/testsuite/gas/i386/x86-64-property-8.d
index e938cc90da9..4b5908aeab2 100644
--- a/gas/testsuite/gas/i386/x86-64-property-8.d
+++ b/gas/testsuite/gas/i386/x86-64-property-8.d
@@ -1,9 +1,9 @@
-#name: x86-64 property 4
+#name: x86-64 property 8
 #as: -mx86-used-note=yes --generate-missing-build-notes=no
 #readelf: -n
 
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86, TMM
diff --git a/gas/testsuite/gas/i386/x86-64-property-9.d b/gas/testsuite/gas/i386/x86-64-property-9.d
index e938cc90da9..2472c6ea653 100644
--- a/gas/testsuite/gas/i386/x86-64-property-9.d
+++ b/gas/testsuite/gas/i386/x86-64-property-9.d
@@ -1,9 +1,9 @@
-#name: x86-64 property 4
+#name: x86-64 property 9
 #as: -mx86-used-note=yes --generate-missing-build-notes=no
 #readelf: -n
 
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
 	x86 feature used: x86, TMM
diff --git a/include/ChangeLog b/include/ChangeLog
index 12fd17b7eae..8fdf30f4a90 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,19 @@
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* elf/common.h (GNU_PROPERTY_X86_ISA_1_USED): Renamed to ...
+	(GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED): This.
+	(GNU_PROPERTY_X86_ISA_1_NEEDED): Renamed to ...
+	(GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED): This.
+	(GNU_PROPERTY_X86_ISA_1_XXX): Renamed to ...
+	(GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX): This.
+	(GNU_PROPERTY_X86_ISA_1_NEEDED): New.
+	(GNU_PROPERTY_X86_ISA_1_USED): Likewise.
+	(GNU_PROPERTY_X86_ISA_1_V2): Likewise.
+	(GNU_PROPERTY_X86_ISA_1_V3): Likewise.
+	(GNU_PROPERTY_X86_ISA_1_V4): Likewise.
+	(GNU_PROPERTY_X86_FEATURE_2_MASK): Likewise.
+
 2020-09-23  Mark Wielaard  <mark@klomp.org>
 
 	Sync with GCC
diff --git a/include/elf/common.h b/include/elf/common.h
index 571e21af29a..b3c30e0e2f7 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -805,44 +805,31 @@
   (GNU_PROPERTY_X86_UINT32_AND_LO + 0)
 
 #define GNU_PROPERTY_X86_ISA_1_NEEDED \
-  (GNU_PROPERTY_X86_UINT32_OR_LO + 0)
+  (GNU_PROPERTY_X86_UINT32_OR_LO + 2)
 #define GNU_PROPERTY_X86_FEATURE_2_NEEDED \
   (GNU_PROPERTY_X86_UINT32_OR_LO + 1)
 
 #define GNU_PROPERTY_X86_ISA_1_USED \
-  (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0)
+  (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 2)
 #define GNU_PROPERTY_X86_FEATURE_2_USED \
   (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1)
 
+/* Baseline: CMOV (cmov) CX8 (cmpxchg8b) FPU (fld), FXSR (fxsave),
+   SCE (syscall), MMX, SSE and SSE2.  */
+
+/* GNU_PROPERTY_X86_ISA_1_V2: Baseline, CMPXCHG16B (cmpxchg16b),
+   LAHF-SAHF (lahf), POPCNT (popcnt), SSE3, SSSE3, SSE4.1 and SSE4.2.  */
+#define GNU_PROPERTY_X86_ISA_1_V2		(1U << 0)
+/* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1,
+   BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE.  */
+#define GNU_PROPERTY_X86_ISA_1_V3		(1U << 1)
+/* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F,
+   AVX512BW, AVX512CD, AVX512DQ and AVX512VL.  */
+#define GNU_PROPERTY_X86_ISA_1_V4		(1U << 2)
+
 #define GNU_PROPERTY_X86_FEATURE_1_IBT		(1U << 0)
 #define GNU_PROPERTY_X86_FEATURE_1_SHSTK	(1U << 1)
 
-#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)
-#define GNU_PROPERTY_X86_ISA_1_AVX512_BF16	(1U << 24)
-
 #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)
@@ -854,6 +841,39 @@
 #define GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT	(1U << 8)
 #define GNU_PROPERTY_X86_FEATURE_2_XSAVEC	(1U << 9)
 #define GNU_PROPERTY_X86_FEATURE_2_TMM		(1U << 10)
+#define GNU_PROPERTY_X86_FEATURE_2_MASK		(1U << 11)
+
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED \
+  (GNU_PROPERTY_X86_UINT32_OR_LO + 0)
+
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED \
+  (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0)
+
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV		(1U << 0)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE		(1U << 1)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2		(1U << 2)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3		(1U << 3)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3		(1U << 4)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1		(1U << 5)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2		(1U << 6)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX		(1U << 7)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2		(1U << 8)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA		(1U << 9)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F		(1U << 10)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD	(1U << 11)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER	(1U << 12)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF	(1U << 13)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL	(1U << 14)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ	(1U << 15)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW	(1U << 16)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS	(1U << 17)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW	(1U << 18)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG	(1U << 19)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA	(1U << 20)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI	(1U << 21)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2	(1U << 22)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI	(1U << 23)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16	(1U << 24)
 
 /* AArch64 specific GNU PROPERTY.  */
 #define GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 738014eb9b6..205f6acb87c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,155 @@
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* NEWS: Mention -z x86-64-v[234].
+	* ld.texi: Document -z x86-64-v[234].
+	* emulparams/elf32_x86_64.sh: Use x86-64-level.sh.
+	* emulparams/elf_i386.sh: Likewise.
+	* emulparams/elf_x86_64.sh: Likewise.
+	* emulparams/x86-64-level.sh: New file.
+	* testsuite/ld-elf/x86-feature-1a.rd: Update.
+	* testsuite/ld-elf/x86-feature-1b.rd: Likewise.
+	* testsuite/ld-elf/x86-feature-1c.rd: Likewise.
+	* testsuite/ld-elf/x86-feature-1d.rd: Likewise.
+	* testsuite/ld-elf/x86-feature-1e.rd: Likewise.
+	* testsuite/ld-i386/pr23372c.d: Likewise.
+	* testsuite/ld-i386/pr23486c.d: Likewise.
+	* testsuite/ld-i386/pr23486d.d: Likewise.
+	* testsuite/ld-i386/pr24322a.d: Likewise.
+	* testsuite/ld-i386/pr24322b.d: Likewise.
+	* testsuite/ld-i386/property-1a.r: Likewise.
+	* testsuite/ld-i386/property-2a.r: Likewise.
+	* testsuite/ld-i386/property-3.r: Likewise.
+	* testsuite/ld-i386/property-3a.r: Likewise.
+	* testsuite/ld-i386/property-4.r: Likewise.
+	* testsuite/ld-i386/property-4a.r: Likewise.
+	* testsuite/ld-i386/property-5.r: Likewise.
+	* testsuite/ld-i386/property-5a.r: Likewise.
+	* testsuite/ld-i386/property-7a.r: Likewise.
+	* testsuite/ld-i386/property-x86-3.d: Likewise.
+	* testsuite/ld-i386/property-x86-4a.d: Likewise.
+	* testsuite/ld-i386/property-x86-5.d: Likewise.
+	* testsuite/ld-i386/property-x86-cet1.d: Likewise.
+	* testsuite/ld-i386/property-x86-cet2a.d: Likewise.
+	* testsuite/ld-i386/property-x86-cet5a.d: Likewise.
+	* testsuite/ld-i386/property-x86-cet5b.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt1a.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt1b.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt2.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt4.d: Likewise.
+	* testsuite/ld-i386/property-x86-ibt5.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk1a.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk1b.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk2.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk4.d: Likewise.
+	* testsuite/ld-i386/property-x86-shstk5.d: Likewise.
+	* testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr23372c.d: Likewise.
+	* testsuite/ld-x86-64/pr23486c.d: Likewise.
+	* testsuite/ld-x86-64/pr23486d-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr23486d.d: Likewise.
+	* testsuite/ld-x86-64/pr24322a-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr24322a.d: Likewise.
+	* testsuite/ld-x86-64/pr24322b-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr24322b.d: Likewise.
+	* testsuite/ld-x86-64/pr24458a-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr24458a.d: Likewise.
+	* testsuite/ld-x86-64/pr24458b-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr24458b.d: Likewise.
+	* testsuite/ld-x86-64/pr24458c-x32.d: Likewise.
+	* testsuite/ld-x86-64/pr24458c.d: Likewise.
+	* testsuite/ld-x86-64/property-1a.r: Likewise.
+	* testsuite/ld-x86-64/property-2a.r: Likewise.
+	* testsuite/ld-x86-64/property-3.r: Likewise.
+	* testsuite/ld-x86-64/property-3a.r: Likewise.
+	* testsuite/ld-x86-64/property-4.r: Likewise.
+	* testsuite/ld-x86-64/property-4a.r: Likewise.
+	* testsuite/ld-x86-64/property-5.r: Likewise.
+	* testsuite/ld-x86-64/property-5a.r: Likewise.
+	* testsuite/ld-x86-64/property-7a.r: Likewise.
+	* testsuite/ld-x86-64/property-x86-3-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-3.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-4a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-5-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-5.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet1.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet2a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet5a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-cet5b.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt1b-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt1b.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt2-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt2.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt4-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt4.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt5-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-ibt5.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk2.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk4-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk4.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-shstk5.d: Likewise.
+	* testsuite/ld-i386/i386.exp: Run property-x86-6,
+	property-x86-isa1, property-x86-isa2 and property-x86-isa3.
+	* testsuite/ld-i386/property-x86-1.S: Updated to the current
+	GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
+	values.
+	* testsuite/ld-i386/property-x86-2.S: Likewise.
+	* testsuite/ld-i386/property-x86-3.s: Likewise.
+	* testsuite/ld-x86-64/pr23372d.s: Likewise.
+	* testsuite/ld-x86-64/pr23372e.s: Likewise.
+	* testsuite/ld-x86-64/pr23372f.s: Likewise.
+	* testsuite/ld-x86-64/pr23486c.s: Likewise.
+	* testsuite/ld-x86-64/pr23486d.s: Likewise.
+	* testsuite/ld-x86-64/property-x86-1.S: Likewise.
+	* testsuite/ld-x86-64/property-x86-2.S: Likewise.
+	* testsuite/ld-x86-64/property-x86-3.s: Likewise.
+	* testsuite/ld-x86-64/property-x86-5a.s: Likewise.
+	* testsuite/ld-x86-64/property-x86-5b.s: Likewise.
+	* testsuite/ld-i386/property-x86-6.d: New file.
+	* testsuite/ld-i386/property-x86-isa1.d: Likewise.
+	* testsuite/ld-i386/property-x86-isa2.d: Likewise.
+	* testsuite/ld-i386/property-x86-isa3.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-6-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-6.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-6.s: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa1-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa1.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa1.s: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa2-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa2.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa3-x32.d: Likewise.
+	* testsuite/ld-x86-64/property-x86-isa3.d: Likewise.
+	* testsuite/ld-x86-64/simple.s: Likewise.
+	* ld/testsuite/ld-x86-64/x86-64.exp: Run property-x86-6,
+	property-x86-6-x32, property-x86-isa1, property-x86-isa1-x32,
+	property-x86-isa2, property-x86-isa2-x32, property-x86-isa3-x32
+	and property-x86-isa3.
+
 2020-10-06  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* testsuite/ld-i386/property-3.r: Updated for Fedora binary
diff --git a/ld/NEWS b/ld/NEWS
index e4ae43b257d..2f20a5fbcd0 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,8 @@
 -*- text -*-
 
+* Add -z x86-64-v[234] to the x86 ELF linker to mark x86-64-v[234] ISA
+  level as needed.
+
 * Add -z unique-symbol to avoid duplicated local symbol names.
 
 * The creation of PE format DLLs now defaults to using a more secure set of DLL
diff --git a/ld/emulparams/elf32_x86_64.sh b/ld/emulparams/elf32_x86_64.sh
index 1f672c6e426..0d7c7145a60 100644
--- a/ld/emulparams/elf32_x86_64.sh
+++ b/ld/emulparams/elf32_x86_64.sh
@@ -4,6 +4,7 @@ source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
 source_sh ${srcdir}/emulparams/reloc_overflow.sh
 source_sh ${srcdir}/emulparams/call_nop.sh
 source_sh ${srcdir}/emulparams/cet.sh
+source_sh ${srcdir}/emulparams/x86-64-level.sh
 source_sh ${srcdir}/emulparams/static.sh
 SCRIPT_NAME=elf
 ELFSIZE=32
diff --git a/ld/emulparams/elf_i386.sh b/ld/emulparams/elf_i386.sh
index c98d5e6600e..741633fa07a 100644
--- a/ld/emulparams/elf_i386.sh
+++ b/ld/emulparams/elf_i386.sh
@@ -3,6 +3,7 @@ source_sh ${srcdir}/emulparams/extern_protected_data.sh
 source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
 source_sh ${srcdir}/emulparams/call_nop.sh
 source_sh ${srcdir}/emulparams/cet.sh
+source_sh ${srcdir}/emulparams/x86-64-level.sh
 source_sh ${srcdir}/emulparams/static.sh
 SCRIPT_NAME=elf
 OUTPUT_FORMAT="elf32-i386"
diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh
index be98082982f..5996055e9ff 100644
--- a/ld/emulparams/elf_x86_64.sh
+++ b/ld/emulparams/elf_x86_64.sh
@@ -4,6 +4,7 @@ source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
 source_sh ${srcdir}/emulparams/reloc_overflow.sh
 source_sh ${srcdir}/emulparams/call_nop.sh
 source_sh ${srcdir}/emulparams/cet.sh
+source_sh ${srcdir}/emulparams/x86-64-level.sh
 source_sh ${srcdir}/emulparams/static.sh
 SCRIPT_NAME=elf
 ELFSIZE=64
diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh
new file mode 100644
index 00000000000..efa75cad9ff
--- /dev/null
+++ b/ld/emulparams/x86-64-level.sh
@@ -0,0 +1,18 @@
+PARSE_AND_LIST_OPTIONS_X86_64_LEVEL='
+  fprintf (file, _("\
+  -z x86-64-v[234]            Mark x86-64-v[234] ISA level as needed\n"));
+'
+PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL='
+      else if (strncmp (optarg, "x86-64-v", 8) == 0)
+	{
+	  char *end;
+	  unsigned int level = strtoul (optarg + 8 , &end, 10);
+	  if (*end != '\0' || level < 2 || level > 4)
+	    einfo (_("%F%P: invalid x86-64 ISA level: %s\n"),
+		   optarg);
+	    params.isa_level = level;
+	}
+'
+
+PARSE_AND_LIST_OPTIONS="$PARSE_AND_LIST_OPTIONS $PARSE_AND_LIST_OPTIONS_X86_64_LEVEL"
+PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL"
diff --git a/ld/ld.texi b/ld/ld.texi
index ee592df6c24..66bede283e8 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -1419,6 +1419,15 @@ Do not report unresolved symbol references from regular object files,
 either when creating an executable, or when creating a shared library.
 This option is the inverse of @samp{-z defs}.
 
+@item x86-64-v2
+@item x86-64-v3
+@itemx x86-64-v4
+Specify the x86-64 ISA level needed in .note.gnu.property section.
+@option{x86-64-v2} generates @code{GNU_PROPERTY_X86_ISA_1_V2}.
+@option{x86-64-v3} generates @code{GNU_PROPERTY_X86_ISA_1_V3}.
+@option{x86-64-v4} generates @code{GNU_PROPERTY_X86_ISA_1_V4}.
+Supported for Linux/i386 and Linux/x86_64.
+
 @end table
 
 Other keywords are ignored for Solaris compatibility.
diff --git a/ld/testsuite/ld-elf/x86-feature-1a.rd b/ld/testsuite/ld-elf/x86-feature-1a.rd
index db7718a388c..fda3063b78c 100644
--- a/ld/testsuite/ld-elf/x86-feature-1a.rd
+++ b/ld/testsuite/ld-elf/x86-feature-1a.rd
@@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-elf/x86-feature-1b.rd b/ld/testsuite/ld-elf/x86-feature-1b.rd
index 81a8d8d49ad..b0d6f64562f 100644
--- a/ld/testsuite/ld-elf/x86-feature-1b.rd
+++ b/ld/testsuite/ld-elf/x86-feature-1b.rd
@@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-elf/x86-feature-1c.rd b/ld/testsuite/ld-elf/x86-feature-1c.rd
index 81a8d8d49ad..b0d6f64562f 100644
--- a/ld/testsuite/ld-elf/x86-feature-1c.rd
+++ b/ld/testsuite/ld-elf/x86-feature-1c.rd
@@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-elf/x86-feature-1d.rd b/ld/testsuite/ld-elf/x86-feature-1d.rd
index 3dea01266e5..d5c3debd019 100644
--- a/ld/testsuite/ld-elf/x86-feature-1d.rd
+++ b/ld/testsuite/ld-elf/x86-feature-1d.rd
@@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: <None>
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-elf/x86-feature-1e.rd b/ld/testsuite/ld-elf/x86-feature-1e.rd
index 8ad7d43de61..eb82ef2d6cf 100644
--- a/ld/testsuite/ld-elf/x86-feature-1e.rd
+++ b/ld/testsuite/ld-elf/x86-feature-1e.rd
@@ -2,5 +2,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index cd7b4deebde..0b1538ed81d 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -422,6 +422,7 @@ run_dump_test "property-x86-3"
 run_dump_test "property-x86-4a"
 run_dump_test "property-x86-4b"
 run_dump_test "property-x86-5"
+run_dump_test "property-x86-6"
 run_dump_test "property-x86-ibt1a"
 run_dump_test "property-x86-ibt1b"
 run_dump_test "property-x86-ibt2"
@@ -475,6 +476,9 @@ run_dump_test "pr26263"
 run_dump_test "pr26711-1"
 run_dump_test "pr26711-2"
 run_dump_test "pr26711-3"
+run_dump_test "property-x86-isa1"
+run_dump_test "property-x86-isa2"
+run_dump_test "property-x86-isa3"
 
 if { !([istarget "i?86-*-linux*"]
        || [istarget "i?86-*-gnu*"]
diff --git a/ld/testsuite/ld-i386/pr23372c.d b/ld/testsuite/ld-i386/pr23372c.d
index 59fdc239232..fffd680f069 100644
--- a/ld/testsuite/ld-i386/pr23372c.d
+++ b/ld/testsuite/ld-i386/pr23372c.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/pr23486c.d b/ld/testsuite/ld-i386/pr23486c.d
index 30d22596ae0..92765f5ddcf 100644
--- a/ld/testsuite/ld-i386/pr23486c.d
+++ b/ld/testsuite/ld-i386/pr23486c.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3
diff --git a/ld/testsuite/ld-i386/pr23486d.d b/ld/testsuite/ld-i386/pr23486d.d
index 025b8e0541d..c673e8e0d74 100644
--- a/ld/testsuite/ld-i386/pr23486d.d
+++ b/ld/testsuite/ld-i386/pr23486d.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3
diff --git a/ld/testsuite/ld-i386/pr24322a.d b/ld/testsuite/ld-i386/pr24322a.d
index a77a85c858d..a273e687f92 100644
--- a/ld/testsuite/ld-i386/pr24322a.d
+++ b/ld/testsuite/ld-i386/pr24322a.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/pr24322b.d b/ld/testsuite/ld-i386/pr24322b.d
index 62e8246c398..244d8c3df45 100644
--- a/ld/testsuite/ld-i386/pr24322b.d
+++ b/ld/testsuite/ld-i386/pr24322b.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-1a.r b/ld/testsuite/ld-i386/property-1a.r
index 85615f1bd24..cbdd6477a45 100644
--- a/ld/testsuite/ld-i386/property-1a.r
+++ b/ld/testsuite/ld-i386/property-1a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
 
 #pass
diff --git a/ld/testsuite/ld-i386/property-2a.r b/ld/testsuite/ld-i386/property-2a.r
index a85ef0e3696..51bfde81633 100644
--- a/ld/testsuite/ld-i386/property-2a.r
+++ b/ld/testsuite/ld-i386/property-2a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
 
 #pass
diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
index e95d47ae8d6..3578823f93e 100644
--- a/ld/testsuite/ld-i386/property-3.r
+++ b/ld/testsuite/ld-i386/property-3.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 #...
-	x86 ISA needed: CMOV, SSE
+	x86 ISA needed: x86-64-v2, x86-64-v3
 #pass
diff --git a/ld/testsuite/ld-i386/property-3a.r b/ld/testsuite/ld-i386/property-3a.r
index 2201c9860ec..89cc8fa76bc 100644
--- a/ld/testsuite/ld-i386/property-3a.r
+++ b/ld/testsuite/ld-i386/property-3a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
-	x86 ISA needed: CMOV, SSE
-	x86 ISA used: SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
index a4b7bb71adf..a024b2a60ad 100644
--- a/ld/testsuite/ld-i386/property-4.r
+++ b/ld/testsuite/ld-i386/property-4.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 #...
-	x86 ISA needed: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-i386/property-4a.r b/ld/testsuite/ld-i386/property-4a.r
index 8448cc70acf..ff61875ce3e 100644
--- a/ld/testsuite/ld-i386/property-4a.r
+++ b/ld/testsuite/ld-i386/property-4a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
-	x86 ISA needed: CMOV, SSE, SSE3
-	x86 ISA used: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
index 5ff95648c29..eb24e3ad270 100644
--- a/ld/testsuite/ld-i386/property-5.r
+++ b/ld/testsuite/ld-i386/property-5.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x900000
 #...
-	x86 ISA needed: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-i386/property-5a.r b/ld/testsuite/ld-i386/property-5a.r
index 9388a07b7b2..c99af9e9413 100644
--- a/ld/testsuite/ld-i386/property-5a.r
+++ b/ld/testsuite/ld-i386/property-5a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x900000
-	x86 ISA needed: CMOV, SSE, SSE3
-	x86 ISA used: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-i386/property-7a.r b/ld/testsuite/ld-i386/property-7a.r
index 1cce5d94742..c97fc72524e 100644
--- a/ld/testsuite/ld-i386/property-7a.r
+++ b/ld/testsuite/ld-i386/property-7a.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 	no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-1.S b/ld/testsuite/ld-i386/property-x86-1.S
index f0b8fc0ce5e..cb0a2cf1117 100644
--- a/ld/testsuite/ld-i386/property-x86-1.S
+++ b/ld/testsuite/ld-i386/property-x86-1.S
@@ -16,14 +16,14 @@
 5:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
 5:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x3
diff --git a/ld/testsuite/ld-i386/property-x86-2.S b/ld/testsuite/ld-i386/property-x86-2.S
index 39876811cbe..01c755f59d6 100644
--- a/ld/testsuite/ld-i386/property-x86-2.S
+++ b/ld/testsuite/ld-i386/property-x86-2.S
@@ -9,14 +9,14 @@
 1:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x3
 5:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
diff --git a/ld/testsuite/ld-i386/property-x86-3.d b/ld/testsuite/ld-i386/property-x86-3.d
index 8b3ddb53db5..059388dfca0 100644
--- a/ld/testsuite/ld-i386/property-x86-3.d
+++ b/ld/testsuite/ld-i386/property-x86-3.d
@@ -5,6 +5,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
-	x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
+      Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
diff --git a/ld/testsuite/ld-i386/property-x86-3.s b/ld/testsuite/ld-i386/property-x86-3.s
index 7e5924f829b..f137b71bc62 100644
--- a/ld/testsuite/ld-i386/property-x86-3.s
+++ b/ld/testsuite/ld-i386/property-x86-3.s
@@ -9,14 +9,14 @@
 1:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x3
 5:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
@@ -35,14 +35,14 @@
 1:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x30
 5:
 	.p2align 2
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa0
diff --git a/ld/testsuite/ld-i386/property-x86-4a.d b/ld/testsuite/ld-i386/property-x86-4a.d
index e28562aa7dd..3006627abe9 100644
--- a/ld/testsuite/ld-i386/property-x86-4a.d
+++ b/ld/testsuite/ld-i386/property-x86-4a.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-5.d b/ld/testsuite/ld-i386/property-x86-5.d
index dc9b67c7088..71faa63eb2c 100644
--- a/ld/testsuite/ld-i386/property-x86-5.d
+++ b/ld/testsuite/ld-i386/property-x86-5.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV
-	x86 ISA used: <None>
+      Properties: x86 ISA needed: x86-64-v2
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-6.d b/ld/testsuite/ld-i386/property-x86-6.d
new file mode 100644
index 00000000000..95c64b2913b
--- /dev/null
+++ b/ld/testsuite/ld-i386/property-x86-6.d
@@ -0,0 +1,10 @@
+#source: ../ld-x86-64/property-x86-6.s
+#as: --32 -mx86-used-note=no
+#ld: -shared -m elf_i386
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
+	x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-i386/property-x86-cet1.d b/ld/testsuite/ld-i386/property-x86-cet1.d
index f2cf7a6a727..fbce0bbaecc 100644
--- a/ld/testsuite/ld-i386/property-x86-cet1.d
+++ b/ld/testsuite/ld-i386/property-x86-cet1.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-cet2a.d b/ld/testsuite/ld-i386/property-x86-cet2a.d
index 93b871ea134..655762deed1 100644
--- a/ld/testsuite/ld-i386/property-x86-cet2a.d
+++ b/ld/testsuite/ld-i386/property-x86-cet2a.d
@@ -10,6 +10,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
-	x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
+      Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
diff --git a/ld/testsuite/ld-i386/property-x86-cet5a.d b/ld/testsuite/ld-i386/property-x86-cet5a.d
index 412f4dcccec..bd7e2edfaa6 100644
--- a/ld/testsuite/ld-i386/property-x86-cet5a.d
+++ b/ld/testsuite/ld-i386/property-x86-cet5a.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-cet5b.d b/ld/testsuite/ld-i386/property-x86-cet5b.d
index 868b0030b8a..0b47267e16b 100644
--- a/ld/testsuite/ld-i386/property-x86-cet5b.d
+++ b/ld/testsuite/ld-i386/property-x86-cet5b.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-ibt1a.d b/ld/testsuite/ld-i386/property-x86-ibt1a.d
index 989b99c397a..1fee1ae2d30 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt1a.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt1a.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-ibt1b.d b/ld/testsuite/ld-i386/property-x86-ibt1b.d
index 1aa80cb2ba1..adb00d72ea7 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt1b.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt1b.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-ibt2.d b/ld/testsuite/ld-i386/property-x86-ibt2.d
index bd47f95d486..68aa0feebcf 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt2.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt2.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
index 7e6079c8922..290bcac1c84 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
-	x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
+      Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
index 861fec96197..0ac9e7ff000 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
-	x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
+      Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
diff --git a/ld/testsuite/ld-i386/property-x86-ibt4.d b/ld/testsuite/ld-i386/property-x86-ibt4.d
index e271cc944a0..0e613e23bf1 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt4.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt4.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-ibt5.d b/ld/testsuite/ld-i386/property-x86-ibt5.d
index 22453690883..23da096b852 100644
--- a/ld/testsuite/ld-i386/property-x86-ibt5.d
+++ b/ld/testsuite/ld-i386/property-x86-ibt5.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-isa1.d b/ld/testsuite/ld-i386/property-x86-isa1.d
new file mode 100644
index 00000000000..22ac02b5c43
--- /dev/null
+++ b/ld/testsuite/ld-i386/property-x86-isa1.d
@@ -0,0 +1,11 @@
+#source: ../ld-x86-64/property-x86-isa1.s
+#source: ../ld-x86-64/simple.s
+#as: --32 -mx86-used-note=no
+#ld: -m elf_i386 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v4
+	<procesor-specific type 0xc0009000 data: 30 00 00 00 >
diff --git a/ld/testsuite/ld-i386/property-x86-isa2.d b/ld/testsuite/ld-i386/property-x86-isa2.d
new file mode 100644
index 00000000000..1dc83a77a73
--- /dev/null
+++ b/ld/testsuite/ld-i386/property-x86-isa2.d
@@ -0,0 +1,9 @@
+#source: ../ld-x86-64/simple.s
+#as: --32 -mx86-used-note=no
+#ld: -m elf_i386 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
diff --git a/ld/testsuite/ld-i386/property-x86-isa3.d b/ld/testsuite/ld-i386/property-x86-isa3.d
new file mode 100644
index 00000000000..60b20d2be2f
--- /dev/null
+++ b/ld/testsuite/ld-i386/property-x86-isa3.d
@@ -0,0 +1,9 @@
+#source: ../ld-x86-64/simple.s
+#as: --32 -mx86-used-note=no
+#ld: -r -m elf_i386 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
diff --git a/ld/testsuite/ld-i386/property-x86-shstk1a.d b/ld/testsuite/ld-i386/property-x86-shstk1a.d
index 93586d4bbc8..ab774dc6a52 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk1a.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk1a.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-shstk1b.d b/ld/testsuite/ld-i386/property-x86-shstk1b.d
index 3916bacf376..97517c32fd4 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk1b.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk1b.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-shstk2.d b/ld/testsuite/ld-i386/property-x86-shstk2.d
index 3c24ee57a02..97003022289 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk2.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk2.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
index 9d2ce559ea8..1b6da4f4302 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
-	x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
+      Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
index 86f4395bccc..98a15629106 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: SSE, SSE3, SSE4_1, AVX
-	x86 ISA used: CMOV, SSE, SSSE3, SSE4_1
+      Properties: x86 ISA needed: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
diff --git a/ld/testsuite/ld-i386/property-x86-shstk4.d b/ld/testsuite/ld-i386/property-x86-shstk4.d
index 84dda933dcc..fa4c88c148f 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk4.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk4.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-i386/property-x86-shstk5.d b/ld/testsuite/ld-i386/property-x86-shstk5.d
index 613daa43830..64a35398aab 100644
--- a/ld/testsuite/ld-i386/property-x86-shstk5.d
+++ b/ld/testsuite/ld-i386/property-x86-shstk5.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr23372c-x32.d b/ld/testsuite/ld-x86-64/pr23372c-x32.d
index e01a7666fc3..5698ec268b5 100644
--- a/ld/testsuite/ld-x86-64/pr23372c-x32.d
+++ b/ld/testsuite/ld-x86-64/pr23372c-x32.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr23372c.d b/ld/testsuite/ld-x86-64/pr23372c.d
index 359cc09a0b3..e1281b2e1cd 100644
--- a/ld/testsuite/ld-x86-64/pr23372c.d
+++ b/ld/testsuite/ld-x86-64/pr23372c.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
+      Properties: x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr23372d.s b/ld/testsuite/ld-x86-64/pr23372d.s
index cec05cdba8c..3875c94a540 100644
--- a/ld/testsuite/ld-x86-64/pr23372d.s
+++ b/ld/testsuite/ld-x86-64/pr23372d.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 3f - 2f		/* pr_datasz.  */
 2:
 	.long 0x0
diff --git a/ld/testsuite/ld-x86-64/pr23372e.s b/ld/testsuite/ld-x86-64/pr23372e.s
index cec05cdba8c..3875c94a540 100644
--- a/ld/testsuite/ld-x86-64/pr23372e.s
+++ b/ld/testsuite/ld-x86-64/pr23372e.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 3f - 2f		/* pr_datasz.  */
 2:
 	.long 0x0
diff --git a/ld/testsuite/ld-x86-64/pr23372f.s b/ld/testsuite/ld-x86-64/pr23372f.s
index 57797c8561c..6d79c14c13b 100644
--- a/ld/testsuite/ld-x86-64/pr23372f.s
+++ b/ld/testsuite/ld-x86-64/pr23372f.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 3f - 2f		/* pr_datasz.  */
 2:
 	.long 0x0
diff --git a/ld/testsuite/ld-x86-64/pr23486c-x32.d b/ld/testsuite/ld-x86-64/pr23486c-x32.d
index 7a5e7325c2e..11215f3d036 100644
--- a/ld/testsuite/ld-x86-64/pr23486c-x32.d
+++ b/ld/testsuite/ld-x86-64/pr23486c-x32.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3
diff --git a/ld/testsuite/ld-x86-64/pr23486c.d b/ld/testsuite/ld-x86-64/pr23486c.d
index cda1f1c4619..38c54cad8a3 100644
--- a/ld/testsuite/ld-x86-64/pr23486c.d
+++ b/ld/testsuite/ld-x86-64/pr23486c.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000010	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3
diff --git a/ld/testsuite/ld-x86-64/pr23486c.s b/ld/testsuite/ld-x86-64/pr23486c.s
index 16bb94d9597..7860eac3aef 100644
--- a/ld/testsuite/ld-x86-64/pr23486c.s
+++ b/ld/testsuite/ld-x86-64/pr23486c.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 3f - 2f		/* pr_datasz.  */
 2:
 	.long 0xa
diff --git a/ld/testsuite/ld-x86-64/pr23486d-x32.d b/ld/testsuite/ld-x86-64/pr23486d-x32.d
index 41da74c6c57..74eb4c0969a 100644
--- a/ld/testsuite/ld-x86-64/pr23486d-x32.d
+++ b/ld/testsuite/ld-x86-64/pr23486d-x32.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x0000000c	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3
diff --git a/ld/testsuite/ld-x86-64/pr23486d.d b/ld/testsuite/ld-x86-64/pr23486d.d
index 0ca7c505a1c..4f335238c3d 100644
--- a/ld/testsuite/ld-x86-64/pr23486d.d
+++ b/ld/testsuite/ld-x86-64/pr23486d.d
@@ -7,4 +7,4 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000010	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3
diff --git a/ld/testsuite/ld-x86-64/pr23486d.s b/ld/testsuite/ld-x86-64/pr23486d.s
index 88f9c112c1a..c39910596ae 100644
--- a/ld/testsuite/ld-x86-64/pr23486d.s
+++ b/ld/testsuite/ld-x86-64/pr23486d.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 3f - 2f		/* pr_datasz.  */
 2:
 	.long 0x3
diff --git a/ld/testsuite/ld-x86-64/pr24322a-x32.d b/ld/testsuite/ld-x86-64/pr24322a-x32.d
index f18678d69b6..8009f910974 100644
--- a/ld/testsuite/ld-x86-64/pr24322a-x32.d
+++ b/ld/testsuite/ld-x86-64/pr24322a-x32.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24322a.d b/ld/testsuite/ld-x86-64/pr24322a.d
index a27de4a11a5..6ddb7a7163d 100644
--- a/ld/testsuite/ld-x86-64/pr24322a.d
+++ b/ld/testsuite/ld-x86-64/pr24322a.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24322b-x32.d b/ld/testsuite/ld-x86-64/pr24322b-x32.d
index 4e19b8d3e4e..76ebd1cfa37 100644
--- a/ld/testsuite/ld-x86-64/pr24322b-x32.d
+++ b/ld/testsuite/ld-x86-64/pr24322b-x32.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24322b.d b/ld/testsuite/ld-x86-64/pr24322b.d
index f56e2119146..6ee01464434 100644
--- a/ld/testsuite/ld-x86-64/pr24322b.d
+++ b/ld/testsuite/ld-x86-64/pr24322b.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24458a-x32.d b/ld/testsuite/ld-x86-64/pr24458a-x32.d
index 9b8dc3076c4..9909f1760d6 100644
--- a/ld/testsuite/ld-x86-64/pr24458a-x32.d
+++ b/ld/testsuite/ld-x86-64/pr24458a-x32.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24458a.d b/ld/testsuite/ld-x86-64/pr24458a.d
index 8319a588295..d0fbc3390fb 100644
--- a/ld/testsuite/ld-x86-64/pr24458a.d
+++ b/ld/testsuite/ld-x86-64/pr24458a.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24458b-x32.d b/ld/testsuite/ld-x86-64/pr24458b-x32.d
index 263c7979e7e..9f80ed20d99 100644
--- a/ld/testsuite/ld-x86-64/pr24458b-x32.d
+++ b/ld/testsuite/ld-x86-64/pr24458b-x32.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24458b.d b/ld/testsuite/ld-x86-64/pr24458b.d
index 3614d67589b..ee1894894d1 100644
--- a/ld/testsuite/ld-x86-64/pr24458b.d
+++ b/ld/testsuite/ld-x86-64/pr24458b.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24458c-x32.d b/ld/testsuite/ld-x86-64/pr24458c-x32.d
index 767038ae8b9..7107c3f9892 100644
--- a/ld/testsuite/ld-x86-64/pr24458c-x32.d
+++ b/ld/testsuite/ld-x86-64/pr24458c-x32.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/pr24458c.d b/ld/testsuite/ld-x86-64/pr24458c.d
index bc3758fb564..690088a532f 100644
--- a/ld/testsuite/ld-x86-64/pr24458c.d
+++ b/ld/testsuite/ld-x86-64/pr24458c.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-1a.r b/ld/testsuite/ld-x86-64/property-1a.r
index 85615f1bd24..cbdd6477a45 100644
--- a/ld/testsuite/ld-x86-64/property-1a.r
+++ b/ld/testsuite/ld-x86-64/property-1a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
 
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-2a.r b/ld/testsuite/ld-x86-64/property-2a.r
index a85ef0e3696..51bfde81633 100644
--- a/ld/testsuite/ld-x86-64/property-2a.r
+++ b/ld/testsuite/ld-x86-64/property-2a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
 
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
index e95d47ae8d6..3578823f93e 100644
--- a/ld/testsuite/ld-x86-64/property-3.r
+++ b/ld/testsuite/ld-x86-64/property-3.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 #...
-	x86 ISA needed: CMOV, SSE
+	x86 ISA needed: x86-64-v2, x86-64-v3
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-3a.r b/ld/testsuite/ld-x86-64/property-3a.r
index 2201c9860ec..89cc8fa76bc 100644
--- a/ld/testsuite/ld-x86-64/property-3a.r
+++ b/ld/testsuite/ld-x86-64/property-3a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
-	x86 ISA needed: CMOV, SSE
-	x86 ISA used: SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
index a4b7bb71adf..a024b2a60ad 100644
--- a/ld/testsuite/ld-x86-64/property-4.r
+++ b/ld/testsuite/ld-x86-64/property-4.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 #...
-	x86 ISA needed: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-4a.r b/ld/testsuite/ld-x86-64/property-4a.r
index 8448cc70acf..ff61875ce3e 100644
--- a/ld/testsuite/ld-x86-64/property-4a.r
+++ b/ld/testsuite/ld-x86-64/property-4a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
-	x86 ISA needed: CMOV, SSE, SSE3
-	x86 ISA used: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
index 5ff95648c29..eb24e3ad270 100644
--- a/ld/testsuite/ld-x86-64/property-5.r
+++ b/ld/testsuite/ld-x86-64/property-5.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x900000
 #...
-	x86 ISA needed: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-5a.r b/ld/testsuite/ld-x86-64/property-5a.r
index 9388a07b7b2..c99af9e9413 100644
--- a/ld/testsuite/ld-x86-64/property-5a.r
+++ b/ld/testsuite/ld-x86-64/property-5a.r
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x900000
-	x86 ISA needed: CMOV, SSE, SSE3
-	x86 ISA used: CMOV, SSE, SSE3
+	x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 8>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v2, x86-64-v3, <unknown: 8>
 #pass
diff --git a/ld/testsuite/ld-x86-64/property-7a.r b/ld/testsuite/ld-x86-64/property-7a.r
index 1cce5d94742..c97fc72524e 100644
--- a/ld/testsuite/ld-x86-64/property-7a.r
+++ b/ld/testsuite/ld-x86-64/property-7a.r
@@ -4,5 +4,5 @@ Displaying notes found in: .note.gnu.property
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
       Properties: stack size: 0x800000
 	no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-1.S b/ld/testsuite/ld-x86-64/property-x86-1.S
index c950b9db193..b669e728a51 100644
--- a/ld/testsuite/ld-x86-64/property-x86-1.S
+++ b/ld/testsuite/ld-x86-64/property-x86-1.S
@@ -21,14 +21,14 @@
 5:
 	.p2align ALIGN
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
 5:
 	.p2align ALIGN
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x3
diff --git a/ld/testsuite/ld-x86-64/property-x86-2.S b/ld/testsuite/ld-x86-64/property-x86-2.S
index 72056be46eb..b108b1704de 100644
--- a/ld/testsuite/ld-x86-64/property-x86-2.S
+++ b/ld/testsuite/ld-x86-64/property-x86-2.S
@@ -14,14 +14,14 @@
 1:
 	.p2align ALIGN
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x3
 5:
 	.p2align ALIGN
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
diff --git a/ld/testsuite/ld-x86-64/property-x86-3-x32.d b/ld/testsuite/ld-x86-64/property-x86-3-x32.d
index ef70a64aff0..5125a7aba15 100644
--- a/ld/testsuite/ld-x86-64/property-x86-3-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-3-x32.d
@@ -6,6 +6,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-3.d b/ld/testsuite/ld-x86-64/property-x86-3.d
index 1d191bead97..974230875c0 100644
--- a/ld/testsuite/ld-x86-64/property-x86-3.d
+++ b/ld/testsuite/ld-x86-64/property-x86-3.d
@@ -5,6 +5,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-3.s b/ld/testsuite/ld-x86-64/property-x86-3.s
index 8c9d6dac847..cce71da4ef8 100644
--- a/ld/testsuite/ld-x86-64/property-x86-3.s
+++ b/ld/testsuite/ld-x86-64/property-x86-3.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa
@@ -28,7 +28,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x3
@@ -59,7 +59,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0xa0
@@ -70,7 +70,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x30
diff --git a/ld/testsuite/ld-x86-64/property-x86-4a-x32.d b/ld/testsuite/ld-x86-64/property-x86-4a-x32.d
index 07c508186bd..cf5046f6e02 100644
--- a/ld/testsuite/ld-x86-64/property-x86-4a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-4a-x32.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-4a.d b/ld/testsuite/ld-x86-64/property-x86-4a.d
index 6ae427e139f..7c2bb782d89 100644
--- a/ld/testsuite/ld-x86-64/property-x86-4a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-4a.d
@@ -8,5 +8,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000028	NT_GNU_PROPERTY_TYPE_0
       Properties: no copy on protected 
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-5-x32.d b/ld/testsuite/ld-x86-64/property-x86-5-x32.d
index 8e6b8e5a294..8f62e3be325 100644
--- a/ld/testsuite/ld-x86-64/property-x86-5-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-5-x32.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV
-	x86 ISA used: <None>
+      Properties: x86 ISA needed: x86-64-v2
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-5.d b/ld/testsuite/ld-x86-64/property-x86-5.d
index dd1da830c13..3ba1f481ca3 100644
--- a/ld/testsuite/ld-x86-64/property-x86-5.d
+++ b/ld/testsuite/ld-x86-64/property-x86-5.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV
-	x86 ISA used: <None>
+      Properties: x86 ISA needed: x86-64-v2
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-5a.s b/ld/testsuite/ld-x86-64/property-x86-5a.s
index 990c4683e62..755facd6cd0 100644
--- a/ld/testsuite/ld-x86-64/property-x86-5a.s
+++ b/ld/testsuite/ld-x86-64/property-x86-5a.s
@@ -22,7 +22,7 @@ _start:
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_NEEDED */
-	.long 0xc0008000	/* pr_type.  */
+	.long 0xc0008002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x1
@@ -38,7 +38,7 @@ _start:
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x0
diff --git a/ld/testsuite/ld-x86-64/property-x86-5b.s b/ld/testsuite/ld-x86-64/property-x86-5b.s
index 1f90dfc9f36..7851481de7a 100644
--- a/ld/testsuite/ld-x86-64/property-x86-5b.s
+++ b/ld/testsuite/ld-x86-64/property-x86-5b.s
@@ -17,7 +17,7 @@
 	.p2align 2
 .endif
 	/* GNU_PROPERTY_X86_ISA_1_USED */
-	.long 0xc0010000	/* pr_type.  */
+	.long 0xc0010002	/* pr_type.  */
 	.long 5f - 4f		/* pr_datasz.  */
 4:
 	.long 0x0
diff --git a/ld/testsuite/ld-x86-64/property-x86-6-x32.d b/ld/testsuite/ld-x86-64/property-x86-6-x32.d
new file mode 100644
index 00000000000..57aa3c2e70c
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-6-x32.d
@@ -0,0 +1,10 @@
+#source: property-x86-6.s
+#as: --x32 -mx86-used-note=no
+#ld: -shared -m elf32_x86_64
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
+	x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-x86-64/property-x86-6.d b/ld/testsuite/ld-x86-64/property-x86-6.d
new file mode 100644
index 00000000000..8639f9fdf04
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-6.d
@@ -0,0 +1,9 @@
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -shared -m elf_x86_64
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
+	x86 ISA used: SSE, SSE3, SSE4_1, AVX
diff --git a/ld/testsuite/ld-x86-64/property-x86-6.s b/ld/testsuite/ld-x86-64/property-x86-6.s
new file mode 100644
index 00000000000..9a2f8f497fb
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-6.s
@@ -0,0 +1,83 @@
+	.section ".note.gnu.property", "a"
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	.long 1f - 0f		/* name length.  */
+	.long 3f - 1f		/* data length.  */
+	/* NT_GNU_PROPERTY_TYPE_0 */
+	.long 5			/* note type.  */
+0:
+	.asciz "GNU"		/* vendor name.  */
+1:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	/* GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED */
+	.long 0xc0010000	/* pr_type.  */
+	.long 5f - 4f		/* pr_datasz.  */
+4:
+	.long 0xa
+5:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	/* GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED */
+	.long 0xc0008000	/* pr_type.  */
+	.long 5f - 4f		/* pr_datasz.  */
+4:
+	.long 0x3
+5:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+3:
+
+	.section ".note.gnu.property", "a"
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	.long 1f - 0f		/* name length.  */
+	.long 3f - 1f		/* data length.  */
+	/* NT_GNU_PROPERTY_TYPE_0 */
+	.long 5			/* note type.  */
+0:
+	.asciz "GNU"		/* vendor name.  */
+1:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	/* GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED */
+	.long 0xc0010000	/* pr_type.  */
+	.long 5f - 4f		/* pr_datasz.  */
+4:
+	.long 0xa0
+5:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	/* GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED */
+	.long 0xc0008000	/* pr_type.  */
+	.long 5f - 4f		/* pr_datasz.  */
+4:
+	.long 0x30
+5:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+3:
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d
index 3b4391a372a..25cf016ac2e 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet1-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet1.d b/ld/testsuite/ld-x86-64/property-x86-cet1.d
index abf76c58a64..3e797299e87 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet1.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet1.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d
index 55996c9f847..2f1facb52ff 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d
@@ -10,6 +10,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet2a.d b/ld/testsuite/ld-x86-64/property-x86-cet2a.d
index 2d7ad8cebd4..9e3560c259e 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet2a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet2a.d
@@ -10,6 +10,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d
index 6520e56e9ea..928cc137a08 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5a.d b/ld/testsuite/ld-x86-64/property-x86-cet5a.d
index 6a05136c4ee..e36db3734a7 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet5a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet5a.d
@@ -6,5 +6,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d b/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d
index da3c8543a07..890d07021c2 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-cet5b.d b/ld/testsuite/ld-x86-64/property-x86-cet5b.d
index 1c5681d0807..4f81698d94a 100644
--- a/ld/testsuite/ld-x86-64/property-x86-cet5b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-cet5b.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT, SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d
index 4ce851a28b5..ba0de1b42c5 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d
@@ -8,5 +8,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1a.d b/ld/testsuite/ld-x86-64/property-x86-ibt1a.d
index 5f9836fbf06..c5caf309479 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt1a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt1a.d
@@ -8,5 +8,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d
index 2e6c45e9dcb..a8918944bb1 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt1b.d b/ld/testsuite/ld-x86-64/property-x86-ibt1b.d
index 18020c66552..5120c01881d 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt1b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt1b.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d
index eca79569b3d..3946aec3a37 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt2.d b/ld/testsuite/ld-x86-64/property-x86-ibt2.d
index ddf9cc310b6..2a55017ab2a 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt2.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt2.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
index 2d9cd35d731..ea4254e728e 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
index fc32d7017bc..f74b2d1e9c2 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
index a17c121bb80..a2ad6f8fe7d 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
index 2425c319680..ab6bfb6281f 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d
index f6f67dbb64c..95155c51d1f 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt4.d b/ld/testsuite/ld-x86-64/property-x86-ibt4.d
index ab0217567b5..496c00cc2ac 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt4.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt4.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d
index 5e3c6dffb16..d9bf59eb963 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt5.d b/ld/testsuite/ld-x86-64/property-x86-ibt5.d
index cdf8ead9ea9..212c3b2b9a3 100644
--- a/ld/testsuite/ld-x86-64/property-x86-ibt5.d
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt5.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: IBT
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa1-x32.d b/ld/testsuite/ld-x86-64/property-x86-isa1-x32.d
new file mode 100644
index 00000000000..e50e135cb06
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa1-x32.d
@@ -0,0 +1,11 @@
+#source: property-x86-isa1.s
+#source: simple.s
+#as: --x32 -mx86-used-note=no
+#ld: -m elf32_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v4
+	<procesor-specific type 0xc0009000 data: 30 00 00 00 >
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa1.d b/ld/testsuite/ld-x86-64/property-x86-isa1.d
new file mode 100644
index 00000000000..fd05ade1f8a
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa1.d
@@ -0,0 +1,11 @@
+#source: property-x86-isa1.s
+#source: simple.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -m elf_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v4
+	<procesor-specific type 0xc0009000 data: 30 00 00 00 >
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa1.s b/ld/testsuite/ld-x86-64/property-x86-isa1.s
new file mode 100644
index 00000000000..938dc78cd62
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa1.s
@@ -0,0 +1,54 @@
+	.section ".note.gnu.property", "a"
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	.long 1f - 0f		/* name length */
+	.long 5f - 2f		/* data length */
+	.long 5			/* note type */
+0:	.asciz "GNU"		/* vendor name */
+1:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+2:	.long 0xc0008002	/* pr_type.  */
+	.long 4f - 3f		/* pr_datasz.  */
+3:
+	.long 0x1
+4:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+5:
+	.section ".note.gnu.property", "a"
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+	.long 1f - 0f		/* name length */
+	.long 5f - 2f		/* data length */
+	.long 5			/* note type */
+0:	.asciz "GNU"		/* vendor name */
+1:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+2:	.long 0xc0009000	/* pr_type.  */
+	.long 4f - 3f		/* pr_datasz.  */
+3:
+	.long 0x30
+4:
+.ifdef __64_bit__
+	.p2align 3
+.else
+	.p2align 2
+.endif
+5:
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa2-x32.d b/ld/testsuite/ld-x86-64/property-x86-isa2-x32.d
new file mode 100644
index 00000000000..c0f160784a5
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa2-x32.d
@@ -0,0 +1,9 @@
+#source: simple.s
+#as: --x32 -mx86-used-note=no
+#ld: -m elf32_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa2.d b/ld/testsuite/ld-x86-64/property-x86-isa2.d
new file mode 100644
index 00000000000..6a1d5ef947d
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa2.d
@@ -0,0 +1,9 @@
+#source: simple.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -m elf_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa3-x32.d b/ld/testsuite/ld-x86-64/property-x86-isa3-x32.d
new file mode 100644
index 00000000000..864e45294be
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa3-x32.d
@@ -0,0 +1,9 @@
+#source: simple.s
+#as: --x32 -mx86-used-note=no
+#ld: -r -m elf32_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
diff --git a/ld/testsuite/ld-x86-64/property-x86-isa3.d b/ld/testsuite/ld-x86-64/property-x86-isa3.d
new file mode 100644
index 00000000000..5d2fe8a0f4a
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-isa3.d
@@ -0,0 +1,9 @@
+#source: simple.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -r -m elf_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x[0-9a-f]+	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d
index 4bb55e5dc10..bc9857236c4 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1a.d b/ld/testsuite/ld-x86-64/property-x86-shstk1a.d
index 7882df634cb..b61d272f689 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk1a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk1a.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d
index a815c0d8726..28807f2f6e2 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000018	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk1b.d b/ld/testsuite/ld-x86-64/property-x86-shstk1b.d
index 5977760a0ec..d30e15c9485 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk1b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk1b.d
@@ -7,5 +7,5 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000020	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA used: <None>
-	x86 feature used: x86
+      Properties: x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d
index 7321b6078d6..66839c32516 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk2.d b/ld/testsuite/ld-x86-64/property-x86-shstk2.d
index e91c100f8c5..e75dc3a617e 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk2.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk2.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
index 3447f55d4e4..f73ded63330 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
index 0c647c9151f..a653cf241e9 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
index 02bffac94b5..893bf31de8d 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
index 0422825a08a..b7be8bc9fe1 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
@@ -7,6 +7,6 @@
 Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
-      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
-	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+      Properties: x86 ISA needed: x86-64-v2, x86-64-v3, <unknown: 10>, <unknown: 20>
 	x86 feature used: x86
+	x86 ISA used: x86-64-v3, <unknown: 8>, <unknown: 20>, <unknown: 80>
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d
index 101fdfc7f18..a04e3048505 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk4.d b/ld/testsuite/ld-x86-64/property-x86-shstk4.d
index c31dc38dfad..04cce50b651 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk4.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk4.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d
index 3528489003e..f78e6f42805 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000024	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk5.d b/ld/testsuite/ld-x86-64/property-x86-shstk5.d
index aac16262176..c96782cdfb4 100644
--- a/ld/testsuite/ld-x86-64/property-x86-shstk5.d
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk5.d
@@ -7,5 +7,5 @@ Displaying notes found in: .note.gnu.property
 [ 	]+Owner[ 	]+Data size[ 	]+Description
   GNU                  0x00000030	NT_GNU_PROPERTY_TYPE_0
       Properties: x86 feature: SHSTK
-	x86 ISA used: <None>
 	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
diff --git a/ld/testsuite/ld-x86-64/simple.s b/ld/testsuite/ld-x86-64/simple.s
new file mode 100644
index 00000000000..b2b025b4b07
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/simple.s
@@ -0,0 +1,4 @@
+	.text
+	.globl _start
+_start:
+	ret
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 59cad54a799..91702076b97 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -323,6 +323,8 @@ run_dump_test "property-x86-4a-x32"
 run_dump_test "property-x86-4b-x32"
 run_dump_test "property-x86-5"
 run_dump_test "property-x86-5-x32"
+run_dump_test "property-x86-6"
+run_dump_test "property-x86-6-x32"
 run_dump_test "property-x86-ibt1a"
 run_dump_test "property-x86-ibt1b"
 run_dump_test "property-x86-ibt1a-x32"
@@ -438,6 +440,12 @@ run_dump_test "pr26711-2"
 run_dump_test "pr26711-2-x32"
 run_dump_test "pr26711-3"
 run_dump_test "pr26711-3-x32"
+run_dump_test "property-x86-isa1"
+run_dump_test "property-x86-isa1-x32"
+run_dump_test "property-x86-isa2"
+run_dump_test "property-x86-isa2-x32"
+run_dump_test "property-x86-isa3"
+run_dump_test "property-x86-isa3-x32"
 
 if ![istarget "x86_64-*-linux*"] {
     return