Поддержка GCC для регистров XMM сильно нарушена? - PullRequest
0 голосов
/ 11 марта 2011

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

И все же, как программист на ассемблере, я бы предпочел использовать asm {}, но GCC не позволяет мне использовать регистры XMM в asm {}.

Есть ли какая-то хитрость в том, чтобы заставить GCC использовать XMM, или мне нужно ждать следующего выпуска?У меня 4.3.4.

1 Ответ

2 голосов
/ 11 марта 2011

Компилируете ли вы с включенной оптимизацией, например, -O3? Если это так, то gcc обычно генерирует довольно приличный код SSE из встроенных функций. Большинство встроенных функций соответствуют одной инструкции SSE. Можете ли вы привести пример, который вы считаете особенно неэффективным?

Кроме того, я не уверен, что вы имеете в виду по поводу "GCC не позволяет мне использовать регистры XMM в asm {}" - опять же, если вы предоставите конкретный пример, возможно, есть простое решение.

...