Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AARCH64 assembly syntax for ARMCLANG

Hello,

where can I get documentation for the AARCH64 and NEON64 assembly syntax for armclang (internal assembler)

I have some issues when compiling my GNU assembly code with armclang.

For example, the instruction:

MOV v0.2d[0], x4

reports "error: invalid operand for instruction"


Thank you,


Cesare Ferri (cferri@marvell.com)



Parents
  • The syntax of the instruction should be: "MOV v0.d[0], x4"  

    You normally write "2d" (or similar) to specify the total length of the vector.  As you are moving into a specific entry into the vector, it's total length isn't important.

    Interestingly, testing with armasm - it did accept "MOV v0.2d[0], x4" but disassembled it back to "MOV v0.d[0], x4".  Looking at the ARM ARM description (C7.3.175), it's syntax matches "MOV v0.d[0], x4" - so I don't think armclang is technically wrong to reject it.  Although perhaps overally strict.

Reply
  • The syntax of the instruction should be: "MOV v0.d[0], x4"  

    You normally write "2d" (or similar) to specify the total length of the vector.  As you are moving into a specific entry into the vector, it's total length isn't important.

    Interestingly, testing with armasm - it did accept "MOV v0.2d[0], x4" but disassembled it back to "MOV v0.d[0], x4".  Looking at the ARM ARM description (C7.3.175), it's syntax matches "MOV v0.d[0], x4" - so I don't think armclang is technically wrong to reject it.  Although perhaps overally strict.

Children
No data