Я пытаюсь скомпилировать и запустить свой код, перенесенный из Unix в Windows. Мой код чистый C++ и не использует классы Qt. это нормально в Unix.
Я также использую Qt Creator в качестве IDE и qmake.exe
с -spec win32-g++
для компиляции. Поскольку в моем коде есть инструкции sse
, я должен включить заголовок emmintrin.h
.
Я добавил:
QMAKE_FLAGS_RELEASE += -O3 -msse4.1 -mssse3 -msse3 -msse2 -msse
QMAKE_CXXFLAGS_RELEASE += -O3 -msse4.1 -mssse3 -msse3 -msse2 -msse
В файле .pro
. Мне удалось скомпилировать мой код без ошибок. но после запуска он выдает ошибку времени выполнения при выполнении некоторых функций, содержащих __m128
или что-то подобное.
Когда я открываю emmintrin.h
, я вижу:
#ifndef __SSE2__
# error "SSE2 instruction set not enabled"
#else
и не определено после #else
.
Я не знаю, как включить SSE
на моем компьютере.
Платформа: Windows Vista
Тип системы: 64-битная
Процессор: Intel(R) Core(TM) i5-2430M с частотой 2,40 Гц
Кто-нибудь знает решение?
Заранее спасибо.
__SSE__
не определен. Я уверен в остальной части кода. - person Hamid Bazargani   schedule 06.09.2013__SSE__
не определено? Вы, кажется, сбиты с толку тем, что увидели в заголовке, что здесь не актуально. - person Paul R   schedule 06.09.2013__m128
не является именем типа. Но при пошаговом запуске кода в режиме отладки. Часть кода SSE идет хорошо. Думаю проблема где-то в другом. Вылетает при выполнении функции_mm_load_ps()
. Возможно, из-за плохого распределения ввода. Кстати, мне интересно, поддерживается ли эта функция на моей машине или ....? - person Hamid Bazargani   schedule 06.09.2013_mm_loadu_ps
вместо_mm_load_ps
. - person Paul R   schedule 06.09.2013_mm_loadu_ps
решило это. Но как я могу выровнять свои данные. мои данные представляют собой структуру из двух переменных с плавающей запятой. и я определилMYSTRUCT *data
. Вход функции_mm_loadu_ps((float*) data)
. В любом случае ваш ответ решил мой вопрос. - person Hamid Bazargani   schedule 06.09.2013declspec(align(16))
для статических выделений или_aligned_malloc
для динамических выделений. Для gcc и большинства других цивилизованных платформ/компиляторов используйте__attribute__ ((align(16)))
для первого иposix_memalign
для второго. - person Paul R   schedule 06.09.2013