Возможная ошибка OpenMP + SSE при использовании _mm_shuffle_ps в Xcode 4 (LLVM GCC)

Я переключил свой компилятор на LLVM GCC 4.2 в XCode 4.2 из GCC и столкнулся со странной ошибкой компоновщика для встроенной функции _mm_shuffle_ps в OpenMP. Эта функция будет работать в другом месте, но после помещения ее в блок omp она начнет генерировать следующую ошибку компоновщика:

"___builtin_ia32_shufps", referenced from:
__ZN7Annulus12traceFactorsEP9PrimitiveP8VFMatrix.omp_fn.0 in Annulus.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

Основная структура моего кода выглядит следующим образом:

#pragma omp parallel {
    //Some stuff
    #pragma omp for {
        //Do more stuff including _mm_shuffle_ps
    }
}

Код прекрасно работает в GCC 4.2, так что это ошибка в реализации OpenMP в LLVM GCC или мне нужен экзотический флаг компилятора?

2 ответа

Решение

Абсолютно ошибка. Пожалуйста, подайте это. Благодарю.

Просто к вашему сведению:

У меня та же проблема, но с инструкцией shuf_pd. Другие свойства работают просто отлично. Я только что подал эту ошибку в Apple.

Возможно, есть обходной путь, который я еще не пробовал: поместите весь код SSE в другую функцию и вызовите его из цикла OpenMP.

Другие вопросы по тегам