приведение строки символов к __m128i

как привести string к __m128i

#include <iostream>
#include <intrin.h>

char  string[] = " +-0098765432109876540.09876e-0248";
int   i;
__m128i  Xmm_SP = { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 9, 9, 9, 9, 9, 9, 9, 9};

int main()
{
    do {
        _mm_cmpeq_epi8(string, Xmm_SP);
    } while (1);
}

Ответы (1 шт):

Автор решения: user7860670

Можно загрузить блок из невыровненного адреса посредством встроенной функции _mm_loadu_si128:

#include <intrin.h>

int main()
{
    auto const & text{" +-0098765432109876540.09876e-0248"};
    __m128i xmm_sp{0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 9, 9, 9, 9, 9, 9, 9, 9};
    __m128i xmm_text{_mm_loadu_si128(static_cast<__m128i const *>(static_cast<void const *>(static_cast<char const *>(text))))};
    do
    {
        _mm_cmpeq_epi8(xmm_text, xmm_sp);
    }
    while (1);
}
→ Ссылка