Как упаковать 4 значения типа real в XMM регистр на Delphi?

Доброго времени суток. Тут столкнулся с проблемой, задача такая:
Входные данные: массив значений и вариант поиска минимума( с использование SSE и без)
Действие: выполняет поиск минимального элемента и его номер выбранным методом
Выход: минимальный элемент и его номер

Вот с этим SSE проблемы.
Как мне упаковать 4 числа типа real в XMM регистр на Delphi?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
@zedxxx
На чистом Delphi, без ассемблерной вставки, это по-моему никак не сделать. Ну а как это сделать на ассемблере, можно нагуглить за пару минут: Moving a single float to a xmm register
"mov    $0x3f000000, %%eax\n"  // encoding of 0.5
"movd   %%eax,       %%xmm1\n" // move to xmm1
"shufps $0, %%xmm1,  %%xmm1\n" // splat across all lanes of xmm1

Тут, ключевая инструкция - shufps, насколько можно понять.

Если данные лежат в памяти уже в упакованном виде, их можно сразу загнать в xmm регистр (пример из ссылки выше): movaps xmm0,xmmword ptr [ecx]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы