Hi all,

It is a little late for this change but I hope this will be a welcoming
change since it will greatly simplify the compiler options and reduce
confusion for AVX10 option combination with AVX512.

AVX10 whitepaper just got a major change and it will impact how we design
the compiler option, which will actually simplify everything.

Ref: https://cdrdv2.intel.com/v1/dl/getContent/784343

In this new whitepaper, all the platforms will support 512 bit vector
width (previously, E-core is up to 256 bit, leading to hybrid clients
and Atom Server 256 bit only). Also, 256 bit rounding is not that useful
because we currently have rounding feature directly on E-core now and no
need to use 256-bit rounding as somehow a workaround. HW will remove that
support.

Thus, there is no need to add avx10.x-256/512 into compiler options. A
simple avx10.x supporting all vector length is all we need. The change also
makes -mno-evex512 not that useful. It is introduced with avx10.1-256 for
compiling 256 bit only binary on legacy platforms to have a partial trial
for avx10.x-256. What we also need to do is to remove 256 bit rounding.

For new features added in GCC 15 (i.e., option avx10.2-256/512 and 256
bit rounding), we will just simply remove them. Since avx10.2 has been
directed to 512 bit previously. No need to change that option. We will
keep the testcase and intrin file structure for now since it is late
in GCC 15 release cycle and do clean up in GCC 16.

For features added in GCC 14 (i.e., option avx10.1-256/512 and no-evex512),
we will raise a deprecate warning in GCC 15 and finally remove them in
GCC 16. Also, we will need to add avx10.1 back (it was removed just less
than one month ago) and direct it to 512 bit with a warning in GCC 15 since
it was aliased to 256 bit previously. The deprecate and re-alias warning
would also like to be backported to GCC 14 and landed into GCC 14.3.

The change will also lead to AVX10 and AVX512 option combination design
simplification. Since we do not need to consider vector width enabled
anymore, it is much more natural to just treat avx10.1 to an alias of
all avx512xxx in SPR. Thus, "-mavx10.1 -mno-avx512fp16" should enable
all AVX512 features while disabling AVX512FP16. And "-mavx512f -mno-avx10.1"
should disable all AVX512 features. Both of the two combinations currently
will ignore "-mno-". In GCC 15, we will raise a warning to mention that we
are going to change that behavior in GCC 16.

Upcoming would be the patches we want to landed in GCC 15. The first two
patches are removing 256 bit roundings added with AVX10.2 new instructions.
Then the following 22 are simple revert patch for the legacy instruction
256 bit ymm rounding addition. The last three patch is for avx10.x option
change.

Thx,
Haochen


Reply via email to