Issue 136209
Summary [X86] Target feature implication mismatch with GCC
Labels new issue
Assignees
Reporter 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](https://github.com/llvm/llvm-project/blob/1756fcb8b0192281db641d2038c03b96015e29d4/llvm/lib/Target/X86/X86.td#L118)).
Also for `avx512fp16`, GCC implies only `avx512bw`, where LLVM also implies `avx512dq` and `avx512vl` (see [here](https://github.com/llvm/llvm-project/blob/1756fcb8b0192281db641d2038c03b96015e29d4/llvm/lib/Target/X86/X86.td#L174)).

`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
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to