Skip to content

Loading AArch64 immediate into register should be handled by the assembler

The CmmToAsm.AArch64 code for loading large immediate values for AArch64 currently uses a sequence of MOV/MOVK instructions - this is basically the code we would like to see produced, but it's something the assembler should be able to handle. If these are all replaced with the MOV pseudo instruction and a large immediate, the assembler should take care of finding the optimal set of immediate loads and shifts, as least according to https://devblogs.microsoft.com/oldnewthing/20220808-00/?p=106953.

I don't have access to an AArch64 machine to test, but the change should be small and easy to test.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information