Just a note: I quickly looked at their userspace binaries and nowhere I found insns like sh1add
or ror
, and while latter is not required to appear in ordinary code (it usually good for cryptography), the former is additional bonus. Also, their .comment
sections suggest they just used quite dated GCC and probably default CFLAGS were applied.
Some digging reveals things like:
$ strings -a staging/usr/lib/libfftb.a | fgrep march=
GNU C99 10.3.0 -march=rv64imafd -mabi=lp64d -g -O2 -std=gnu99 -fstack-protector-strong -flto -fno-strict-aliasing -fPIC
'-fno-openmp' '-fno-openacc' '-fcf-protection=none' '-g' '-march=rv64imafd' '-mabi=lp64d' '-O2' '-Wno-error=implicit-fallthrough' '-fstack-protector-strong' '-flto' '-fno-strict-aliasing' '-fdiagnostics-show-option' '-fPIC'
Looking at disassembly of any library there, I suspect these were applied, because literally no any library uses C
extension compressed instructions - all instructions are of static 32bit length, as per -march=rv64imafd
.
Pretty generic, if you’ll ask me.
Summary: with source code drop, hoping GPU will perform better when being built with recent GCC with suitable platform C{,XX}FLAGS or clang.