public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug bootstrap/111768] New: Bootstrap failure with -march=native on Intel Alder Lake CPUs because of differing cache sizes
@ 2023-10-11 10:11 sjames at gcc dot gnu.org
  2023-10-11 10:11 ` [Bug bootstrap/111768] " sjames at gcc dot gnu.org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: sjames at gcc dot gnu.org @ 2023-10-11 10:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111768

            Bug ID: 111768
           Summary: Bootstrap failure with -march=native on Intel Alder
                    Lake CPUs because of differing cache sizes
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: bootstrap
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sjames at gcc dot gnu.org
  Target Milestone: ---

Please bare with me on this one.

We've had a bunch of reports downstream of bootstrap failures on Intel Alder
Lake CPUs with -march=native:
* https://bugs.gentoo.org/904426
* https://bugs.gentoo.org/908523
* https://bugs.gentoo.org/915389 (this has a bit more detail)

Alder Lake has a big.little architecture.

We end up with:
```
$ diffoscope ./stage2-x86_64-pc-linux-gnu/32/libgcc/eqhf2.o
./stage3-x86_64-pc-linux-gnu/32/libgcc/eqhf2.o
```
[...]
│ -  [    33]  GNU C17 13.2.1 20230826 -march=alderlake -mmmx -mpopcnt -msse
-msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mno-sse4a -mno-fma4 -mno-xop
-mfma -mno-avx512f -mbmi -mbmi2 -maes -mpclmul -mno-avx512vl -mno-avx512bw
-mno-avx512dq -mno-avx512cd -mno-avx512er -mno-avx512pf -mno-avx512vbmi
-mno-avx512ifma -mno-avx5124vnniw -mno-avx5124fmaps -mno-avx512vpopcntdq
-mno-avx512vbmi2 -mgfni -mvpclmulqdq -mno-avx512vnni -mno-avx512bitalg
-mno-avx512bf16 -mno-avx512vp2intersect -mno-3dnow -madx -mabm -mno-cldemote
-mclflushopt -mclwb -mno-clzero -mcx16 -mno-enqcmd -mf16c -mfsgsbase -mfxsr
-mno-hle -msahf -mno-lwp -mlzcnt -mmovbe -mmovdir64b -mmovdiri -mno-mwaitx
-mpconfig -mpku -mno-prefetchwt1 -mprfchw -mptwrite -mrdpid -mrdrnd -mrdseed
-mno-rtm -mserialize -mno-sgx -msha -mshstk -mno-tbm -mno-tsxldtrk -mvaes
-mwaitpkg -mno-wbnoinvd -mxsave -mxsavec -mxsaveopt -mxsaves -mno-amx-tile
-mno-amx-int8 -mno-amx-bf16 -mno-uintr -mhreset -mno-kl -mno-widekl -mavxvnni
-mno-avx512fp16 -mno-avxifma -mno-avxvnniint8 -mno-avxneconvert -mno-cmpccxadd
-mno-amx-fp16 -mno-prefetchi -mno-raoint -mno-amx-complex
--param=l1-cache-size=48 --param=l1-cache-line-size=64
--param=l2-cache-size=24576 -mtune=alderlake -m32 -mlong-double-80 -msse2 -g -g
-g -O2 -O3 -O2 -O2 -O3 -fbuilding-libgcc -fno-stack-protector
-fno-stack-clash-protection -fpic -fvisibility=hidden
│ -  [   578]  _Float16
│ -  [   581]  _FP_UNPACK_RAW_1_flo
│ -  [   596]  long long unsigned int
│ -  [   5ad]  sign
│ -  [   5b2]  _fcw
│ +  [    33]  _Float16
│ +  [    3c]  _FP_UNPACK_RAW_1_flo
│ +  [    51]  long long unsigned int
│ +  [    68]  sign
│ +  [    6d]  _fcw
│ +  [    72]  GNU C17 13.2.1 20230826 -march=alderlake -mmmx -mpopcnt -msse
-msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mno-sse4a -mno-fma4 -mno-xop
-mfma -mno-avx512f -mbmi -mbmi2 -maes -mpclmul -mno-avx512vl -mno-avx512bw
-mno-avx512dq -mno-avx512cd -mno-avx512er -mno-avx512pf -mno-avx512vbmi
-mno-avx512ifma -mno-avx5124vnniw -mno-avx5124fmaps -mno-avx512vpopcntdq
-mno-avx512vbmi2 -mgfni -mvpclmulqdq -mno-avx512vnni -mno-avx512bitalg
-mno-avx512bf16 -mno-avx512vp2intersect -mno-3dnow -madx -mabm -mno-cldemote
-mclflushopt -mclwb -mno-clzero -mcx16 -mno-enqcmd -mf16c -mfsgsbase -mfxsr
-mno-hle -msahf -mno-lwp -mlzcnt -mmovbe -mmovdir64b -mmovdiri -mno-mwaitx
-mpconfig -mpku -mno-prefetchwt1 -mprfchw -mptwrite -mrdpid -mrdrnd -mrdseed
-mno-rtm -mserialize -mno-sgx -msha -mshstk -mno-tbm -mno-tsxldtrk -mvaes
-mwaitpkg -mno-wbnoinvd -mxsave -mxsavec -mxsaveopt -mxsaves -mno-amx-tile
-mno-amx-int8 -mno-amx-bf16 -mno-uintr -mhreset -mno-kl -mno-widekl -mavxvnni
-mno-avx512fp16 -mno-avxifma -mno-avxvnniint8 -mno-avxneconvert -mno-cmpccxadd
-mno-amx-fp16 -mno-prefetchi -mno-raoint -mno-amx-complex
--param=l1-cache-size=32 --param=l1-cache-line-size=64
--param=l2-cache-size=24576 -mtune=alderlake -m32 -mlong-double-80 -msse2 -g -g
-g -O2 -O3 -O2 -O2 -O3 -fbuilding-libgcc -fno-stack-protector
-fno-stack-clash-protection -fpic -fvisibility=hidden
[...]
```

