I am trying to use ARM inline assembly in a C code. I am compiling using aarch64-linux-android-clang version 3.8.243773, the 64 bit llvm toolchain from Android NDK R11.
The inline assembly code is as follows:
__asm__("ssat %w0, #24, %w1\n\t" : "=r" (val) : "r" (val) : );
The syntax of inline assembly code is correct and it compiles the syntax code as such but the assembler spits out a error saying
error: unrecognized instruction mnemonic ssat
What is the problem here? Doesn't llvm from the ndk toolchain support this assembly instruction?
How can I fix or workaround this issue?
thanks.
Hello,
You're assembling AArch64 code, but SSAT is an AArch32 instruction. You'll need to rewrite this to be using AArch64 instructions.
Hope that helps,
Ash
Hello Ash,
When i see the ARM DUI 0802A, which is armasm reference guide for all general instructions available for A64, and there is strangely no Saturation instruction, there is a saturation instruction for Advanced SIMD Vector (Neon) but thats not what i am looking to do?
Any pointers, workarounds?