Cosmetics

This commit is contained in:
paulfd 2019-09-14 09:42:31 +02:00
parent 74c49c2c8c
commit 2aa086d971
4 changed files with 15 additions and 14 deletions

View file

@ -29,12 +29,12 @@
#include <iostream>
#include "../sfizz/SIMDHelpers.h"
class CumsumArray : public benchmark::Fixture {
class CumArray : public benchmark::Fixture {
public:
void SetUp(const ::benchmark::State& state) {
std::random_device rd { };
std::mt19937 gen { rd() };
std::uniform_real_distribution<float> dist { 0, 1 };
std::uniform_real_distribution<float> dist { 0.1, 1 };
input = std::vector<float>(state.range(0));
output = std::vector<float>(state.range(0));
std::generate(input.begin(), input.end(), [&]() { return dist(gen); });
@ -49,36 +49,37 @@ public:
};
BENCHMARK_DEFINE_F(CumsumArray, Scalar)(benchmark::State& state) {
BENCHMARK_DEFINE_F(CumArray, Sum_Scalar)(benchmark::State& state) {
for (auto _ : state)
{
cumsum<float, false>(input, absl::MakeSpan(output));
}
}
BENCHMARK_DEFINE_F(CumsumArray, SIMD)(benchmark::State& state) {
BENCHMARK_DEFINE_F(CumArray, Sum_SIMD)(benchmark::State& state) {
for (auto _ : state)
{
cumsum<float, true>(input, absl::MakeSpan(output));
}
}
BENCHMARK_DEFINE_F(CumsumArray, Scalar_Unaligned)(benchmark::State& state) {
BENCHMARK_DEFINE_F(CumArray, Sum_Scalar_Unaligned)(benchmark::State& state) {
for (auto _ : state)
{
cumsum<float, false>(absl::MakeSpan(input).subspan(1), absl::MakeSpan(output).subspan(1));
}
}
BENCHMARK_DEFINE_F(CumsumArray, SIMD_Unaligned)(benchmark::State& state) {
BENCHMARK_DEFINE_F(CumArray, Sum_SIMD_Unaligned)(benchmark::State& state) {
for (auto _ : state)
{
cumsum<float, true>(absl::MakeSpan(input).subspan(1), absl::MakeSpan(output).subspan(1));
}
}
BENCHMARK_REGISTER_F(CumsumArray, Scalar)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumsumArray, SIMD)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumsumArray, Scalar_Unaligned)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumsumArray, SIMD_Unaligned)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumArray, Sum_Scalar)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumArray, Sum_SIMD)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumArray, Sum_Scalar_Unaligned)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_REGISTER_F(CumArray, Sum_SIMD_Unaligned)->RangeMultiplier(4)->Range(1 << 2, 1 << 12);
BENCHMARK_MAIN();

View file

@ -148,4 +148,4 @@ template <>
void cumsum<float, true>(absl::Span<const float> input, absl::Span<float> output) noexcept
{
cumsum<float, false>(input, output);
}
}

View file

@ -474,4 +474,4 @@ void cumsum(absl::Span<const float> input, absl::Span<float> output) noexcept
}
template <>
void cumsum<float, true>(absl::Span<const float> input, absl::Span<float> output) noexcept;
void cumsum<float, true>(absl::Span<const float> input, absl::Span<float> output) noexcept;

View file

@ -691,7 +691,7 @@ void cumsum<float, true>(absl::Span<const float> input, absl::Span<float> output
while (in < lastAligned) {
auto mmOffset = _mm_load_ps(in);
mmOffset = _mm_add_ps(mmOffset, _mm_castsi128_ps(_mm_slli_si128(_mm_castps_si128(mmOffset), 4)));
mmOffset = _mm_add_ps(mmOffset, _mm_shuffle_ps(_mm_setzero_ps(), mmOffset, 0x40));
mmOffset = _mm_add_ps(mmOffset, _mm_shuffle_ps(_mm_setzero_ps(), mmOffset, _MM_SHUFFLE(1, 0, 0, 0)));
mmOutput = _mm_add_ps(mmOutput, mmOffset);
_mm_store_ps(out, mmOutput);
mmOutput = _mm_shuffle_ps(mmOutput, mmOutput, _MM_SHUFFLE(3, 3, 3, 3));
@ -701,4 +701,4 @@ void cumsum<float, true>(absl::Span<const float> input, absl::Span<float> output
while (in < sentinel)
snippetCumsum(in, out);
}
}