$ wdiff /tmp/a /tmp/b
<d>   DW_AT_producer    : (strp) (offset: [-0x33):-] {+0x72):+} GNU C17 13.2.1
20230826 -march=alderlake -mmmx -mpopcnt -msse -msse3 -mssse3 -msse4.1 -msse4.2
-mavx -mavx2 -mno-sse4a -mno-fma4 -mno-xop -mfma -mno-avx512f -mbmi -mbmi2
-maes -mpclmul -mno-avx512vl -mno-avx512bw -mno-avx512dq -mno-avx512cd
-mno-avx512er -mno-avx512pf -mno-avx512vbmi -mno-avx512ifma -mno-avx5124vnniw
-mno-avx5124fmaps -mno-avx512vpopcntdq -mno-avx512vbmi2 -mgfni -mvpclmulqdq
-mno-avx512vnni -mno-avx512bitalg -mno-avx512bf16 -mno-avx512vp2intersect
-mno-3dnow -madx -mabm -mno-cldemote -mclflushopt -mclwb -mno-clzero -mcx16
-mno-enqcmd -mf16c -mfsgsbase -mfxsr -mno-hle -msahf -mno-lwp -mlzcnt -mmovbe
-mmovdir64b -mmovdiri -mno-mwaitx -mpconfig -mpku -mno-prefetchwt1 -mprfchw
-mptwrite -mrdpid -mrdrnd -mrdseed -mno-rtm -mserialize -mno-sgx -msha -mshstk
-mno-tbm -mno-tsxldtrk -mvaes -mwaitpkg -mno-wbnoinvd -mxsave -mxsavec
-mxsaveopt -mxsaves -mno-amx-tile -mno-amx-int8 -mno-amx-bf16 -mno-uintr
-mhreset -mno-kl -mno-widekl -mavxvnni -mno-avx512fp16 -mno-avxifma
-mno-avxvnniint8 -mno-avxneconvert -mno-cmpccxadd -mno-amx-fp16 -mno-prefetchi
-mno-raoint -mno-amx-complex [---param=l1-cache-size=48-]
{+--param=l1-cache-size=32+} --param=l1-cache-line-size=64
--param=l2-cache-size=24576 -mtune=alderlake -m32 -mlong-double-80 -msse2 -g -g
-g -O2 -O3 -O2 -O2 -O3 -fbuilding-libgcc -fno-stack-protector
-fno-stack-clash-protection -fpic -fvisibility=hidden

We have two differences:
* the offset (let's ignore that)
* l1 cache size: [---param=l1-cache-size=48-] {+--param=l1-cache-size=32+}

All affected users have been able to workaround it by just using a constant
expansion of -march=native, and users who have run the expansion repeatedly to
check the results see occasional =32 popping up.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-10-12 13:23 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-11 10:11 [Bug bootstrap/111768] New: Bootstrap failure with -march=native on Intel Alder Lake CPUs because of differing cache sizes sjames at gcc dot gnu.org
2023-10-11 10:11 ` [Bug bootstrap/111768] " sjames at gcc dot gnu.org
2023-10-11 13:02 ` [Bug target/111768] X86: -march=native does not support alder lake big.little cache infor correctly pinskia at gcc dot gnu.org
2023-10-11 13:26 ` rguenth at gcc dot gnu.org
2023-10-11 13:55 ` crazylht at gmail dot com
2023-10-11 14:13 ` amonakov at gcc dot gnu.org
2023-10-12  6:32 ` arsen at gcc dot gnu.org
2023-10-12  6:59 ` amonakov at gcc dot gnu.org
2023-10-12  9:45 ` arsen at gcc dot gnu.org
2023-10-12  9:55 ` amonakov at gcc dot gnu.org
2023-10-12 10:49 ` crazylht at gmail dot com
2023-10-12 11:25 ` amonakov at gcc dot gnu.org
2023-10-12 11:32 ` rguenth at gcc dot gnu.org
2023-10-12 13:23 ` stormbyte at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).