From 70e1e94dc87b86cf778691e2571c81ca3740f782 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Tue, 3 Nov 2020 01:02:46 +0000 Subject: [PATCH] bench: indirect call benchmark --- test/benchmarks/micro/icall_hash.c | 27 ++++++++++++++++++++++++ test/benchmarks/micro/icall_hash.inputs | 7 ++++++ test/benchmarks/micro/icall_hash.wasm | Bin 0 -> 262 bytes 3 files changed, 34 insertions(+) create mode 100644 test/benchmarks/micro/icall_hash.c create mode 100644 test/benchmarks/micro/icall_hash.inputs create mode 100755 test/benchmarks/micro/icall_hash.wasm diff --git a/test/benchmarks/micro/icall_hash.c b/test/benchmarks/micro/icall_hash.c new file mode 100644 index 000000000..4dc755179 --- /dev/null +++ b/test/benchmarks/micro/icall_hash.c @@ -0,0 +1,27 @@ +#include + +#define WASM_EXPORT __attribute__((visibility("default"))) + +static uint64_t fnv1(uint64_t state, uint64_t input) +{ + return (state ^ input) * 0x100000001b3; +} + +static uint64_t threeab(uint64_t state, uint64_t input) +{ + return (3 * state) + input; +} + +typedef uint64_t (*hashfn)(uint64_t state, uint64_t input); + +static hashfn fns[] = {fnv1, threeab}; + +WASM_EXPORT unsigned icall(unsigned steps) +{ + uint64_t input = 0x1234567890abcdef; + + uint64_t state = 0xcbf29ce484222325; + for (unsigned i = 0; i < steps; i++) + state = fns[i % 2](state, input); + return state; +} diff --git a/test/benchmarks/micro/icall_hash.inputs b/test/benchmarks/micro/icall_hash.inputs new file mode 100644 index 000000000..b64cf0800 --- /dev/null +++ b/test/benchmarks/micro/icall_hash.inputs @@ -0,0 +1,7 @@ +1000_steps +icall +i:i +1000 + +3242341221 + diff --git a/test/benchmarks/micro/icall_hash.wasm b/test/benchmarks/micro/icall_hash.wasm new file mode 100755 index 0000000000000000000000000000000000000000..7bfba64a6827b663924433834006a0bc8cd608b9 GIT binary patch literal 262 zcmXw!F-yZx6ot>dH>oj~5)|BDoLu}5eF1Us2RObyZ9q$-)fQBcmw*)F=Hj9*4${%V z{~&Ju6lXWn!Rf#`hr@T^XB7dUOoki+g&{Dcnrew7VjzlXN+PikxVI%W*@rgL8voKJ zy0#m|r^kLW0rje~I={SOsBLOBa^swn@f2j13?sgOxkp=KVg@&@xlI j+PKyXrVAIv$6eDjCTI$SLV}@N)vQBk675KU?j-&ICki)| literal 0 HcmV?d00001