Skip to content

[X86] Target feature implication mismatch with GCC #136209

Closed
@sayantn

Description

@sayantn

There is a mismatch between which other features avx512f and avx512fp16 imply.

For avx512f, GCC implies only avx2, where LLVM also implies fma and f16c(see here).
Also for avx512fp16, GCC implies only avx512bw, where LLVM also implies avx512dq and avx512vl (see here).

gcc -mavx512f -Q --help=target | grep enabled

  -m128bit-long-double                  [enabled]
  -m64                                  [enabled]
  -m80387                               [enabled]
  -malign-stringops                     [enabled]
  -mavx                                 [enabled]
  -mavx2                                [enabled]
  -mavx512f                             [enabled]
  -mcrc32                               [enabled]
  -mdirect-extern-access                [enabled]
  -mevex512                             [enabled]
  -mfancy-math-387                      [enabled]
  -mfp-ret-in-387                       [enabled]
  -mfxsr                                [enabled]
  -mglibc                               [enabled]
  -mhard-float                          [enabled]
  -mieee-fp                             [enabled]
  -mlong-double-80                      [enabled]
  -mmmx                                 [enabled]
  -mmwait                               [enabled]
  -mpartial-vector-fp-math              [enabled]
  -mpopcnt                              [enabled]
  -mpush-args                           [enabled]
  -mred-zone                            [enabled]
  -msse                                 [enabled]
  -msse2                                [enabled]
  -msse3                                [enabled]
  -msse4                                [enabled]
  -msse4.1                              [enabled]
  -msse4.2                              [enabled]
  -mssse3                               [enabled]
  -mstv                                 [enabled]
  -mtls-direct-seg-refs                 [enabled]
  -mxsave                               [enabled]

gcc -mavx512fp16 -Q --help=target | grep enabled

  -m128bit-long-double                  [enabled]
  -m64                                  [enabled]
  -m80387                               [enabled]
  -malign-stringops                     [enabled]
  -mavx                                 [enabled]
  -mavx2                                [enabled]
  -mavx512bw                            [enabled]
  -mavx512f                             [enabled]
  -mavx512fp16                          [enabled]
  -mcrc32                               [enabled]
  -mdirect-extern-access                [enabled]
  -mevex512                             [enabled]
  -mfancy-math-387                      [enabled]
  -mfp-ret-in-387                       [enabled]
  -mfxsr                                [enabled]
  -mglibc                               [enabled]
  -mhard-float                          [enabled]
  -mieee-fp                             [enabled]
  -mlong-double-80                      [enabled]
  -mmmx                                 [enabled]
  -mmwait                               [enabled]
  -mpartial-vector-fp-math              [enabled]
  -mpopcnt                              [enabled]
  -mpush-args                           [enabled]
  -mred-zone                            [enabled]
  -msse                                 [enabled]
  -msse2                                [enabled]
  -msse3                                [enabled]
  -msse4                                [enabled]
  -msse4.1                              [enabled]
  -msse4.2                              [enabled]
  -mssse3                               [enabled]
  -mstv                                 [enabled]
  -mtls-direct-seg-refs                 [enabled]
  -mxsave                               [enabled]

gcc --version

gcc (GCC) 14.2.1 20250207
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I do not know what Intel specifies about implies features, but I believe this mismatch needs to be corrected.

related: rust-lang/rust#138940
related: rust-lang/rust#111137

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:X86questionA question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions