, gcc на x86-64 уже использует SSE / SSE2 для float / double по умолчанию, потому что ABI передает и возвращает float и double args в регистрах XMM, а не в стеке x87.

привет :)
Я пытаюсь овладеть некоторыми понятиями, касающимися чисел с плавающей запятой, SIMD / математических встроенных функций и флага быстрой математики для gcc. В частности, я использую MinGW с gcc v4.5.0 на процессоре x86.

Я искал вокруг некоторое время, и вот что я (думаю, я) понимаю в данный момент:

Когда я компилирую без флагов, любой код fp будет стандартным x87, без встроенных функций simd, а функции math.h будут связаны с msvcrt.dll.

Когда я используюmfpmath, mssen и / илимарш так что код mmx / sse / avx включается, gcc на самом деле использует инструкции simdтолько если я также укажу некоторые флаги оптимизации, напримерНа или жеftree-векторизовать, В этом случае встроенные функции выбираются gcc автоматически, и некоторые математические функции (я все еще говорю о стандартных математических функциях в math.h) становятся встроенными или оптимизируются с помощью встроенного кода, некоторые другие по-прежнему поступают из msvcrt. длл. Если я не укажу флаги оптимизации, это изменится?

Когда я использую определенные типы данных simd (те, которые доступны как расширения gcc, какv4si или жеv8qi), У меня есть возможность вызывать внутренние функции напрямую или снова оставить автоматическое решение для gcc. Gcc может по-прежнему выбирать стандартный код x87, если я не включаю инструкции simd через соответствующие флаги. Опять же, если я не укажу флаги оптимизации, это изменится?

Пожалуйста, поправьте меня, если какое-либо из моих утверждений неверно: p

Теперь вопросы:

Нужно ли мне когда-либо включать x86intrin.h для использования встроенных функций?Должен ли я когда-нибудь связать libm?Какое отношение к математике имеет отношение к чему-либо? Я понимаю, что это ослабляет стандарт IEEE, но, в частности, как? Другие стандартные функции используются? Какая-то другая библиотека связана? Или просто пара флагов где-то установлена, и стандартная библиотека lib ведет себя по-другому?

Спасибо всем, кто собирается помочь: D

Ответы на вопрос(0)

Ваш ответ на вопрос