+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26703
+       * elf-linker-x86.h (elf_linker_x86_params): Add isa_level.
+       * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge
+       GNU_PROPERTY_X86_ISA_1_V[234].
+       (_bfd_x86_elf_link_setup_gnu_properties): Generate
+       GNU_PROPERTY_X86_ISA_1_V[234] for -z x86-64-v[234].
+
 2020-10-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/26711
 
   /* 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;
 
 
 {
   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
           || (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)
            {
          /* 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.  */
              /* 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;
            }
        }
         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)
   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;
   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;
          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)
        {
 
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26703
+       * readelf.c (decode_x86_compat_2_isa): New function.
+       (decode_x86_isa): Updated for new X86_ISA_1_XXX bits.
+       (decode_x86_feature_1): Handle GNU_PROPERTY_X86_FEATURE_2_MASK.
+       (print_gnu_property_note): Handle X86_COMPAT_2_ISA_1_USED,
+       and X86_COMPAT_2_ISA_1_NEEDED.
+       * testsuite/binutils-all/i386/pr21231b.s: Updated to the current
+       GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
+       values.
+       * testsuite/binutils-all/x86-64/pr21231b.s: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494a.s: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494b.s: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494c.s: Likewise.
+       * testsuite/binutils-all/i386/empty.d: Updated.
+       * testsuite/binutils-all/i386/ibt.d: Likewise.
+       * testsuite/binutils-all/i386/pr21231a.d: Likewise.
+       * testsuite/binutils-all/i386/pr21231b.d: Likewise.
+       * testsuite/binutils-all/i386/shstk.d: Likewise.
+       * testsuite/binutils-all/x86-64/empty-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/empty.d: Likewise.
+       * testsuite/binutils-all/x86-64/ibt-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/ibt.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr21231a.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr21231b.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494a-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494a.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494c-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494c.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494d-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494d.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494e-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/pr23494e.d: Likewise.
+       * testsuite/binutils-all/x86-64/shstk-x32.d: Likewise.
+       * testsuite/binutils-all/x86-64/shstk.d: Likewise.
+
 2020-10-06  Nick Clifton  <nickc@redhat.com>
 
        * objcopy.c (copy_object): Compare input and output sections by
 
 }
 
 static void
-decode_x86_isa (unsigned int bitmask)
+decode_x86_compat_2_isa (unsigned int bitmask)
 {
   if (!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:
     }
 }
 
+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)
 {
        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;
                    }
                  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;
                }
 
   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
 
   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
 
   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
 
   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
 
        .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
 
   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
 
   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
 
   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
 
   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
 
   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
 
   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
 
   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
 
        .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
 
 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>
 
 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>
 
        .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
        .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
        .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
 
        .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
 
 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>
 
 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>
 
        .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
        .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
        .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
 
 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>
 
 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>
 
 [      ]+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>
 
 [      ]+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>
 
   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
 
   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
 
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26703
+       * config/tc-i386.c (xstate): Add xstate_mask.
+       (md_assemble): Check i.types[j], instead of i.tm.operand_types[j],
+       for xstate.  Set xstate_mask, instead of xstate_zmm, for RegMask.
+       (output_insn): Update for GNU_PROPERTY_X86_ISA_1_V[234].  Update
+       xstate for mask register and VSIB.
+       * testsuite/gas/i386/i386.exp: Run more GNU_PROPERTY tests.
+       * testsuite/gas/i386/property-1.s: Updated to the current
+       GNU_PROPERTY_X86_ISA_1_USED value.
+       * testsuite/gas/i386/property-2.s: Only keep cmove.
+       * testsuite/gas/i386/property-3.s: Changed to addsubpd.
+       * testsuite/gas/i386/property-1.d: Updated.
+       * testsuite/gas/i386/property-2.d: Likewise.
+       * testsuite/gas/i386/property-3.d: Likewise.
+       * testsuite/gas/i386/property-4.d: Likewise.
+       * testsuite/gas/i386/property-5.d: Likewise.
+       * testsuite/gas/i386/property-6.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-1.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-2.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-3.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-4.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-5.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-6.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-7.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-8.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-9.d: Likewise.
+       * testsuite/gas/i386/property-11.d: New file.
+       * testsuite/gas/i386/property-11.s: Likewise.
+       * testsuite/gas/i386/property-12.d: Likewise.
+       * testsuite/gas/i386/property-12.s: Likewise.
+       * testsuite/gas/i386/property-13.d: Likewise.
+       * testsuite/gas/i386/property-13.s: Likewise.
+       * testsuite/gas/i386/x86-64-property-11.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-12.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-13.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-14.d: Likewise.
+       * testsuite/gas/i386/x86-64-property-14.s: Likewise.
+
 2020-10-06  Alex Coplan  <alex.coplan@arm.com>
 
        PR 26699
 
        /* 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.  */
   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;
          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;
        }
 #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
          || 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)
        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)
        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
 
 
        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"
        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"
 
 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
 
        .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
 
 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
 
