We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm trying to access ARM/Thumb FEAT_FHM vfmal instructions with the GNU tool chains, without success. With every combination of flags I try, I'm getting output like this from the compiler:
asmtest.S:50: Error: selected processor does not support `vfmal.f16 d0,s1,s2' in ARM modeasmtest.S:51: Error: selected processor does not support `vfmal.f16 q3,d4,d5' in ARM modeasmtest.S:57: Error: selected processor does not support `vfmal.f16 d6,s7,s8[1]' in ARM modeasmtest.S:58: Error: selected processor does not support `vfmal.f16 q9,d10,d11[0]' in ARM modeasmtest.S:64: Error: selected processor does not support `vfmsl.f16 d0,s1,s2' in ARM modeasmtest.S:65: Error: selected processor does not support `vfmsl.f16 q3,d4,d5' in ARM modeasmtest.S:71: Error: selected processor does not support `vfmsl.f16 d6,s7,s8[1]' in ARM modeasmtest.S:72: Error: selected processor does not support `vfmsl.f16 q9,d10,d11[0]' in ARM mode
What options do I need to set for these instructions to be enabled? And if I encounter a similar problem in future with other instructions, what is the process to use to find the exact flag combinations that allow instructions to be accessed?
Ideally, I would like to be able to disable this check altogether and just have the compiler do what I ask without question. Is this possible?
Thanks.
These instructions are optional in Arm Architecture 8.2A and 8.3A, mandatory in 8.4A and later.https://developer.arm.com/documentation/100076/0100/a32-t32-instruction-set-reference/advanced-simd-instructions--32-bit-/vfmal--vector-
Which processor are you using?
I tested the 2021.7 release as below, and built successfully:
arm-none-eabi-as -c -march=armv8.2-a+fp16fml vfmal.S arm-none-eabi-as -c -march=armv8.3-a+fp16fml vfmal.S arm-none-eabi-as -c -march=armv8.4-a+fp16 vfmal.S
These 'feature modifiers' are described here:https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html#g_t-march-and--mcpu-Feature-Modifiers
I am using this compile line:
gcc-arm-10.3-2021.07-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc -c -march=armv8.4-a+fp16 -mfpu=neon-fp-armv8 asmtest.S -o asmtest.S.o
So I am I think using what you specified as option 3 without success. What am I doing wrong?
I want to use the resulting executable on the Foundation Platform which I believe implements these instructions.
Ok, I need to use:
-Wa,-march=armv8.4-a+fp16
To get this down to the assember I think.