Здравствуйте, koandrew, Вы писали:
_>>Вообще то динамическую загрузку нужного кода, в зависимости от типа процессора делали руками уже не первое десятилетие. ))) Ну а современные компиляторы позволяют решать эту задачу уже вообще автоматически. Например в GCC ты можешь указать в атрибутах функции набор нужных процессоров (например с SSE, с AVX и т.п.), под которые нужно её скомпилировать. В ответ на это компилятор сделает по одной бинарной версии функции под каждый процессор и плюс ещё собственно саму функцию (с нужным именем), представляющую собой форвард к нужной реализации. ) K>Очень херовый подход, т.к. совместимость только в обратную сторону. То есть перенести бинарь на платформу, которой не существовало в момент компиляции, невозможно.
То есть? По традиции новые платформы сейчас обратно-совместимы с предыдущими. И в любом случае, механизм ifunc проверяет наличие нужных флагов в CPUID процессора, а не название платформы. И если на новой платформе их нет, оно просто уйдёт в базовую реализацию без всяких оптимизаций.