--- /dev/null
+#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
 
--- /dev/null
+       .text
+       vaesenclast %xmm4,%xmm6,%xmm2
 
--- /dev/null
+#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
 
--- /dev/null
+       .text
+       vpdpwssd %xmm2, %xmm4, %xmm2{%k3}
 
--- /dev/null
+#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
 
--- /dev/null
+       .text
+       vscatterpf1dps  123(%ebp,%zmm7,8){%k1}
 
 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
 
        .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
 
 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
 
        .text
-       cvtpi2ps (%eax), %xmm0
+       addsubpd (%eax), %xmm0
 
 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
 
 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
 
 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
 
 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
 
 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
 
--- /dev/null
+#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
 
--- /dev/null
+#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
 
--- /dev/null
+#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
 
--- /dev/null
+#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
 
--- /dev/null
+       .text
+       sahf
 
 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
 
 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
 
 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
 
 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
 
 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
 
-#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
 
-#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
 
-#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
 
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26703
+       * elf/common.h (GNU_PROPERTY_X86_ISA_1_USED): Renamed to ...
+       (GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED): This.
+       (GNU_PROPERTY_X86_ISA_1_NEEDED): Renamed to ...
+       (GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED): This.
+       (GNU_PROPERTY_X86_ISA_1_XXX): Renamed to ...
+       (GNU_PROPERTY_X86_COMPAT_2_ISA_1_XXX): This.
+       (GNU_PROPERTY_X86_ISA_1_NEEDED): New.
+       (GNU_PROPERTY_X86_ISA_1_USED): Likewise.
+       (GNU_PROPERTY_X86_ISA_1_V2): Likewise.
+       (GNU_PROPERTY_X86_ISA_1_V3): Likewise.
+       (GNU_PROPERTY_X86_ISA_1_V4): Likewise.
+       (GNU_PROPERTY_X86_FEATURE_2_MASK): Likewise.
+
 2020-09-23  Mark Wielaard  <mark@klomp.org>
 
        Sync with GCC
 
   (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)
 #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
 
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26703
+       * NEWS: Mention -z x86-64-v[234].
+       * ld.texi: Document -z x86-64-v[234].
+       * emulparams/elf32_x86_64.sh: Use x86-64-level.sh.
+       * emulparams/elf_i386.sh: Likewise.
+       * emulparams/elf_x86_64.sh: Likewise.
+       * emulparams/x86-64-level.sh: New file.
+       * testsuite/ld-elf/x86-feature-1a.rd: Update.
+       * testsuite/ld-elf/x86-feature-1b.rd: Likewise.
+       * testsuite/ld-elf/x86-feature-1c.rd: Likewise.
+       * testsuite/ld-elf/x86-feature-1d.rd: Likewise.
+       * testsuite/ld-elf/x86-feature-1e.rd: Likewise.
+       * testsuite/ld-i386/pr23372c.d: Likewise.
+       * testsuite/ld-i386/pr23486c.d: Likewise.
+       * testsuite/ld-i386/pr23486d.d: Likewise.
+       * testsuite/ld-i386/pr24322a.d: Likewise.
+       * testsuite/ld-i386/pr24322b.d: Likewise.
+       * testsuite/ld-i386/property-1a.r: Likewise.
+       * testsuite/ld-i386/property-2a.r: Likewise.
+       * testsuite/ld-i386/property-3.r: Likewise.
+       * testsuite/ld-i386/property-3a.r: Likewise.
+       * testsuite/ld-i386/property-4.r: Likewise.
+       * testsuite/ld-i386/property-4a.r: Likewise.
+       * testsuite/ld-i386/property-5.r: Likewise.
+       * testsuite/ld-i386/property-5a.r: Likewise.
+       * testsuite/ld-i386/property-7a.r: Likewise.
+       * testsuite/ld-i386/property-x86-3.d: Likewise.
+       * testsuite/ld-i386/property-x86-4a.d: Likewise.
+       * testsuite/ld-i386/property-x86-5.d: Likewise.
+       * testsuite/ld-i386/property-x86-cet1.d: Likewise.
+       * testsuite/ld-i386/property-x86-cet2a.d: Likewise.
+       * testsuite/ld-i386/property-x86-cet5a.d: Likewise.
+       * testsuite/ld-i386/property-x86-cet5b.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt1a.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt1b.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt2.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt4.d: Likewise.
+       * testsuite/ld-i386/property-x86-ibt5.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk1a.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk1b.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk2.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk4.d: Likewise.
+       * testsuite/ld-i386/property-x86-shstk5.d: Likewise.
+       * testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr23372c.d: Likewise.
+       * testsuite/ld-x86-64/pr23486c.d: Likewise.
+       * testsuite/ld-x86-64/pr23486d-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr23486d.d: Likewise.
+       * testsuite/ld-x86-64/pr24322a-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr24322a.d: Likewise.
+       * testsuite/ld-x86-64/pr24322b-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr24322b.d: Likewise.
+       * testsuite/ld-x86-64/pr24458a-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr24458a.d: Likewise.
+       * testsuite/ld-x86-64/pr24458b-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr24458b.d: Likewise.
+       * testsuite/ld-x86-64/pr24458c-x32.d: Likewise.
+       * testsuite/ld-x86-64/pr24458c.d: Likewise.
+       * testsuite/ld-x86-64/property-1a.r: Likewise.
+       * testsuite/ld-x86-64/property-2a.r: Likewise.
+       * testsuite/ld-x86-64/property-3.r: Likewise.
+       * testsuite/ld-x86-64/property-3a.r: Likewise.
+       * testsuite/ld-x86-64/property-4.r: Likewise.
+       * testsuite/ld-x86-64/property-4a.r: Likewise.
+       * testsuite/ld-x86-64/property-5.r: Likewise.
+       * testsuite/ld-x86-64/property-5a.r: Likewise.
+       * testsuite/ld-x86-64/property-7a.r: Likewise.
+       * testsuite/ld-x86-64/property-x86-3-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-3.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-4a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-5-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-5.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet1.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet2a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet5a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-cet5b.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt1b-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt1b.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt2-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt2.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt4-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt4.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt5-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-ibt5.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk2.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk4-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk4.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-shstk5.d: Likewise.
+       * testsuite/ld-i386/i386.exp: Run property-x86-6,
+       property-x86-isa1, property-x86-isa2 and property-x86-isa3.
+       * testsuite/ld-i386/property-x86-1.S: Updated to the current
+       GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_ISA_1_NEEDED
+       values.
+       * testsuite/ld-i386/property-x86-2.S: Likewise.
+       * testsuite/ld-i386/property-x86-3.s: Likewise.
+       * testsuite/ld-x86-64/pr23372d.s: Likewise.
+       * testsuite/ld-x86-64/pr23372e.s: Likewise.
+       * testsuite/ld-x86-64/pr23372f.s: Likewise.
+       * testsuite/ld-x86-64/pr23486c.s: Likewise.
+       * testsuite/ld-x86-64/pr23486d.s: Likewise.
+       * testsuite/ld-x86-64/property-x86-1.S: Likewise.
+       * testsuite/ld-x86-64/property-x86-2.S: Likewise.
+       * testsuite/ld-x86-64/property-x86-3.s: Likewise.
+       * testsuite/ld-x86-64/property-x86-5a.s: Likewise.
+       * testsuite/ld-x86-64/property-x86-5b.s: Likewise.
+       * testsuite/ld-i386/property-x86-6.d: New file.
+       * testsuite/ld-i386/property-x86-isa1.d: Likewise.
+       * testsuite/ld-i386/property-x86-isa2.d: Likewise.
+       * testsuite/ld-i386/property-x86-isa3.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-6-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-6.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-6.s: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa1-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa1.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa1.s: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa2-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa2.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa3-x32.d: Likewise.
+       * testsuite/ld-x86-64/property-x86-isa3.d: Likewise.
+       * testsuite/ld-x86-64/simple.s: Likewise.
+       * ld/testsuite/ld-x86-64/x86-64.exp: Run property-x86-6,
+       property-x86-6-x32, property-x86-isa1, property-x86-isa1-x32,
+       property-x86-isa2, property-x86-isa2-x32, property-x86-isa3-x32
+       and property-x86-isa3.
+
 2020-10-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        * testsuite/ld-i386/property-3.r: Updated for Fedora binary
 
 -*- 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
 
 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
 
 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"
 
 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
 
