// Copyright (c) Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #include #include "smoothquant.hpp" template using trait_ = smoothquant_traits_; template float smoothquant_dispatch(smoothquant_args a, const ck_tile::stream_config& s) { float r = -1; // clang-format off // rm rn tm tn vn pd 2p if(a.n <= 64) { r = smoothquant_>(s, a); } else if(a.n <= 128) { if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 256) { if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 512) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 768) { if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 1024) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 1536) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 2048) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 3072) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n <= 4096) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } else if(a.n > 4096) { if (a.n % 8 == 0) r = smoothquant_>(s, a); else if (a.n % 4 == 0) r = smoothquant_>(s, a); else if (a.n % 2 == 0) r = smoothquant_>(s, a); else r = smoothquant_>(s, a); } return r; // clang-format on } template <> float smoothquant(smoothquant_args a, const ck_tile::stream_config& s) { return smoothquant_dispatch(a, s); } template <> float smoothquant(smoothquant_args a, const ck_tile::stream_config& s) { return smoothquant_dispatch(a, s); }