public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
@ 2020-10-04 16:43 H.J. Lu
  2020-10-07  9:22 ` Florian Weimer
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2020-10-04 16:43 UTC (permalink / raw)
  To: binutils

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.

Also add

 #define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11)

for mask registers.

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
	* 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-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.
	* 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-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.
	* ld/testsuite/ld-x86-64/x86-64.exp: Run property-x86-6 and
	property-x86-6-x32.
---
 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/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/elf/common.h                          |  76 +++++++----
 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                 |   1 +
 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-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         |  12 ++
 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-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   |  12 ++
 ld/testsuite/ld-x86-64/property-x86-6.d       |  11 ++
 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-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/x86-64.exp             |   2 +
 178 files changed, 641 insertions(+), 386 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/testsuite/ld-i386/property-x86-6.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

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/config/tc-i386.c b/gas/config/tc-i386.c
index 8f798479baa..6c3b2697120 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;
 	}
@@ -9164,56 +9166,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
@@ -9225,6 +9222,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)
@@ -9233,6 +9239,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)
@@ -9241,10 +9249,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/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/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 164c099cbbb..326b7aa55fc 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -420,6 +420,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"
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-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..6fab9f5bf7e
--- /dev/null
+++ b/ld/testsuite/ld-i386/property-x86-6.d
@@ -0,0 +1,12 @@
+#source: ../ld-x86-64/property-x86-6.s
+#as: --32 -mx86-used-note=yes
+#ld: -shared -m elf_i386
+#readelf: -n
+
+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
+	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
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-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 1abb90b3a2e..054ebe5b86f 100644
--- a/ld/testsuite/ld-x86-64/property-3.r
+++ b/ld/testsuite/ld-x86-64/property-3.r
@@ -3,5 +3,5 @@ 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 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 e94846e88ea..08a2973df22 100644
--- a/ld/testsuite/ld-x86-64/property-4.r
+++ b/ld/testsuite/ld-x86-64/property-4.r
@@ -3,5 +3,5 @@ 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 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 bd87a9317ef..d1b52dfa54e 100644
--- a/ld/testsuite/ld-x86-64/property-5.r
+++ b/ld/testsuite/ld-x86-64/property-5.r
@@ -3,5 +3,5 @@ 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 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..af10d65fab6
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-6-x32.d
@@ -0,0 +1,12 @@
+#source: property-x86-6.s
+#as: --x32 -mx86-used-note=yes
+#ld: -shared -m elf32_x86_64
+#readelf: -n
+
+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
+	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
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..8678e654161
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-6.d
@@ -0,0 +1,11 @@
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=yes
+#ld: -shared -m elf_x86_64
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[ 	]+Owner[ 	]+Data size[ 	]+Description
+  GNU                  0x00000040	NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: CMOV, SSE, SSSE3, SSE4_1
+	x86 ISA used: SSE, SSE3, SSE4_1, AVX
+	x86 feature used: x86
+	x86 ISA used: x86-64-baseline
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-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/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 3c0b4347d02..5db7fbceeb9 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"
-- 
2.26.2


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-04 16:43 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker: H.J. Lu
@ 2020-10-07  9:22 ` Florian Weimer
  2020-10-07 12:54   ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: Florian Weimer @ 2020-10-07  9:22 UTC (permalink / raw)
  To: H.J. Lu via Binutils

* H. J. Lu via Binutils:

> 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.
>
> Also add
>
>  #define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11)
>
> for mask registers.

I'm not sure if this is the right way to do this.  How is the level
markup going to be used?

We might eventually store allocated notes in /etc/ld.so.conf and use
them to select a shared object implementation based on which objects the
dynamic linker sees as matching the requirement.  There is still the
matter of choosing between different eligible implementations.  Maybe a
simple priority field could help with that.  But I don't think it should
replace a requirement to match ISAs.

