"This implementation only supports matrices with at most {} rows, found a sequence with {} rows. Contact the developers at https://github.com/althonos/lightmotif.",
u16::MAX,scores.matrix().rows()
);
}elseifscores.is_empty(){
None
}else{
letdata=scores.matrix();
unsafe{
letmutdataptr=data[0].as_ptr();
// the row index for the best score in each column
// (these are 32-bit integers but for use with `_mm256_blendv_ps`
// they get stored in 32-bit float vectors).
letmutp1=_mm256_setzero_si256();
letmutp2=_mm256_setzero_si256();
// store the best scores for each column
letmuts1=_mm256_setzero_si256();
letmuts2=_mm256_setzero_si256();
// process all rows iteratively
foriin0..data.rows(){
// record the current row index
letindex=_mm256_set1_epi16(iasi16);
// load scores for the current row
letr=_mm256_load_si256(dataptras*const_);
// unpack scores into 16-bit vectors (we can't use 8-bit
// vectors directly because AVX2 doesn't support unsigned
// comparisons with 8-bit integers, so we need to translate