Add double shufti to the benchmark

Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
This commit is contained in:
Yoan Picchi 2024-11-05 15:59:19 +00:00
parent 5145b6d2ab
commit 5853cd39d2
2 changed files with 26 additions and 0 deletions

View File

@ -175,6 +175,31 @@ int main(){
});
}
for (size_t i = 0; i < std::size(sizes); i++) {
MicroBenchmark bench("Double Shufti", sizes[i]);
run_benchmarks(
sizes[i], MAX_LOOPS / sizes[i], matches[m], false, bench,
[&](MicroBenchmark &b) {
ue2::shuftiBuildMasks(b.chars, reinterpret_cast<u8 *>(&b.lo), reinterpret_cast<u8 *>(&b.hi));
b.chars.clear();
ue2::flat_set<std::pair<u8, u8>> pattern;
pattern.insert({'a', 'b'});
ue2::shuftiBuildDoubleMasks(b.chars, pattern,
reinterpret_cast<u8 *>(&b.truffle_mask_lo),
reinterpret_cast<u8 *>(&b.truffle_mask_hi),
reinterpret_cast<u8 *>(&b.double_shufti_lo2),
reinterpret_cast<u8 *>(&b.double_shufti_hi2));
memset(b.buf.data(), 'b', b.size);
},
[&](MicroBenchmark &b) {
return shuftiDoubleExec(b.truffle_mask_lo,
b.truffle_mask_hi,
b.double_shufti_lo2,
b.double_shufti_hi2,
b.buf.data(), b.buf.data() + b.size);
});
}
for (size_t i = 0; i < std::size(sizes); i++) {
MicroBenchmark bench("Truffle", sizes[i]);
run_benchmarks(

View File

@ -61,6 +61,7 @@ public:
#endif
};
};
m128 double_shufti_lo2, double_shufti_hi2;
MicroBenchmark(char const *label_, size_t size_)
: label(label_), size(size_), buf(size_){};