fix bug in maxsize calculation, which would cause products of size > 2048 to address the lookup table out of bounds

This commit is contained in:
Benoit Jacob 2015-03-16 16:15:47 -04:00
parent 35c3a8bb84
commit eb6929cb19

View File

@ -59,7 +59,7 @@ struct LookupBlockingSizesFromTableImpl<LhsScalar, RhsScalar, true>
using std::max;
typedef BlockingSizesLookupTable<LhsScalar, RhsScalar> Table;
const uint16_t minsize = Table::BaseSize;
const uint16_t maxsize = minsize << (Table::NumSizes + 1);
const uint16_t maxsize = minsize << (Table::NumSizes - 1);
const uint16_t k_clamped = max<uint16_t>(minsize, min<Index>(k, maxsize));
const uint16_t m_clamped = max<uint16_t>(minsize, min<Index>(m, maxsize));
const uint16_t n_clamped = max<uint16_t>(minsize, min<Index>(n, maxsize));