Fix arm64: LD1 missing immediate operand#1628
Fix arm64: LD1 missing immediate operand#1628ekilmer wants to merge 3 commits intocapstone-engine:nextfrom
Conversation
|
did you check with the latest LLVM 10, to see if they have this issue? |
|
I did not. Apologies, since I'm not too familiar with the workflow for fixing things like this, but I think this is what you want to see? $ llvm-mc --version
LLVM (http://llvm.org/):
LLVM version 10.0.0
Optimized build.
Default target: x86_64-unknown-linux-gnu
$ echo "0xe0 0x73 0xdf 0x0c" | llvm-mc --disassemble --show-encoding --show-inst-operands --show-inst --arch=aarch64
.text
ld1 { v0.8b }, [sp], #8 // encoding: [0xe0,0x73,0xdf,0x0c]
// <MCInst #2099 LD1Onev8b_POST
// <MCOperand Reg:5>
// <MCOperand Reg:41>
// <MCOperand Reg:5>
// <MCOperand Reg:8>>So, if I'm understanding that output correctly, it looks like the immediate is missing between Or it's something else. Maybe the immediate is implied, since I can only get $ echo "ld1 { v0.16b }, [sp], #16" | llvm-mc --assemble --show-encoding --show-inst-operands --show-inst --arch=aarch64
.text
<stdin>:1:1: note: parsed instruction: ['ld1', <vectorlist 121 >, '[', <register 5>, ']', 16]
ld1 { v0.16b }, [sp], #16
^
ld1 { v0.16b }, [sp], #16 // encoding: [0xe0,0x73,0xdf,0x4c]
// <MCInst #2087 LD1Onev16b_POST
// <MCOperand Reg:5>
// <MCOperand Reg:121>
// <MCOperand Reg:5>
// <MCOperand Reg:8>>Where Here's the manual for the instruction https://developer.arm.com/docs/ddi0596/e/simd-and-floating-point-instructions-alphabetic-order/ld1-multiple-structures-load-multiple-single-element-structures-to-one-two-three-or-four-registers 🤷 |
|
i just pushed a fix, please confirm. |
|
I think it only fixed a few variants. This one still doesn't work |
|
please make pull req |
|
Made new PR #1632 . Closing this one now. |
Fixes #1627
Not sure if this is the best way to fix this, but it seems to work