пытаюсь вычислить это самое абсолютное пусть в mm1(0-31) - значение, в mm1(32-63) - ноль pshufw mm0, mm1, $4E pfsub mm0, mm1 pfmax mm0, mm0 и здесь не работает функция pfmax... может я что-нить неправильно делаю?
pshufw как раз делае то что нужно пусть mm1 = (зн,0), тогда pshufw mm0, mm1, $4E - mm0 = (0,зн) pfsub mm0, mm1 - mm0 = (-зн,зн) pfmax mm2, mm0 - взять бы максимальное из (-зн,зн), но оно просто присваивает в mm2 значения из mm0, без каких-либо преобразований
Ты видимо не правильно понимаешь, что делает pfsub - она выбирает максимальные значения из двух операндов, а не из частей одного операнда пусть mm1 = (зн,0), тогда pxor mm0,mm0 -> mm0 = (0,0) pfsub mm0,mm1 -> mm0 = (-зн,0) pfmax mm0,mm1 -> mm0 = (max(зн,-зн),0) = (abs(зн),0)