Thanks,
Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-07  9:22 ` Florian Weimer
@ 2020-10-07 12:54   ` H.J. Lu
  2020-10-07 17:36     ` V2 " H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2020-10-07 12:54 UTC (permalink / raw)
  To: Florian Weimer; +Cc: H.J. Lu via Binutils

On Wed, Oct 7, 2020 at 2:22 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> * H. J. Lu via Binutils:
>
> > 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.
> >
> > Also add
> >
> >  #define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11)
> >
> > for mask registers.
>
> I'm not sure if this is the right way to do this.  How is the level
> markup going to be used?

What happens when a x86-64-v4 shared library is placed in the
x86-64-v2 directory by mistake on a x86-64-v2 machine?   The
program may run for a while and then crashes on x86-64-v4 instructions.
With a GNU_PROPERTY_X86_ISA_1_V[234] marker, ld.so can skip
such incompatible libraries and avoid crash.  You can think of it as another
level of EM_XXX.

> We might eventually store allocated notes in /etc/ld.so.conf and use
> them to select a shared object implementation based on which objects the
> dynamic linker sees as matching the requirement.  There is still the
> matter of choosing between different eligible implementations.  Maybe a
> simple priority field could help with that.  But I don't think it should
> replace a requirement to match ISAs.


-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-07 12:54   ` H.J. Lu
@ 2020-10-07 17:36     ` H.J. Lu
  2020-10-13 10:48       ` Florian Weimer
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2020-10-07 17:36 UTC (permalink / raw)
  To: Florian Weimer; +Cc: H.J. Lu via Binutils

