Определить возможности ARM ядра для условной сборки проекта
Интересует аппаратное умножение u64 = u32 * u32; Часть вариантов ARM ядер не имеют умножения, часть имеют аккумулятор u32. Мне нужно определить точное соответствие ресурсов ядра, для переключения участков кода. Есть наброски для распознавания математики одинарной и двойной точности, но работает плохо - за бортом остаётся слишком много архитектур. Есть подозрение, что где-то дальше все определения складываются в одну универсальную битовую структуру, но где и как - непонятно.
#if ((defined (__ARM_FP)) && (__ARM_FP == 14) && ARM_MATH_CM7)
#define _ARM_CODE_V 6
#elif ((defined (__ARM_FP)) && (__ARM_FP == 12) && ARM_MATH_CM7)
#define _ARM_CODE_V 5
#elif ((defined (__ARM_FP)) && (__ARM_FP == 4) && ARM_MATH_CM7)
#define _ARM_CODE_V 4
#elif ((defined (__ARM_FP)) && (__ARM_FP == 4) && ARM_MATH_CM4)
#define _ARM_CODE_V 3
#elif (ARM_MATH_CM3)
#define _ARM_CODE_V 2
#elif (ARM_MATH_CM0)
#define _ARM_CODE_V 1
#else
#define _ARM_CODE_V 0
#endif