Задать вопрос

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

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

Вот с этим SSE проблемы.
Как мне упаковать 4 числа типа real в XMM регистр на Delphi?
  • Вопрос задан
  • 230 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Решения вопроса 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]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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