-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Arm v8.2 #8
base: master
Are you sure you want to change the base?
Arm v8.2 #8
Conversation
Thanks for the patch. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi. I've reviewed the patch against ARM DDI 0487B.b, which I believe is the last ARMv8.2 architecture manual. See the inline comments for some requested changes. It would also be useful if you could rebase it on the git HEAD, as I've already merged the AArch32 changes.
I haven't checked the SVE instructions, I think it would be more appropriate to leave them out or move them to a different PR
@@ -109,5 +113,19 @@ float_reg1 00011110 aa1bbbbb b10000cc cccddddd, a:type, b:opcode, c | |||
float_reg2 00011110 aa1bbbbb cccc10dd dddeeeee, a:type, b:rm, c:opcode, d:rn, e:rd | |||
float_reg3 00011111 aabccccc deeeeeff fffggggg, a:type, b:o1, c:rm, d:o0, e:Ra, f:rn, g:rd | |||
FMOV_immed 00011110 aa1bbbbb bbb10000 000ccccc, a:type, b:imm8, c:rd | |||
float_cvt_fixed a0011110 bb0ccddd eeeeeeff fffggggg, a:sf, b:type, c:rmode, d:opcode, e:scale, f:rn, g:rd | |||
float_cvt_int a0011110 bb1ccddd 000000ee eeefffff, a:sf, b:type, c:rmode, d:opcode, e:rn, f:rd | |||
float_immed a0b11110 cc1ddddd ddd100ee eeefffff, a:m, b:s, c:ptype, d:imm8, e:imm5, f:rd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As far as I can see on page C4-321, all the allocated instructions covered by float_immed
are already covered by FMOV_immed so I don't think float_immed is needed. Please double check this. In any case, we should only keep one of these 2 definitions.
float_cvt_int a0011110 bb1ccddd 000000ee eeefffff, a:sf, b:type, c:rmode, d:opcode, e:rn, f:rd | ||
float_immed a0b11110 cc1ddddd ddd100ee eeefffff, a:m, b:s, c:ptype, d:imm8, e:imm5, f:rd | ||
float_cvt_fixed a0s11110 bb0ccddd eeeeeeff fffggggg, a:sf, s:s, b:type, c:rmode, d:opcode, e:scale, f:rn, g:rd | ||
float_cvt_int a0s11110 bb1ccddd 000000ee eeefffff, a:sf, s:s, b:type, c:rmode, d:opcode, e:rn, f:rd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above for float_cvt_fixed and float_cvt_int, it doesn't look like S(bit 29)=1 for any of the instructions defined in ARMv8.2 (page C4-311).
float_immed a0b11110 cc1ddddd ddd100ee eeefffff, a:m, b:s, c:ptype, d:imm8, e:imm5, f:rd | ||
float_cvt_fixed a0s11110 bb0ccddd eeeeeeff fffggggg, a:sf, s:s, b:type, c:rmode, d:opcode, e:scale, f:rn, g:rd | ||
float_cvt_int a0s11110 bb1ccddd 000000ee eeefffff, a:sf, s:s, b:type, c:rmode, d:opcode, e:rn, f:rd | ||
simd_three_reg_ext 0ab01110 cc0ddddd 1oooo1ee eeefffff, a:q, b:u, c:size, d:rm, e:rn, f:rd, o:opcode |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is 'Advanced SIMD three same extra (page C4-296)', right? The name should be updated to better match the documentation
Encodings for ARM v8.2 instructions added.