Эквивалентный код C для функций типа _mm_ - PullRequest
0 голосов
/ 29 декабря 2010

Что такое простой эквивалентный код C для преодоления __ функций, таких как _mm_store_ps, _mm_add_ps и т. Д. Пожалуйста, укажите любую функцию в примере с эквивалентным кодом C.

Почему используются эти функции?

Ответы [ 2 ]

5 голосов
/ 29 декабря 2010

Исходя из ваших предыдущих похожих вопросов, звучит так, будто вы пытаетесь решить не ту проблему.У вас есть некоторый существующий код SSE для обнаружения лиц, который дает сбой, потому что вы передаете неправильно выровненные данные подпрограммам SSE, которые требуют 16-байтовых выровненных данных.В предыдущих вопросах люди говорили вам, как исправить это смещение (используйте _mm_malloc в Windows или memalign / posix_memalign в Linux), но вы, похоже, игнорируете этот совет, и вместо этого вы ошибочно полагаете, что вам нужно переписать весь код SSE,Потратьте некоторое время, чтобы понять, что такое SSE, как работает ваш код SSE, зачем ему нужно 16-байтовое выравнивание и как этого добиться.Ваш существующий код SSE должен нормально работать в Windows или Linux, если вы решите проблему смещения данных, что должно быть относительно простой задачей, как только вы поймете, что делаете.

0 голосов
/ 29 декабря 2010

MSDN показывает псевдо-код для первой функции,

void _mm_store_ps(float *p, __m128 a );

Возвращает:

p[0] := a0
p[1] := a1
p[2] := a2
p[3] := a3

http://msdn.microsoft.com/en-us/library/s3h4ay6y(v=vs.80).aspx

...