mirror of
https://github.com/amd/blis.git
synced 2026-06-28 18:27:08 +00:00
Changes to fix errors and warnings when using gcc 16.1.0: - Copy changes from 5c2b22da81 in upstream BLIS to extend disabling of tree-vectorization in affected kernels to gcc 16 and later. - Remove unused variables in bli_packm_blk_var1_md.c and bli_util_unb_var1.c to fix warning messages. Background bp (base pointer) is the %rbp/%ebp register on x86/x86-64. Inline assembly kernels in BLIS use asm volatile blocks where they manually manage registers - including saving and restoring bp themselves to use it as a general-purpose register for holding loop counters or matrix pointers. When GCC's tree-vectorizer (specifically the superword-level parallelism (SLP) pass) runs on a translation unit containing inline asm, it can generate code that itself needs bp as a frame pointer or in the vectorized prologue/epilogue. At that point GCC internally marks bp as unavailable and then, when it tries to compile the inline asm block that also references bp, it throws an error. As a workaround, disabling tree vectorization for the entire file removes the conflict - with no vectorizer-generated code, bp stays free for the inline asm.