Нет способа выполнить сравнение байтов с регистрами YMM без AVX2. В AVX1 буквально нет инструкций YMM для байтовых элементов.
AVX1 полезен только для 256-битных векторов с плавающей запятой или для копирования / перестановки произвольных данных. Большинство целочисленных / битовых вещей невозможно до AVX2;именно поэтому AVX2 существует.
Используйте регистры XMM , как если бы вы использовали для SSE2 strlen, при этом AVX1 экономит только на movdqa
инструкциях копирования-копирования.
Вы можете гипотетически распаковать байты в float (медленно, с перемешиванием + vinsertf128), а затем сравнить 8 сразу с vcmpps
. Но вы можете сравнить 16 байтов одновременно с vpcmpeqb xmm
, так что делайте это, как обычный человек, и выполняйте вдвое больше работы для каждого вектора, но при этом получаете преимущество неразрушающего кодирования 3-операндных команд AVX.