Я хочу написать математическую функцию с инструкциями SSE в VS2017.Я мог бы попробовать это:
__m128 addWithIntrinsics(__m128 a, __m128 b)
{
__m128 r = _mm_add_ps(a, b);
return r;
}
__m128 addWithAssembly(__m128 a, __m128 b)
{
__m128 r;
__asm
{
movaps xmm0, xmmword ptr[a]
movaps xmm1, xmmword ptr[b]
addps xmm0, xmm1
movaps xmmword ptr[r], xmm0
}
return r.
}
Но я не уверен ... Если я напишу такие математические операции, будет ли этот код кросс-платформенным (с точки зрения работы только на Windows, но на разныхпроцессоры и те, которые не поддерживают SSE), или мне нужно будет определить на этапе компиляции, использует ли процессор эти инструкции, а если нет, то использовать обычные?Как мне лучше всего это сделать, и какой из моих двух вариантов предпочтительнее?