Попробуйте __attribute__((target("avx2")))
. GCC и Clang поддерживают его.
Пример:
#include <stdlib.h>
#include <stdio.h>
#include <immintrin.h>
__attribute__((target("avx2")))
int add_with_avx2(int a, int b) {
__m256i av = _mm256_set_epi32(a, 0, 0, 0, 0, 0, 0, 0);
__m256i bv = _mm256_set_epi32(b, 0, 0, 0, 0, 0, 0, 0);
__m256i result = _mm256_add_epi32(av, bv);
return ((int*)&result)[7];
}
int main(void) {
return add_with_avx2(5, 6);
}
Однако, вероятно, лучше поместить функции, которые требуют встроенных функций, в отдельный файл, на случай, если вам когда-нибудь понадобится использовать компилятор, у которого нет этой функции.