Closed issue by gt7-void on void-packages repository https://github.com/void-linux/void-packages/issues/29604 Description: The cpu is a [xeon E5520](https://ark.intel.com/content/www/us/en/ark/products/40200/intel-xeon-processor-e5520-8m-cache-2-26-ghz-5-86-gt-s-intel-qpi.html) (nehalem EP) The following short program shows the issue: ``` #include "cblas.h" int main () { double a[4] = {1.,2.,3.,4.}; double b[4] = {4.,3.,2.,1.}; double c[4]; cblas_dgemm(CblasRowMajor, CblasNoTrans,CblasNoTrans,2,2,2,1., a,2,b,2,0.,c,2); if ( (c[0]!=8.) && (c[1]!=5.) && (c[2]!=20.) && (c[3]!=13)) return -1; else return 0; } ``` Compile and run with ``` $ gcc test-blas.c -I /usr/include/openblas -lopenblas -o test-blas $ ./test-blas Illegal instruction ``` debugging shows the fault is in `cblas_dgemm ()` from `/usr/lib/libopenblas.so.0`, more precisely at `cblas_dgemm+20`: ``` 0x00007ffff6427d80 <+0>: push %r15 0x00007ffff6427d82 <+2>: mov %edx,%r10d 0x00007ffff6427d85 <+5>: push %r14 0x00007ffff6427d87 <+7>: push %r13 0x00007ffff6427d89 <+9>: push %r12 0x00007ffff6427d8b <+11>: push %rbp 0x00007ffff6427d8c <+12>: push %rbx 0x00007ffff6427d8d <+13>: sub $0xa8,%rsp => 0x00007ffff6427d94 <+20>: vmovsd %xmm0,0x8(%rsp) 0x00007ffff6427d9a <+26>: mov 0xe0(%rsp),%rdx 0x00007ffff6427da2 <+34>: mov 0xf0(%rsp),%r11 0x00007ffff6427daa <+42>: vmovsd %xmm1,(%rsp) 0x00007ffff6427daf <+47>: mov 0x100(%rsp),%rax 0x00007ffff6427db7 <+55>: mov %fs:0x28,%rbx ``` Instruction is `vmovsd` -- I guess not available in this cpu (how would I know? is this avx? if so, how did this instruction end up there?) Here are my cpuflags (no avx): ``` Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx rdtscp lm con stant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pd cm dca sse4_1 sse4_2 popcnt lahf_lm pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid dtherm ida flush_l1d ``` The second oldest machine I have available at this time is sandy bridge E (i7-3930K), which does have `avx` and the program above runs ok.