Member 14658552 Ответов: 1

Используйте встроенную в код функцию разделения X86


Привет.

Меня просят использовать следующие четыре встроенные функции X86 для кодирования функции разделения.
__m128i _mm_blendv_epi8 (__m128i a, __m128i b, __m128i маска)
__m128i _mm_shuffle_epi8 (__m128i а __m128i б)
__m128i _mm_load_si128 (__m128i const* mem_addr)
void _mm_store_si128 (__m128i* mem_addr, __m128i a)

Данный массив Arr[] = {1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3}.
Мне нужно разделить этот массив на три массива.
a[] = {1,1,1,1,1,1,1,1}
b[] = {2,2,2,2,2,2,2,2}
c[] = {3,3,3,3,3,3,3,3}

У меня нет никакого опыта работы с Intel SSE intrinsics..У меня есть только опыт программирования на языке Си..
Пожалуйста, помогите мне решить эту проблему.

Спасибо.

Что я уже пробовал:

В C я бы сделал вот так...
for(int i = 0; i <size ; i++)
{ 
  a[i] = arr[i*3+0];
  b[i] = arr[i*3+1];
  c[i] = arr[i*3+2];
}

1 Ответов

Рейтинг:
2

phil.o

Может быть, это даст вам какую-то отправную точку:
(PDF) x86 Intrinsics Cheat-Sheet[^]