diff options
Diffstat (limited to 'intgemm/callbacks/configs.h')
-rw-r--r-- | intgemm/callbacks/configs.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/intgemm/callbacks/configs.h b/intgemm/callbacks/configs.h new file mode 100644 index 0000000..1222448 --- /dev/null +++ b/intgemm/callbacks/configs.h @@ -0,0 +1,58 @@ +#pragma once + +#include <tuple> + +namespace intgemm { +namespace callbacks { + +/* + * Sequence meta-config + */ +template <typename... Configs> +std::tuple<Configs...> Sequence(const Configs&... configs) { + return std::make_tuple(configs...); +} + +/* + * Configs + */ +struct Dummy { +}; + +template <typename Type> +struct Write { + Type* output_addr; + + Write(Type* output_addr) : output_addr(output_addr) {} +}; + +struct Unquantize { + float unquant_mult; + + Unquantize(float unquant_mult) : unquant_mult(unquant_mult) {} +}; + +struct UnquantizeAndWrite { + float unquant_mult; + float* output_addr; + + UnquantizeAndWrite(float unquant_mult, float* output_addr) : unquant_mult(unquant_mult), output_addr(output_addr) {} +}; + +struct AddBiasAndWrite { + const int* bias_addr; + int* output_addr; + + AddBiasAndWrite(const int* bias_addr, int* output_addr) : bias_addr(bias_addr), output_addr(output_addr) {} +}; + +struct UnquantizeAndAddBiasAndWrite { + float unquant_mult; + const float* bias_addr; + float* output_addr; + + UnquantizeAndAddBiasAndWrite(float unquant_mult, const float* bias_addr, float* output_addr) : unquant_mult(unquant_mult), bias_addr(bias_addr), output_addr(output_addr) {} +}; + +} +} |