[all-commits] [llvm/llvm-project] 581952: TableGen: Emit perfect hash function for runtime l...
Matt Arsenault via All-commits
all-commits at lists.llvm.org
Sun Jul 27 17:52:48 PDT 2025
Branch: refs/heads/users/arsenm/tablegen/emit-perfect-hash-table-runtime-libcalls
Home: https://github.com/llvm/llvm-project
Commit: 581952306fa7e63d9172faed1b8ac905c41d7547
https://github.com/llvm/llvm-project/commit/581952306fa7e63d9172faed1b8ac905c41d7547
Author: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: 2025-07-28 (Mon, 28 Jul 2025)
Changed paths:
M llvm/benchmarks/CMakeLists.txt
A llvm/benchmarks/RuntimeLibcalls.cpp
M llvm/include/llvm/IR/RuntimeLibcalls.h
M llvm/lib/IR/RuntimeLibcalls.cpp
M llvm/lib/Object/IRSymtab.cpp
M llvm/test/TableGen/RuntimeLibcallEmitter.td
M llvm/unittests/IR/CMakeLists.txt
A llvm/unittests/IR/RuntimeLibcallsTest.cpp
M llvm/utils/TableGen/Basic/RuntimeLibcallsEmitter.cpp
Log Message:
-----------
TableGen: Emit perfect hash function for runtime libcalls
a96121089b9c94e08c6632f91f2dffc73c0ffa28 reverted a change
to use a binary search on the string name table because it
was too slow. This replaces it with a static string hash
table based on the known set of libcall names. Microbenchmarking
shows this is similarly fast to using DenseMap. It's possibly
slightly slower than using StringSet, though these aren't an
exact comparison. This also saves on the one time use construction
of the map, so it could be better in practice.
This search isn't simple set check, since it does find the
range of possible matches with the same name. There's also
an additional check for whether the current target supports
the name. The runtime constructed set doesn't require this,
since it only adds the symbols live for the target.
Followed algorithm from this post
http://0x80.pl/notesen/2023-04-30-lookup-in-strings.html
I'm also thinking the 2 special case global symbols should
just be added to RuntimeLibcalls. There are also other global
references emitted in the backend that aren't tracked; we probably
should just use this as a centralized database for all compiler
selected symbols.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list