Um recurso suportado pelo GNU O Compiler Collection (GCC) que infelizmente não é usado com mais frequência é o FMV (função multi-versão) para oferecer suporte a várias versões de uma função com a função especificada selecionada com base no processador de destino em uso. O GCC FMV em x86_64 permite que diferentes funções sejam usadas, seja suportando SSE4.2, AVX ou até mesmo uma microarquitetura de CPU específica. A Arm está finalmente trabalhando no suporte a várias versões da função GCC para AArch64.
A função multi-versão do GCC em x86_64 facilita para os desenvolvedores a criação de funções otimizadas para caminhos de código ativo que, em tempo de execução, serão usados por um processador compatível/relevante. Função Multi-Versioning permite a manipulação em tempo de execução do caminho de código mais apropriado para uma determinada função sem ter que recorrer ao envio de vários binários ou aumentar os requisitos básicos para o seu software. Mas atualmente o GCC FMV só funciona para x86/x86_64. Além disso, isso atualmente só funciona com o front-end C++ do GCC.
A Arm está procurando dar suporte ao GCC Function Multi-versioning para sua arquitetura de CPU e publicou recentemente uma especificação beta em torno dela.
A Arm anunciou seu trabalho beta no suporte a FMV e está buscando feedback dos desenvolvedores sobre o tratamento proposto. Com o FMV on Arm, eles procuram permitir que os desenvolvedores usem uma versão alvo do Arm como uma das mudanças planejadas. No GitHub do Arm está a especificação proposta para o Arm FMV.