mirror of https://github.com/qt/qtbase.git
It wasn't getting inlined in aeshash256_lt32_avx256() (used by VAES + AVX512VL variant) due to a GCC __attribute__((target())) mismatch, causing a major loss of performance compared to the VAES + AVX2 variant. Comparing the throughput after this fix on an Intel Core i7-1165G7 (Tiger Lake) laptop, with qHashBits modified to statically select either [A] aeshash256() or [B] aeshash256_avx256(), out of 5 runs: dictionary numbers paths-small uuids longstrings A/B (avg) 103.7% 101.1% 103.5% 104.5% 100.3% A/B (best) 103.4% 100.9% 103.2% 103.6% 100.8% Considering that a string representation of a UUID is 37 characters (74 bytes), neither "uuids" nor "longstrings" are directly affected by this change. However, the overhead does change, with the aeshash256_avx256() needing slightly fewer instructions to reach aeshash256_ge32(). Benchmarking on an Intel Xeon Scalable 4th Generation (Sapphire Rapids), the "uuids" data set has a 10% performance loss for some reason. Pick-to: 6.5 Change-Id: I50e2158aeade4256ad1dfffd17b1b105d3cab482 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit |
||
---|---|---|
.github/workflows | ||
LICENSES | ||
bin | ||
cmake | ||
coin | ||
config.tests | ||
dist | ||
doc | ||
examples | ||
lib | ||
libexec | ||
mkspecs | ||
qmake | ||
src | ||
tests | ||
util | ||
.cmake.conf | ||
.gitattributes | ||
.gitignore | ||
.lgtm.yml | ||
.tag | ||
CMakeLists.txt | ||
config_help.txt | ||
configure | ||
configure.bat | ||
configure.cmake | ||
dependencies.yaml | ||
qt_cmdline.cmake | ||
sync.profile |