https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108279
--- Comment #11 from Michael_S <already5chosen at yahoo dot com> --- (In reply to Thomas Koenig from comment #9) > Created attachment 54273 [details] > matmul_r16.i > > Here is matmul_r16.i from a relatively recent trunk. Thank you. Unfortunately, I was not able to link it with main in Fortran. So, I still only have to guess why even after replacement of __multf3 and __addtf3 by my implementations it is still more than twice slower (on Zen3) then what it should be. Looking at source and assuming that inner loop starts at line 8944, this loop looks very strange, but apart from bad programming style and apart from misunderstanding of what is optimal scheduling there is nothing criminal about it. May be, because of wrong scheduling, it is 10-15% slower than the best, but certainly it should not be 2.4 times slower that I am seeing. That's what I got from linker: /usr/bin/ld: matmul_r16.o: warning: relocation against `_gfortrani_matmul_r16_avx128_fma3' in read-only section `.text' /usr/bin/ld: matmul_r16.o: in function `matmul_r16_avx': matmul_r16.c:(.text+0x48): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x342): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x10e4): undefined reference to `_gfortrani_size0' /usr/bin/ld: matmul_r16.c:(.text+0x10f1): undefined reference to `_gfortrani_xmallocarray' /usr/bin/ld: matmul_r16.c:(.text+0x12e5): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x13a9): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x13e7): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.o: in function `matmul_r16_avx2': matmul_r16.c:(.text+0x24c8): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x27c2): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x3564): undefined reference to `_gfortrani_size0' /usr/bin/ld: matmul_r16.c:(.text+0x3571): undefined reference to `_gfortrani_xmallocarray' /usr/bin/ld: matmul_r16.c:(.text+0x3765): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x3829): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x3867): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.o: in function `matmul_r16_avx512f': matmul_r16.c:(.text+0x4948): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x4c47): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x5a32): undefined reference to `_gfortrani_size0' /usr/bin/ld: matmul_r16.c:(.text+0x5a3f): undefined reference to `_gfortrani_xmallocarray' /usr/bin/ld: matmul_r16.c:(.text+0x5c35): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x5cfb): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x5d35): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.o: in function `matmul_r16_vanilla': matmul_r16.c:(.text+0x6de8): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x70e2): undefined reference to `_gfortrani_compile_options' /usr/bin/ld: matmul_r16.c:(.text+0x7e84): undefined reference to `_gfortrani_size0' /usr/bin/ld: matmul_r16.c:(.text+0x7e91): undefined reference to `_gfortrani_xmallocarray' /usr/bin/ld: matmul_r16.c:(.text+0x8085): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x8149): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.c:(.text+0x8187): undefined reference to `_gfortrani_runtime_error' /usr/bin/ld: matmul_r16.o: in function `_gfortran_matmul_r16': matmul_r16.c:(.text+0x92b7): undefined reference to `_gfortrani_matmul_r16_avx128_fma3' /usr/bin/ld: matmul_r16.c:(.text+0x92ea): undefined reference to `_gfortrani_matmul_r16_avx128_fma4' /usr/bin/ld: warning: creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status