[-- Attachment #1: Type: text/plain, Size: 2175 bytes --]

On Wed, Oct 7, 2020 at 5:54 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Wed, Oct 7, 2020 at 2:22 AM Florian Weimer <fweimer@redhat.com> wrote:
> >
> > * H. J. Lu via Binutils:
> >
> > > 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.
> > >
> > > Also add
> > >
> > >  #define GNU_PROPERTY_X86_FEATURE_2_MASK (1U << 11)
> > >
> > > for mask registers.
> >
> > I'm not sure if this is the right way to do this.  How is the level
> > markup going to be used?
>
> What happens when a x86-64-v4 shared library is placed in the
> x86-64-v2 directory by mistake on a x86-64-v2 machine?   The
> program may run for a while and then crashes on x86-64-v4 instructions.
> With a GNU_PROPERTY_X86_ISA_1_V[234] marker, ld.so can skip
> such incompatible libraries and avoid crash.  You can think of it as another
> level of EM_XXX.
>
> > We might eventually store allocated notes in /etc/ld.so.conf and use
> > them to select a shared object implementation based on which objects the
> > dynamic linker sees as matching the requirement.  There is still the
> > matter of choosing between different eligible implementations.  Maybe a
> > simple priority field could help with that.  But I don't think it should
> > replace a requirement to match ISAs.
>

Here is the updated patch with -z x86-64-v[234] linker command line
option to mark x86-64-v[234] ISA level as needed.

-- 
H.J.

[-- Attachment #2: 0001-x86-Support-GNU_PROPERTY_X86_ISA_1_V-234-marker.patch --]
[-- Type: text/x-patch, Size: 163630 bytes --]

From e1e6f13f74c2683ccb2b775b8438f5cd81c27d75 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Sat, 3 Oct 2020 09:18:03 -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.

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

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.

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 and property-x86-isa2.
	* 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-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/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 and property-x86-isa2-x32.
---
 bfd/elf-linker-x86.h                          |   3 +
 bfd/elfxx-x86.c                               |  64 ++++++++-
 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/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/elf/common.h                          |  76 +++++++----
 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                 |   3 +
 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-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-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             |   6 +
 203 files changed, 865 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-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/simple.s

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/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/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/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/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..ad4c7e1d17d 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,8 @@ 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"
 
 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-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-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..f440cebfdf2 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,10 @@ 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"
 
 if ![istarget "x86_64-*-linux*"] {
     return
-- 
2.26.2


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-07 17:36     ` V2 " H.J. Lu
@ 2020-10-13 10:48       ` Florian Weimer
  2020-10-13 11:23         ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: Florian Weimer @ 2020-10-13 10:48 UTC (permalink / raw)
  To: H.J. Lu via Binutils

* H. J. Lu via Binutils:

> Here is the updated patch with -z x86-64-v[234] linker command line
> option to mark x86-64-v[234] ISA level as needed.

I think this needs a marker for the baseline as well.  Currently, a
missing marker can either mean “the programmer did not specify a marker”
or “the object uses the baseline ABI”.

Thanks,
Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-13 10:48       ` Florian Weimer
@ 2020-10-13 11:23         ` H.J. Lu
  2020-10-13 11:29           ` Florian Weimer
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2020-10-13 11:23 UTC (permalink / raw)
  To: Florian Weimer; +Cc: H.J. Lu via Binutils

On Tue, Oct 13, 2020 at 3:48 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> * H. J. Lu via Binutils:
>
> > Here is the updated patch with -z x86-64-v[234] linker command line
> > option to mark x86-64-v[234] ISA level as needed.
>
> I think this needs a marker for the baseline as well.  Currently, a
> missing marker can either mean “the programmer did not specify a marker”
> or “the object uses the baseline ABI”.
>

“the object uses the baseline ABI” and “the programmer did not specify a marker”
mean the same thing to ld.so since a baseline or x86-64-v[234] objects
may contain
ANY instructions.  With or Without the baseline maker, ld.so assumes
that the object
can run on any x86-64 processors.

-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-13 11:23         ` H.J. Lu
@ 2020-10-13 11:29           ` Florian Weimer
  2020-10-13 11:42             ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: Florian Weimer @ 2020-10-13 11:29 UTC (permalink / raw)
  To: H.J. Lu; +Cc: H.J. Lu via Binutils

* H. J. Lu:

> On Tue, Oct 13, 2020 at 3:48 AM Florian Weimer <fweimer@redhat.com> wrote:
>>
>> * H. J. Lu via Binutils:
>>
>> > Here is the updated patch with -z x86-64-v[234] linker command line
>> > option to mark x86-64-v[234] ISA level as needed.
>>
>> I think this needs a marker for the baseline as well.  Currently, a
>> missing marker can either mean “the programmer did not specify a marker”
>> or “the object uses the baseline ABI”.
>>
>
> “the object uses the baseline ABI” and “the programmer did not specify
> a marker” mean the same thing to ld.so since a baseline or
> x86-64-v[234] objects may contain ANY instructions.

ld.so won't be the sole consumer of such annotations.  For example, an
install-like tool could use the annotations to select the appropriate
installation path for an ELF shared object.

Thanks,
Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-13 11:29           ` Florian Weimer
@ 2020-10-13 11:42             ` H.J. Lu
  2020-10-28 11:09               ` Florian Weimer
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2020-10-13 11:42 UTC (permalink / raw)
  To: Florian Weimer; +Cc: H.J. Lu via Binutils

On Tue, Oct 13, 2020 at 4:29 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> * H. J. Lu:
>
> > On Tue, Oct 13, 2020 at 3:48 AM Florian Weimer <fweimer@redhat.com> wrote:
> >>
> >> * H. J. Lu via Binutils:
> >>
> >> > Here is the updated patch with -z x86-64-v[234] linker command line
> >> > option to mark x86-64-v[234] ISA level as needed.
> >>
> >> I think this needs a marker for the baseline as well.  Currently, a
> >> missing marker can either mean “the programmer did not specify a marker”
> >> or “the object uses the baseline ABI”.
> >>
> >
> > “the object uses the baseline ABI” and “the programmer did not specify
> > a marker” mean the same thing to ld.so since a baseline or
> > x86-64-v[234] objects may contain ANY instructions.
>
> ld.so won't be the sole consumer of such annotations.  For example, an
> install-like tool could use the annotations to select the appropriate
> installation path for an ELF shared object.
>

They should treat “the object uses the baseline ABI” the same way as
“the programmer did not specify a marker” since the ISA marker specifies
the minimum ISA level, not the maximum.

-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-13 11:42             ` H.J. Lu
@ 2020-10-28 11:09               ` Florian Weimer
  2020-10-28 13:36                 ` H.J. Lu
  0 siblings, 1 reply; 11+ messages in thread
From: Florian Weimer @ 2020-10-28 11:09 UTC (permalink / raw)
  To: H.J. Lu; +Cc: H.J. Lu via Binutils

* H. J. Lu:

> On Tue, Oct 13, 2020 at 4:29 AM Florian Weimer <fweimer@redhat.com> wrote:
>>
>> * H. J. Lu:
>>
>> > On Tue, Oct 13, 2020 at 3:48 AM Florian Weimer <fweimer@redhat.com> wrote:
>> >>
>> >> * H. J. Lu via Binutils:
>> >>
>> >> > Here is the updated patch with -z x86-64-v[234] linker command line
>> >> > option to mark x86-64-v[234] ISA level as needed.
>> >>
>> >> I think this needs a marker for the baseline as well.  Currently, a
>> >> missing marker can either mean “the programmer did not specify a marker”
>> >> or “the object uses the baseline ABI”.
>> >>
>> >
>> > “the object uses the baseline ABI” and “the programmer did not specify
>> > a marker” mean the same thing to ld.so since a baseline or
>> > x86-64-v[234] objects may contain ANY instructions.
>>
>> ld.so won't be the sole consumer of such annotations.  For example, an
>> install-like tool could use the annotations to select the appropriate
>> installation path for an ELF shared object.
>>
>
> They should treat “the object uses the baseline ABI” the same way as
> “the programmer did not specify a marker” since the ISA marker specifies
> the minimum ISA level, not the maximum.

I don't think this will work for us in our downstream binary analysis,
sorry.  Please add a marker for the baseline ABI.  Thanks.

Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-28 11:09               ` Florian Weimer
@ 2020-10-28 13:36                 ` H.J. Lu
  2020-10-28 13:41                   ` Florian Weimer
  0 siblings, 1 reply; 11+ messages in thread
From: H.J. Lu @ 2020-10-28 13:36 UTC (permalink / raw)
  To: Florian Weimer; +Cc: H.J. Lu via Binutils

On Wed, Oct 28, 2020 at 4:09 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> * H. J. Lu:
>
> > On Tue, Oct 13, 2020 at 4:29 AM Florian Weimer <fweimer@redhat.com> wrote:
> >>
> >> * H. J. Lu:
> >>
> >> > On Tue, Oct 13, 2020 at 3:48 AM Florian Weimer <fweimer@redhat.com> wrote:
> >> >>
> >> >> * H. J. Lu via Binutils:
> >> >>
> >> >> > Here is the updated patch with -z x86-64-v[234] linker command line
> >> >> > option to mark x86-64-v[234] ISA level as needed.
> >> >>
> >> >> I think this needs a marker for the baseline as well.  Currently, a
> >> >> missing marker can either mean “the programmer did not specify a marker”
> >> >> or “the object uses the baseline ABI”.
> >> >>
> >> >
> >> > “the object uses the baseline ABI” and “the programmer did not specify
> >> > a marker” mean the same thing to ld.so since a baseline or
> >> > x86-64-v[234] objects may contain ANY instructions.
> >>
> >> ld.so won't be the sole consumer of such annotations.  For example, an
> >> install-like tool could use the annotations to select the appropriate
> >> installation path for an ELF shared object.
> >>
> >
> > They should treat “the object uses the baseline ABI” the same way as
> > “the programmer did not specify a marker” since the ISA marker specifies
> > the minimum ISA level, not the maximum.
>
> I don't think this will work for us in our downstream binary analysis,
> sorry.  Please add a marker for the baseline ABI.  Thanks.

Done:

https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/13
https://gitlab.com/x86-psABIs/x86-64-ABI/-/wikis/Micro-architecture-levels

-- 
H.J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: V2 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker:
  2020-10-28 13:36                 ` H.J. Lu
@ 2020-10-28 13:41                   ` Florian Weimer
  0 siblings, 0 replies; 11+ messages in thread
From: Florian Weimer @ 2020-10-28 13:41 UTC (permalink / raw)
  To: H.J. Lu; +Cc: H.J. Lu via Binutils

* H. J. Lu:

>> I don't think this will work for us in our downstream binary analysis,
>> sorry.  Please add a marker for the baseline ABI.  Thanks.
>
> Done:
>
> https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/13
> https://gitlab.com/x86-psABIs/x86-64-ABI/-/wikis/Micro-architecture-levels

Thanks.

Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-10-28 13:41 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-04 16:43 [PATCH] x86: Support GNU_PROPERTY_X86_ISA_1_V[234] marker: H.J. Lu
2020-10-07  9:22 ` Florian Weimer
2020-10-07 12:54   ` H.J. Lu
2020-10-07 17:36     ` V2 " H.J. Lu
2020-10-13 10:48       ` Florian Weimer
2020-10-13 11:23         ` H.J. Lu
2020-10-13 11:29           ` Florian Weimer
2020-10-13 11:42             ` H.J. Lu
2020-10-28 11:09               ` Florian Weimer
2020-10-28 13:36                 ` H.J. Lu
2020-10-28 13:41                   ` Florian Weimer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).