Я пишу некоторый код и пытаюсь ускорить его, используя встроенные функции SIMD SSE2 / 3. Мой код имеет такую природу, что мне нужно загрузить некоторые данные в регистр XMM и действовать по нему много раз. Когда я смотрю на сгенерированный код ассемблера, кажется, что GCC продолжает сбрасывать данные обратно в память, чтобы перезагрузить что-то еще в XMM0 и XMM1. Я компилирую для x86-64, поэтому у меня 15 регистров. Почему GCC использует только два, и что я могу сделать, чтобы попросить его использовать больше? Есть ли способ, которым я могу «закрепить» какое-то значение в регистре? Я добавил ключевое слово «register» в определение переменной, но сгенерированный код сборки идентичен.