Как сравнить 2 регистра XMM (SSE) и проверить на равенство, чтобы выйти из цикла?

После использования инструкции по сборке:

pcmpeqd xmm2, xmm7

Результат в реестре xmm2 = 00000000 00000000 FFFFFFFF 00000000

Результат правильный. К сожалению, сравнение не устанавливает никаких флагов, которые можно проверить, чтобы выйти из цикла. Также любое из 4 двойных слов может иметь все свои биты, а не только приведенный здесь пример. Нужно ли загружать каждое из 4 двойных слов в регистр общего назначения для повторного тестирования? Или есть более быстрый способ сделать это?


person John J    schedule 20.05.2020    source источник
comment
Привет, пост может быть вашим первым постом, который дает мне обзор. Я не знаком с регистром, но для stackoverflow вопрос надеюсь на четкую сцену ошибки. Вы можете попробовать свое мышление и дать четкий вопрос приветствуется.   -  person LoranceChen    schedule 20.05.2020
comment
Вы можете использовать pmovmskb, чтобы извлечь старшие биты каждого байта в регистр, а затем использовать test для проверки если установлены какие-либо или все биты. С SSE4.1 вы также можете попробовать ptest   -  person chtz    schedule 20.05.2020
comment
Обратите внимание, что вам нужно решить, каково условие разрыва, то есть все равны или все равны.   -  person Paul R    schedule 20.05.2020
comment
Я хочу отметить ответ от chtz как полезный, поскольку его предложение было именно тем, что я искал, и оно решило мою проблему! Однако слева от ответа нет зеленой галочки, которую я могу выбрать для отображения в качестве ответа...   -  person John J    schedule 20.05.2020
comment
Вышеупомянутое является просто комментариями, а не ответами. Вы можете написать решение как полноценный ответ и принять его или предложить chtz сделать то же самое.   -  person Paul R    schedule 21.05.2020
comment
Да, я знаю об этом, Пол Р. В любом случае спасибо. Я опубликую решение через 48 часов после публикации вопроса, поскольку я могу сделать это только по истечении этого времени. :)   -  person John J    schedule 21.05.2020