<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/71226>71226</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Not all Skylake CPUs support AVX
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
clausecker
</td>
</tr>
</table>
<pre>
@blastwave reported `clang -march=native` (on clang 14.0.5 as shipped with FreeBSD) generating binaries that wouldn't work on the host they were compiled on. The CPU reports itself as (in FreeBSD's dmesg output):
```
CPU: Intel(R) Pentium(R) CPU G4500 @ 3.50GHz (3500.00-MHz K8-class CPU)
Origin="GenuineIntel" Id=0x506e3 Family=0x6 Model=0x5e Stepping=3
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0x4ffaebbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,RDRAND>
AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
AMD Features2=0x121<LAHF,ABM,Prefetch>
Structured Extended Features=0x2942607<FSGSBASE,TSCADJ,SGX,ERMS,INVPCID,NFPUSG,RDSEED,SMAP,CLFLUSHOPT,PROCTRACE>
Structured Extended Features3=0xc000000<IBPB,STIBP>
XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID
TSC: P-state invariant, performance statistics
```
This is a Skylake CPU without AVX support. Clang [detects](https://github.com/llvm/llvm-project/blob/284c6990c133ed88f32de111accacc9f55a7a51d/llvm/lib/TargetParser/Host.cpp#L767) it as type `skylake` and thus enables AVX, but that is not supported.
The following code, when compiled with `-march=native` triggers the bug:
```
#include <stdio.h>
int main()
{
printf("%f\n", 1.0);
}
```
Please fix the `-march=native` logic to take this possibility into account.
## Additional details
```
esther$ uname -apKU
FreeBSD esther 13.2-RELEASE-p4 FreeBSD 13.2-RELEASE-p4 GENERIC amd64 amd64 1302001 1302001
esther$ freebsd-version -kru
13.2-RELEASE-p4
13.2-RELEASE-p4
13.2-RELEASE-p4
esther$ sysctl hw.model
hw.model: Intel(R) Pentium(R) CPU G4500 @ 3.50GHz
esther$ cat foo.c
#include <stdio.h>
int main() {
printf("%f\n", 1.0);
return 0;
}
esther$ cc -std=iso9899:1999 -m64 -O3 -ffast-math -ffp-contract=on -march=native -mtune=native -mfma -S -o foo.s foo.c
esther$ cat foo.s
.text
.file "foo.c"
.section .rodata.cst8,"aM",@progbits,8
.p2align 3 # -- Begin function main
.LCPI0_0:
.quad 0x3ff0000000000000 # double 1
.text
.globl main
.p2align 4, 0x90
.type main,@function
main: # @main
.cfi_startproc
# %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
vmovsd .LCPI0_0(%rip), %xmm0 # xmm0 = mem[0],zero
movl $.L.str, %edi
movb $1, %al
callq printf
xorl %eax, %eax
popq %rbp
.cfi_def_cfa %rsp, 8
retq
.Lfunc_end0:
.size main, .Lfunc_end0-main
.cfi_endproc
# -- End function
.type .L.str,@object # @.str
.section .rodata.str1.1,"aMS",@progbits,1
.L.str:
.asciz "%f\n"
.size .L.str, 4
.ident "FreeBSD clang version 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc12386ae247c)"
.section ".note.GNU-stack","",@progbits
.addrsig
esther$ cc -o foo foo.s
esther$ ./foo
Illegal instruction (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycWF9zozgS_zTKSxeUEOA_D3mwsZ341k68wUnNPU0JaLBuMGKQSJz59FcSkDhOdu52qZQspP7761a3CFdKFBXiNQnnJFxc8VYfZHOdlrxVmP7A5iqR2es1CWhScqVf-DNCg7VsNGZARjQteVWAc-RNeiD-ouJaPCMZUSBsIivotr3ApW4IXIE6iLrGDF6EPsCqQZzHC8KmUGCFDdeiKiARFW8EKtAHruFFtmVWETY20-YHyAr0AeEglTaTV3jBBiGVx1qUmIGsXID9ASHaPfZ2KhBaYZkb9YRNRPWud6wgO6IqQLa6bjVhU-LPCF0QOowj2v_Z12j3SPwZrCuNJWGTB2P5Dist2uPwavTeBCGlQAIKvhvSm9tfRq8fUupS6mxvf8EfEyctuVKG2ii1wgHuG1GIivgLwtgNVq2osFfFANYZ8Rf0FNIR-rDiR1G-2oURwFZmWHa7CBBrrGtRFcRf-L3kFXLdNqgsTZJjkid5TvxoZdRHT9slYdHCDLvYjPs4Iizaxg9mZWZWtpEZo28TwqLZbm224-XObOwfLNVNRzUzVNv7J8u47wT6I7O4WW0e41ujZx8bIdFubTi23wiLVt-sqtgqj-Mlsz-ERbd7I2O_NYLmS-IvL_xh1qEgzzkmiXEojpe-IY4228fNn4s_rb5lPAqMrvs78xp_j3Yb67VRvYw7DZ3KjjtezG-st56x_LTfWQ8XkTUjWi86IwPXGyaG-cR6XLb3T3ML5f0uutt3aC42ZjJbxnfG6W_x7MlQ3MfD7GHxMLtbvPs32y4-xoylHqUTSo2L_46j2cZ4cGcc2PECvZu5FbKPIxOTzfZd0gdRHVwe84gfbWa3K2PT3HrVYI7aHOA3vlg3bWq4MlieNFYZZhcmTQM2omOTRfFNPJ8NmTNb_MvgcmPRfdiaMK7vnnrc7la7x_jGGhsvlxbJ7Wz3nh_3O5s0D_fR_mEWnUX8d-b41p6U2of40Xq-M3jE-_V8d-aRBfujDyZl7HKn105NDL-t7x6tP3YlPhPytHdOpgR02X1r47rdr2y-dyxLK-rROPm0Wy8GRnOmDJ-jNNcIonrmjeCVJiyCGptcNkdepQhmWygtUvVlBerG_UEoEAo4xD9eS_6jK3empspWw-zpG6i2NrXPBYhsBSbhPEONqVYkXBA2OWhdK1Ps2IqwVSH0oU3cVB4JW5Xl8_Dj1I38D6aasFVSyoSwFZsE6Wg6pann-5hNJrnPMvQ8j6cpT9NpHoZ8zEMvO5MjDN-eNwXqHW8UNoStbqXSblrXhPmb8WhsCqfQpkDr1xpNW1GdX6aR8CoDfWgVYMWTEpXxz6CWtLprEUJBJfXgMmbuR6gQclmW8sX0llRmaHhfDli9Nw3bjMiIftHFdCOKAhtlm07SFr_vD4T5okrLNkMgfqR0JqT7fqi6UVQajlxUhE3eSj8Zz_s8qRtR6dzuMcLCnIRRZacReC61DWo-8Cx-kyG7ErlCyMXJWv61c6UsRApagjYppE1S1VIpkYhS6FcQlZbA01S2lf6AKWE-YT7MskxoISteQoaai1L9BhpU-mBCH0Bb8SOCw-s_HqHb6_sxdDTg-S5zHpab5SxeOnUwtOtP6zfLu-XDOgJ-zEZBP3o-ZZR6w--l7rxBTFTmPGOjhKzA-dG0vREX0v_u4rsO9apSXcLhxT2avtyLH17_0f3hUkXKNeRSuin8P3n3MePgnyQbNKjbpgL6vvKWf2dmpeAobe4pQsnpZGpuU950OgXnOArAuffByXOutHPk-mDmtZPKSjc81cRfmHB8zFFwjrqt8Pw9P3JwYnCk9V91KPwVPAqG6ts9rsaTvljKRYkAQBjrRDHWE7gKU5Pdb5SNzLjmbqq0uQURxvi2A4sEtG5kkQitCIsmFwpqxktRVODD7x9zohwH5liICvK26pTbuFmB7ibarel3-laBwP3Z8gwA6MnPc3r-fJacyTYpEbyB9QskilImJZxp_ORC_5jLFNDTlL4JM0W757RwDOZ3BHbdn_0P_wdLSUDPTHDTXHxXmje6bmT6lu1AWJgk7hkY_VO36vDTSgqbpD4XkmH-Pc35d5nnCjV4owsnDU2_1zOzCJxLsqN8_mn3ld3_oOZc0qCtwUIojc2XlM9H-awyeIusOYhhI2pz8jrhp-ORXuBjl4i_gCMeSTintp9Hv7CRnywtgbDA3bhKN708zMQnqqSTHHg9DS8_kqS8LA2kfbXo9k6yKTu-EPlpkM5PF9GQ9U-4jMYXMJ0henF8GtQ_h_w3WfUdq-xz1F0lfp1lIJzROl_ks9GMVfaeUcPhW1YZfMzdN54-x9_QJAGVibkb_WUWW8ILM_uSMtQSpRvPfkbYahJ_VU68wXsr7pPjXKXCfF5-qN9fYvOeB8F5m34jExlW2hbCod923-5Dq-y_4f_23dEthAazIJvC6YQ41ClSj_mTEUcWjFOb75_M7rEijLmV1Oje3D2ay3P6o4fJjJd4XYCTZY0SxVdtyvaPrklcbruErXLZn6Z1WWLBSxCVsl8gnUWTVDYIWXusMXu_xA0Xnqvs2s-m_pRf4bVnLsuBT0f06nA9TdMJhl42ZqMszHI_zbIx9ak3HnMPR1l4Ja4ZZb7nUZ9RFngT16cYJmFI88z3As4pCSgeuShdA6grm-JKKNXi9dhjbHRV8gRLZf-Tw1iFL2A3DUrh4qq5tlFJ2kKRgJZCafUuRQtd4vWd1MDL8vyjQg3XanPrvmqb8vpvfzlYIxRhK2vkfwMAAP__0CEpLw">