m
1. Выделили все функции, которые могут использоваться SIMD и сделали два cpp-шника, один компилировался с SIMD, другой без.
2. Сделали header-файл с указателями на функции.
3. Если комплировался общий бинарь, то по сути на старте один раз проверялась поддержка SIMD и все указатели проставлялись на нужную версию.
4. Если компилировался бинарь под конкретную архитектуру в SIMD, тов хэдере был просто специальный ifdef, который делал typedef, чтоб компилятор мог инлайнить всякое.
Поэтому ответ на вопрос такой:
1. Если бинарь под неизвестную архитектуру - проверка была в рантайме один раз.
2. Если бинарь под известную архитектуру - это проставлялось соответствующим дефайном. Тоже один раз.