Я пытаюсь сделать побитовое &
между элементами двух массивов целых чисел uint64_t
, а затем сохранить результат в другом массиве. Это моя программа:
#include <emmintrin.h>
#include <nmmintrin.h>
#include <chrono>
int main()
{
uint64_t data[200];
uint64_t data2[200];
uint64_t data3[200];
__m128i* ptr = (__m128i*) data;
__m128i* ptr2 = (__m128i*) data2;
uint64_t* ptr3 = data3;
for (int i = 0; i < 100; ++i, ++ptr, ++ptr2, ptr3 += 2)
_mm_store_ps(ptr3, _mm_and_si128(*ptr, *ptr2));
}
Однако я получаю эту ошибку:
test.cpp:17:50: error: cannot convert ‘uint64_t* {aka long unsigned int*}’ to ‘float*’ for argument ‘1’ to ‘void _mm_store_ps(float*, __m128)’
_mm_store_ps(ptr3, _mm_and_si128(*ptr, *ptr2));
По какой-то причине компилятор думает, что я копирую в массив с плавающей запятой. Можно ли сделать то, что я пытаюсь сделать с массивами uint64_t
?