--- /dev/null
+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"
 
 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.
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 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"
 run_dump_test "pr26711-1"
 run_dump_test "pr26711-2"
 run_dump_test "pr26711-3"
+run_dump_test "property-x86-isa1"
+run_dump_test "property-x86-isa2"
+run_dump_test "property-x86-isa3"
 
 if { !([istarget "i?86-*-linux*"]
        || [istarget "i?86-*-gnu*"]
 
 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
 
 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
 
 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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
   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
 
 [      ]+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
 
   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
 
 [      ]+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
 
   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
 
 [      ]+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
 
   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
 
 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
 
 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
 
 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>
 
 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
 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
 
 [      ]+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
 
 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
 
--- /dev/null
+#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
 
 [      ]+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
 
 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>
 
 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
 
 [      ]+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
 
 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
 
 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
 
 [      ]+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
 
 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>
 
 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>
 
 [      ]+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
 
 [      ]+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
 
--- /dev/null
+#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 >
 
--- /dev/null
+#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
 
--- /dev/null
+#source: ../ld-x86-64/simple.s
+#as: --32 -mx86-used-note=no
+#ld: -r -m elf_i386 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
 
 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
 
 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
 
 [      ]+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
 
 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>
 
 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>
 
 [      ]+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
 
 [      ]+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
 
 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
 
 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
 
        .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
 
        .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
 
        .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
 
 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
 
 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
 
        .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
 
 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
 
 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
 
        .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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 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
 
 [      ]+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
 
 [      ]+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
 
   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
 
 [      ]+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
 
   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
 
 [      ]+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
 
   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
 
 [      ]+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
 
   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
 
 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
 
 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
 
 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>
 
 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>
 
        .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
        .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
        .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
        .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
 
 [      ]+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
 
 [      ]+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
 
 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
 
 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
 
        .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
        .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
 
        .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
 
--- /dev/null
+#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
 
--- /dev/null
+#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
 
--- /dev/null
+       .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:
 
 [      ]+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
 
 [      ]+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
 
 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>
 
 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>
 
 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
 
 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
 
 [      ]+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
 
 [      ]+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
 
 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
 
 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
 
 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
 
 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
 
 [      ]+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
 
 [      ]+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
 
 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>
 
 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>
 
 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>
 
 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>
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
--- /dev/null
+#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 >
 
--- /dev/null
+#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 >
 
--- /dev/null
+       .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:
 
--- /dev/null
+#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
 
--- /dev/null
+#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
 
--- /dev/null
+#source: simple.s
+#as: --x32 -mx86-used-note=no
+#ld: -r -m elf32_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
 
--- /dev/null
+#source: simple.s
+#as: --64 -defsym __64_bit__=1 -mx86-used-note=no
+#ld: -r -m elf_x86_64 -z x86-64-v4
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA needed: x86-64-v4
 
 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
 
 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
 
 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
 
 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
 
 [      ]+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
 
 [      ]+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
 
 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>
 
 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>
 
 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>
 
 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>
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
 [      ]+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
 
--- /dev/null
+       .text
+       .globl _start
+_start:
+       ret
 
 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"
 run_dump_test "pr26711-2-x32"
 run_dump_test "pr26711-3"
 run_dump_test "pr26711-3-x32"
+run_dump_test "property-x86-isa1"
+run_dump_test "property-x86-isa1-x32"
+run_dump_test "property-x86-isa2"
+run_dump_test "property-x86-isa2-x32"
+run_dump_test "property-x86-isa3"
+run_dump_test "property-x86-isa3-x32"
 
 if ![istarget "x86_64-*-linux*"] {
     return