11/* ******************************************************************************
2- * Copyright 2018-2022 Intel Corporation
2+ * Copyright 2018-2023 Intel Corporation
33*
44* Licensed under the Apache License, Version 2.0 (the "License");
55* you may not use this file except in compliance with the License.
@@ -127,6 +127,16 @@ enum class inner_blk_t {
127127 _16c32b4c,
128128 _16c48b4c,
129129 _16c64b4c,
130+ _16b32c,
131+ _16b48c,
132+ _16b64c,
133+ _16b32c2b,
134+ _16b48c2b,
135+ _16b64c2b,
136+ _16b16c4b,
137+ _16b32c4b,
138+ _16b48c4b,
139+ _16b64c4b,
130140};
131141
132142/* * returns the offset within the block for weights blocked over oc and ic */
@@ -150,7 +160,9 @@ constexpr int AB_or_BC_blk_off(int x0, int x1) {
150160 ib::_4a8b8a4b, ib::_4b8c8b4c, ib::_16b32a2b, ib::_16b48a2b,
151161 ib::_16b64a2b, ib::_16b32a4b, ib::_16b48a4b, ib::_16b64a4b,
152162 ib::_16c32b2c, ib::_16c48b2c, ib::_16c64b2c, ib::_16c32b4c,
153- ib::_16c48b4c, ib::_16c64b4c),
163+ ib::_16c48b4c, ib::_16c64b4c, ib::_16b32c, ib::_16b48c,
164+ ib::_16b64c, ib::_16b32c2b, ib::_16b48c2b, ib::_16b64c2b,
165+ ib::_16b16c4b, ib::_16b32c4b, ib::_16b48c4b, ib::_16b64c4b),
154166 " unexpected inner_blk format" );
155167
156168 // clang-format off
@@ -165,17 +177,17 @@ constexpr int AB_or_BC_blk_off(int x0, int x1) {
165177 : (f == ib::_16b16a || f == ib::_16c16b) ? 16 * x1 + x0
166178 : (f == ib::_16a2b || f == ib::_16b2c) ? 2 * x0 + x1
167179 : (f == ib::_16a4b || f == ib::_16b4c) ? 4 * x0 + x1
168- : (f == ib::_32a32b || f == ib::_16a32b) ? 32 * x0 + x1
180+ : (utils::one_of (f, ib::_32a32b, ib::_16a32b, ib::_16b32c) ) ? 32 * x0 + x1
169181 : (utils::one_of (f, ib::_8a16b2a, ib::_8b16c2b, ib::_16a16b2a, ib::_16b16c2b)) ? (x0 / 2 ) * 32 + x1 * 2 + x0 % 2
170- : (f == ib::_16a48b) ? x0 * 48 + x1
171- : (f == ib::_16a64b) ? x0 * 64 + x1
172- : (f == ib::_16a32b2a) ? (x0 / 2 ) * 64 + x1 * 2 + x0 % 2
173- : (f == ib::_16a48b2a) ? (x0 / 2 ) * 96 + x1 * 2 + x0 % 2
174- : (f == ib::_16a64b2a) ? (x0 / 2 ) * 128 + x1 * 2 + x0 % 2
175- : (f == ib::_16a16b4a) ? (x0 / 4 ) * 64 + x1 * 4 + x0 % 4
176- : (f == ib::_16a32b4a) ? (x0 / 4 ) * 128 + x1 * 4 + x0 % 4
177- : (f == ib::_16a48b4a) ? (x0 / 4 ) * 192 + x1 * 4 + x0 % 4
178- : (f == ib::_16a64b4a) ? (x0 / 4 ) * 256 + x1 * 4 + x0 % 4
182+ : (utils::one_of (f, ib::_16a48b, ib::_16b48c) ) ? x0 * 48 + x1
183+ : (utils::one_of (f, ib::_16a64b, ib::_16b64c) ) ? x0 * 64 + x1
184+ : (utils::one_of (f, ib::_16a32b2a, ib::_16b32c2b) ) ? (x0 / 2 ) * 64 + x1 * 2 + x0 % 2
185+ : (utils::one_of (f, ib::_16a48b2a, ib::_16b48c2b) ) ? (x0 / 2 ) * 96 + x1 * 2 + x0 % 2
186+ : (utils::one_of (f, ib::_16a64b2a, ib::_16b64c2b) ) ? (x0 / 2 ) * 128 + x1 * 2 + x0 % 2
187+ : (utils::one_of (f, ib::_16a16b4a, ib::_16b16c4b) ) ? (x0 / 4 ) * 64 + x1 * 4 + x0 % 4
188+ : (utils::one_of (f, ib::_16a32b4a, ib::_16b32c4b) ) ? (x0 / 4 ) * 128 + x1 * 4 + x0 % 4
189+ : (utils::one_of (f, ib::_16a48b4a, ib::_16b48c4b) ) ? (x0 / 4 ) * 192 + x1 * 4 + x0 % 4
190+ : (utils::one_of (f, ib::_16a64b4a, ib::_16b64c4b) ) ? (x0 / 4 ) * 256 + x1 * 4 + x0 % 4
179191 : (f == ib::_4b16a4b || f == ib::_4c16b4c) ? (x1 / 4 ) * 64 + x0 * 4 + x1 % 4
180192 : (f == ib::_4b32a4b) ? (x1 / 4 ) * 128 + x0 * 4 + x1 % 4
181193 : (f == ib::_4b64a4b) ? (x1 / 4 ) * 256 + x0 * 4 + x1 % 4
@@ -336,6 +348,18 @@ DECL_TRAITS(BA16a16b4a, _AB, _16a16b4a, 2);
336348DECL_TRAITS (BA16a32b4a, _AB, _16a32b4a, 2 );
337349DECL_TRAITS (BA16a48b4a, _AB, _16a48b4a, 2 );
338350DECL_TRAITS (BA16a64b4a, _AB, _16a64b4a, 2 );
351+ DECL_TRAITS (aCB16b16c, _BC, _16b16c, 2 );
352+ DECL_TRAITS (aCB16b32c, _BC, _16b32c, 2 );
353+ DECL_TRAITS (aCB16b48c, _BC, _16b48c, 2 );
354+ DECL_TRAITS (aCB16b64c, _BC, _16b64c, 2 );
355+ DECL_TRAITS (aCB16b16c2b, _BC, _16b16c2b, 3 );
356+ DECL_TRAITS (aCB16b32c2b, _BC, _16b32c2b, 3 );
357+ DECL_TRAITS (aCB16b48c2b, _BC, _16b48c2b, 3 );
358+ DECL_TRAITS (aCB16b64c2b, _BC, _16b64c2b, 3 );
359+ DECL_TRAITS (aCB16b16c4b, _BC, _16b16c4b, 3 );
360+ DECL_TRAITS (aCB16b32c4b, _BC, _16b32c4b, 3 );
361+ DECL_TRAITS (aCB16b48c4b, _BC, _16b48c4b, 3 );
362+ DECL_TRAITS (aCB16b64c4b, _BC, _16b64c4b, 3 );
339363
340364DECL_TRAITS (Abc16a, _A, _16a, 3 );
341365DECL_TRAITS (ABc16a16b, _AB, _16a16b, 3 );
0 commit comments