int main(void)
{
    /* touch buffers */
    out.assign(0);

    fill_container(in);

    const int iterations = 50000000;

    run_bench(boost::bind(bench_1, 64), iterations);
/*     run_bench(boost::bind(bench_2, 64), iterations); */
#ifdef __SSE__
    run_bench(boost::bind(bench_3, 64), iterations);
#endif
/*     run_bench(boost::bind(bench_4, 64), iterations); */
    run_bench(boost::bind(bench_5, 64), iterations);
}
int main(void)
{
    out.assign(0.f);
    in.assign(0.2f);
    in2.assign(0.3f);

    const unsigned int iterations = 50000000;

    run_bench(boost::bind(bench_1, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
    run_bench(boost::bind(bench_2, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
#ifdef __SSE__
    run_bench(boost::bind(bench_3, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
    run_bench(boost::bind(bench_3a, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
#endif

    run_bench(boost::bind(bench_4, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
    run_bench(boost::bind(bench_5, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);

#ifdef __SSE__
    run_bench(boost::bind(bench_6, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
    run_bench(boost::bind(bench_6a, out.begin(), in.begin(), 0.1f, 0.001f, 64), iterations);
#endif
}
void __noinline__ bench_5(unsigned int numSamples)
{
    clip_vec_simd<float>(out.begin(), wrap_argument(in.begin()), wrap_argument(-0.5f), wrap_argument(0.5f), numSamples);
}