Отключить функции AVX2 на процессорах, отличных от Haswell
Я написал код AVX2 для запуска на процессоре Haswell i7. Та же самая кодовая база также используется на процессорах не-Haswell, где тот же код должен быть заменен их эквивалентами SSE. Мне было интересно, есть ли способ для компилятора игнорировать инструкции AVX2 на процессорах, отличных от Haswell. Мне нужно что-то вроде:
public void useSSEorAVX(...){
IF (compiler directive detected AVX2)
AVX2 code (this part is ready)
ELSE
SSE code (this part is also ready)
}
}
Прямо сейчас я комментирую связанный код перед компиляцией, но должен быть более эффективный способ сделать это. Я использую Ubuntu и GCC. Спасибо за вашу помощь.