Hi Charles,
Thanks for pointers. I was hoping this function be already present. But if it is not then I can work on it.
The decode routine “local function parse_imm13(op)” is available in dis_arm64.lua so I assumed that encode routine would also be somewhere in the code.
Abhishek Dikshit
From: Charles Baylis [mailto:charles.baylis@linaro.org]
Sent: Wednesday, July 27, 2016 5:57 AM
To: Dikshit, Abhishek
Cc: luajit@lists.linaro.org
Subject: Re: Looking for a function to encode from number to immr, imms values for ANDS instruction
On 27 July 2016 at 00:27, Dikshit, Abhishek <Abhishek.Dikshit@cavium.com> wrote:
Hi All
The immr and imms values are decoded to get an immediate value. Is there a way to encode from immediate value to immr and imms field for ARMv8 ?
Instruction
Routine.
The DecodeBitMasks routine is not very clear. Any help is appreciated.
Hi
In lj_emit_arm64.h, there is a stub for the function emit_isk13() which, when implemented, will return the 13 bits representing N:immr:imms if the constant can be encoded using this scheme, or -1 otherwise.
Are you working on implementing this function?
To understand how DecodeBitMasks works, I suggest creating some encodings, and disassembling them to see which values are displayed. You can do that as follows:
$ echo " .inst 0x72000000" > test.s
$ aarch64-linux-gnu-gcc -c test.s
$ aarch64-linux-gnu-objdump -D test.o
test.o: file format elf64-littleaarch64
Disassembly of section .text:
0000000000000000 <.text>:
0: 72000000 ands w0, w0, #0x1
Here, you can see that when N, immr and imms are all zero, the resulting constant has the value of 1. With some experimentation, the explanation in the ARM v8 architecture manual should become clear.
Hope this helps,
Charles