[PATCH] x86: exclude certain ISA extensions from v3/v4 ISA

H.J. Lu hjl.tools@gmail.com
Thu Jun 2 17:03:07 GMT 2022


On Thu, Jun 2, 2022 at 9:02 AM Jan Beulich <jbeulich@suse.com> wrote:
>
> Like TBM and LWP, XOP and FMA4 also shouldn't be included in v3.
>
> Like AVX512-4VNNIW, AVX512-4FMAPS also shouldn't be included in v4.
>
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -9579,12 +9579,14 @@ output_insn (void)
>         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.  */
> +         /* Any VEX encoded insns execpt for AVX512F, AVX512BW, AVX512DQ,
> +            XOP, FMA4, 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.cpuxop
> +             && !i.tm.cpu_flags.bitfield.cpufma4
>               && !i.tm.cpu_flags.bitfield.cpulwp
>               && !i.tm.cpu_flags.bitfield.cputbm
>               && !(x86_feature_2_used & GNU_PROPERTY_X86_FEATURE_2_TMM))
> @@ -9602,11 +9604,12 @@ output_insn (void)
>           || 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.  */
> +         /* Any EVEX encoded insns except for AVX512ER, AVX512PF,
> +            AVX512-4FMAPS, and AVX512-4VNNIW.  */
>           || (i.tm.opcode_modifier.evex
>               && !i.tm.cpu_flags.bitfield.cpuavx512er
>               && !i.tm.cpu_flags.bitfield.cpuavx512pf
> +             && !i.tm.cpu_flags.bitfield.cpuavx512_4fmaps
>               && !i.tm.cpu_flags.bitfield.cpuavx512_4vnniw))
>         x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V4;
>      }
> --- a/gas/testsuite/gas/i386/i386.exp
> +++ b/gas/testsuite/gas/i386/i386.exp
> @@ -755,7 +755,10 @@ if {[is_elf_format] || [istarget "*-*-vx
>      run_dump_test "property-cvtpi2pd"
>      run_dump_test "property-cvtpi2ps"
>      run_dump_test "property-ldmxcsr"
> +    run_dump_test "property-v4fmaddps"
> +    run_dump_test "property-vfmaddps"
>      run_dump_test "property-vldmxcsr"
> +    run_dump_test "property-vpcmov"
>      run_dump_test "property-vzeroall"
>      run_dump_test "code16-2"
>
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/property-v4fmaddps.d
> @@ -0,0 +1,9 @@
> +#name: i386 property v4fmaddps
> +#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
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/property-v4fmaddps.s
> @@ -0,0 +1,2 @@
> +       .text
> +       v4fmaddps       (%eax), %zmm0, %zmm0
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/property-vfmaddps.d
> @@ -0,0 +1,9 @@
> +#name: i386 property vfmaddps
> +#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
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/property-vfmaddps.s
> @@ -0,0 +1,2 @@
> +       .text
> +       vfmaddps        %xmm0, %xmm0, %xmm0, %xmm0
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/property-vpcmov.d
> @@ -0,0 +1,9 @@
> +#name: i386 property vpcmov
> +#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
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/property-vpcmov.s
> @@ -0,0 +1,2 @@
> +       .text
> +       vpcmov  %xmm0, %xmm0, %xmm0, %xmm0
>

OK.

Thanks.

-- 
H.J.


More information about the Binutils mailing list