llvm-project/llvm/benchmarks/GetIntrinsicForClangBuiltin.cpp
Luke Drummond 9d98acb196 Renormalize line endings whitespace only after dccebddb3b80
Line ending policies were changed in the parent, dccebddb3b80. To make
it easier to resolve downstream merge conflicts after line-ending
policies are adjusted this is a separate whitespace-only commit. If you
have merge conflicts as a result, you can simply `git add --renormalize
-u && git merge --continue` or `git add --renormalize -u && git rebase
--continue` - depending on your workflow.
2024-10-17 14:49:26 +01:00

51 lines
1.5 KiB
C++

#include "benchmark/benchmark.h"
#include "llvm/IR/Intrinsics.h"
using namespace llvm;
using namespace Intrinsic;
// Benchmark intrinsic lookup from a variety of targets.
static void BM_GetIntrinsicForClangBuiltin(benchmark::State &state) {
static const char *Builtins[] = {
"__builtin_adjust_trampoline",
"__builtin_trap",
"__builtin_arm_ttest",
"__builtin_amdgcn_cubetc",
"__builtin_amdgcn_udot2",
"__builtin_arm_stc",
"__builtin_bpf_compare",
"__builtin_HEXAGON_A2_max",
"__builtin_lasx_xvabsd_b",
"__builtin_mips_dlsa",
"__nvvm_floor_f",
"__builtin_altivec_vslb",
"__builtin_r600_read_tgid_x",
"__builtin_riscv_aes64im",
"__builtin_s390_vcksm",
"__builtin_ve_vl_pvfmksge_Mvl",
"__builtin_ia32_axor64",
"__builtin_bitrev",
};
static const char *Targets[] = {"", "aarch64", "amdgcn", "mips",
"nvvm", "r600", "riscv"};
for (auto _ : state) {
for (auto Builtin : Builtins)
for (auto Target : Targets)
getIntrinsicForClangBuiltin(Target, Builtin);
}
}
static void
BM_GetIntrinsicForClangBuiltinHexagonFirst(benchmark::State &state) {
// Exercise the worst case by looking for the first builtin for a target
// that has a lot of builtins.
for (auto _ : state)
getIntrinsicForClangBuiltin("hexagon", "__builtin_HEXAGON_A2_abs");
}
BENCHMARK(BM_GetIntrinsicForClangBuiltin);
BENCHMARK(BM_GetIntrinsicForClangBuiltinHexagonFirst);
BENCHMARK_MAIN();