#include "test/test.h" #include "aligned.h" #include "kernels.h" #include namespace intgemm { template void kernel_unquantize_test() { if (kCPU < CPUType_) return; using input_vec_t = vector_t; using output_vec_t = vector_t; AlignedVector input(sizeof(input_vec_t) / sizeof(int)); AlignedVector output(sizeof(output_vec_t) / sizeof(float)); std::iota(input.begin(), input.end(), 0); auto unquant_mult = set1_ps(0.5f); *output.template as() = kernels::unquantize(*input.template as(), unquant_mult); for (auto i = 0; i < output.size(); ++i) CHECK(output[i] == i * 0.5f); } template INTGEMM_SSE2 void kernel_unquantize_test(); KERNEL_TEST_CASE("unquantize SSE2") { return kernel_unquantize_test(); } template INTGEMM_AVX2 void kernel_unquantize_test(); KERNEL_TEST_CASE("unquantize AVX2") { return kernel_unquantize_test(); } #ifdef INTGEMM_COMPILER_SUPPORTS_AVX512 template INTGEMM_AVX512BW void kernel_unquantize_test(); KERNEL_TEST_CASE("unquantize AVX512BW") { return kernel_unquantize_test(); } #endif }