2015-05-17 5 views
0

У меня есть программа на C, где у меня есть несколько массивов беззнаковых целых чисел. Я использую это заявление uint32_t.Как загрузить неподписанные int в SIMD

Я хочу использовать SIMD для выполнения некоторых операций с данными, хранящимися в каждом массиве. Здесь я застреваю, потому что похоже, что большинство функций SSE и SSE2 поддерживают только float и double.

Каков наилучший способ для загрузки данных типа uint32_t?

+1

'MOVDQA/MOVDQU' являются SSE2. Так что 'PADD [B/W/D/Q]' и * many * другие векторные инструкции. Как вы думаете, почему SSE2 предназначен только для 'float/double'? – EOF

ответ

1

Для любого целого типа SSE обычно используется _mm_load_si128/_mm_loadu_si128:

uint32_t a[N]; 

__m128i v = _mm_loadu_si128((__m128i *)a);