News: 0001580042

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

GCC 16 Will No Longer Treat Function Multi-Versioning As Experimental On ARM64

([GNU] 5 Hours Ago ARM64 FMV With GCC 16)


Function Multi-Versioning (FMV) is the compiler feature that allows developers to specify multiple versions of the same function that can be used for optimizing execution for specific target features. For example, FMV can allow optimized functions to be called if the CPU supports AVX, AVX-512, SSE4.2, or other differing ISA capabilities. With the GCC 16 compiler release, AArch64/ARM64 now considers its FMV support to be stable and complete.

With [1]this commit yesterday to the GCC Git codebase ahead of next year's GCC 16.1 compiler release, Function Multi-Versioning is now treated as stable on 64-bit ARM hardware.

Up to now using FMV on AArch64 would emit a warning:

"Function Multi Versioning support is experimental, and the behavior is likely to change"

But now the FMV support on AArch64 is considered spec compliant and good enough for treating as stable. Arm engineers had been [2]working on GCC FMV support the past 3+ years .

Arm's FMV support allows calling different functions if the processor supports Scalable Vector Extension (SVE), Scalable Matrix Extension (SME), the dot product extension, and a wide variety of other Arm ISA features. The Arm FMV specification is documented via [3]this repository .

Those wanting to learn more about GCC's FMV support can do so via the [4]GCC Wiki .



[1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=de60b080e3f8b105b2f69c56de3aeb996f4e81e6

[2] https://www.phoronix.com/news/Arm-GCC-Function-Multi-Ver

[3] https://github.com/ARM-software/acle/blob/main/main/acle.md#function-multi-versioning

[4] https://gcc.gnu.org/wiki/FunctionMultiVersioning



chuckula

Stayed in bed all morning just to pass the time,
There's something wrong here, there can be no more denying,
One of us is changing, or maybe we just stopped trying,

And it's too late, baby, now, it's too late,
Though we really did try to make it,
Something inside has died and I can't hide and I just can't fake it...

It used to be so easy living here with you,
You were light and breezy and I knew just what to do
Now you look so unhappy and I feel like a fool.

There'll be good times again for me and you,
But we just can't stay together, don't you feel it too?
But I'm glad for what we had and that I once loved you...

But it's too late baby...
It's too late, now darling, it's too late...
-- Carol King, "Tapestry"