#pragma once #include // Reuse some types in the JIT modules #include #include "common.hpp" #include "../../utils/exception.hpp" namespace deep_gemm { template static int get_swizzle_mode(const int& block_size, const size_type_t& elem_size) { // `> 0` means interleaving // 16B actually means non-swizzling (but interleaving) for (const int& mode: {128, 64, 32, 16}) { if ((block_size * static_cast(elem_size)) % mode == 0) return mode; } DG_HOST_UNREACHABLE("Unreachable"); } } // namespace deep_gemm