Я пытаюсь сравнить одно 64-битное значение с 64-битным массивом значений, скажемaltivec извлечь часть вектора?
R_UINT64 FP; R_UINT64 INPUT [20000];
Он возвращает значение true, если любой элемент массива соответствует значению FP.
Мне нужно пройти через этот массив и найти совпадение, я пытаюсь повысить эффективность, глядя на 2 элемента, вместо одного, за раз.
В Altivec, длина вектора равна 128 бит, поэтому я поставил две копию FP, два элемента вектора. (Я усечение их оба два 8 бит на каждый элемент вектора)
До сих пор так хорошо , но теперь я столкнулся с проблемой. Я не мог найти процедуру VMX, которая просматривает только половину вектора и видит, есть ли совпадение, чтобы вернуть true, оба значения должны совпадать, а это не то, что я ищу.
Так что мне интересно, есть ли вообще сказать компилятору, что я только смотрю на половину вектора каждый раз?
Заранее благодарен!
я вижу !!! Большое спасибо Пол !!! –
Обратите внимание, что если вы используете 64-разрядную POWER или PowerPC, это может быть не намного быстрее, чем просто прямое скалярное сравнение с 64-разрядным регистром, но стоит попробовать, если вам нужно небольшое улучшение производительности. –
Привет, Пол, оригинальный вопрос не позволяет мне реализовывать массивное параллельное программирование. Мне интересно ... так или иначе, чтобы хм загружать значение на вектор по одному за раз? скажем, 32 бита, могу ли я загрузить один 32-битный int за раз, а не сразу загружать 4? Благодаря! –