-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[AArch64][SVE 27/32] Add SVE integer immediate operands
This patch adds the new SVE integer immediate operands. There are three kinds: - simple signed and unsigned ranges, but with new widths and positions. - 13-bit logical immediates. These have the same form as in base AArch64, but at a different bit position. In the case of the "MOV Zn.<T>, #<limm>" alias of DUPM, the logical immediate <limm> is not allowed to be a valid DUP immediate, since DUP is preferred over DUPM for constants that both instructions can handle. - a new 9-bit arithmetic immediate, of the form "<imm8>{, LSL #8}". In some contexts the operand is signed and in others it's unsigned. As an extension, we allow shifted immediates to be written as a single integer, e.g. "#256" is equivalent to "#1, LSL #8". We also use the shiftless form as the preferred disassembly, except for the special case of "#0, LSL #8" (a redundant encoding of 0). include/ * opcode/aarch64.h (AARCH64_OPND_SIMM5): New aarch64_opnd. (AARCH64_OPND_SVE_AIMM, AARCH64_OPND_SVE_ASIMM) (AARCH64_OPND_SVE_INV_LIMM, AARCH64_OPND_SVE_LIMM) (AARCH64_OPND_SVE_LIMM_MOV, AARCH64_OPND_SVE_SHLIMM_PRED) (AARCH64_OPND_SVE_SHLIMM_UNPRED, AARCH64_OPND_SVE_SHRIMM_PRED) (AARCH64_OPND_SVE_SHRIMM_UNPRED, AARCH64_OPND_SVE_SIMM5) (AARCH64_OPND_SVE_SIMM5B, AARCH64_OPND_SVE_SIMM6) (AARCH64_OPND_SVE_SIMM8, AARCH64_OPND_SVE_UIMM3) (AARCH64_OPND_SVE_UIMM7, AARCH64_OPND_SVE_UIMM8) (AARCH64_OPND_SVE_UIMM8_53): Likewise. (aarch64_sve_dupm_mov_immediate_p): Declare. opcodes/ * aarch64-tbl.h (AARCH64_OPERANDS): Add entries for the new SVE integer immediate operands. * aarch64-opc.h (FLD_SVE_immN, FLD_SVE_imm3, FLD_SVE_imm5) (FLD_SVE_imm5b, FLD_SVE_imm7, FLD_SVE_imm8, FLD_SVE_imm9) (FLD_SVE_immr, FLD_SVE_imms, FLD_SVE_tszh): New aarch64_field_kinds. * aarch64-opc.c (fields): Add corresponding entries. (operand_general_constraint_met_p): Handle the new SVE integer immediate operands. (aarch64_print_operand): Likewise. (aarch64_sve_dupm_mov_immediate_p): New function. * aarch64-opc-2.c: Regenerate. * aarch64-asm.h (ins_inv_limm, ins_sve_aimm, ins_sve_asimm) (ins_sve_limm_mov, ins_sve_shlimm, ins_sve_shrimm): New inserters. * aarch64-asm.c (aarch64_ins_limm_1): New function, split out from... (aarch64_ins_limm): ...here. (aarch64_ins_inv_limm): New function. (aarch64_ins_sve_aimm): Likewise. (aarch64_ins_sve_asimm): Likewise. (aarch64_ins_sve_limm_mov): Likewise. (aarch64_ins_sve_shlimm): Likewise. (aarch64_ins_sve_shrimm): Likewise. * aarch64-asm-2.c: Regenerate. * aarch64-dis.h (ext_inv_limm, ext_sve_aimm, ext_sve_asimm) (ext_sve_limm_mov, ext_sve_shlimm, ext_sve_shrimm): New extractors. * aarch64-dis.c (decode_limm): New function, split out from... (aarch64_ext_limm): ...here. (aarch64_ext_inv_limm): New function. (decode_sve_aimm): Likewise. (aarch64_ext_sve_aimm): Likewise. (aarch64_ext_sve_asimm): Likewise. (aarch64_ext_sve_limm_mov): Likewise. (aarch64_top_bit): Likewise. (aarch64_ext_sve_shlimm): Likewise. (aarch64_ext_sve_shrimm): Likewise. * aarch64-dis-2.c: Regenerate. gas/ * config/tc-aarch64.c (parse_operands): Handle the new SVE integer immediate operands.
- Loading branch information
1 parent
98907a7
commit e950b34
Showing
15 changed files
with
714 additions
and
100 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,8 @@ | ||
2016-09-21 Richard Sandiford <[email protected]> | ||
|
||
* config/tc-aarch64.c (parse_operands): Handle the new SVE integer | ||
immediate operands. | ||
|
||
2016-09-21 Richard Sandiford <[email protected]> | ||
|
||
* config/tc-aarch64.c (SHIFTED_NONE, SHIFTED_MUL_VL): New | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,17 @@ | ||
2016-09-21 Richard Sandiford <[email protected]> | ||
|
||
* opcode/aarch64.h (AARCH64_OPND_SIMM5): New aarch64_opnd. | ||
(AARCH64_OPND_SVE_AIMM, AARCH64_OPND_SVE_ASIMM) | ||
(AARCH64_OPND_SVE_INV_LIMM, AARCH64_OPND_SVE_LIMM) | ||
(AARCH64_OPND_SVE_LIMM_MOV, AARCH64_OPND_SVE_SHLIMM_PRED) | ||
(AARCH64_OPND_SVE_SHLIMM_UNPRED, AARCH64_OPND_SVE_SHRIMM_PRED) | ||
(AARCH64_OPND_SVE_SHRIMM_UNPRED, AARCH64_OPND_SVE_SIMM5) | ||
(AARCH64_OPND_SVE_SIMM5B, AARCH64_OPND_SVE_SIMM6) | ||
(AARCH64_OPND_SVE_SIMM8, AARCH64_OPND_SVE_UIMM3) | ||
(AARCH64_OPND_SVE_UIMM7, AARCH64_OPND_SVE_UIMM8) | ||
(AARCH64_OPND_SVE_UIMM8_53): Likewise. | ||
(aarch64_sve_dupm_mov_immediate_p): Declare. | ||
|
||
2016-09-21 Richard Sandiford <[email protected]> | ||
|
||
* opcode/aarch64.h (AARCH64_OPND_SVE_ADDR_RI_S4xVL): New aarch64_opnd. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,41 @@ | ||
2016-09-21 Richard Sandiford <[email protected]> | ||
|
||
* aarch64-tbl.h (AARCH64_OPERANDS): Add entries for the new SVE | ||
integer immediate operands. | ||
* aarch64-opc.h (FLD_SVE_immN, FLD_SVE_imm3, FLD_SVE_imm5) | ||
(FLD_SVE_imm5b, FLD_SVE_imm7, FLD_SVE_imm8, FLD_SVE_imm9) | ||
(FLD_SVE_immr, FLD_SVE_imms, FLD_SVE_tszh): New aarch64_field_kinds. | ||
* aarch64-opc.c (fields): Add corresponding entries. | ||
(operand_general_constraint_met_p): Handle the new SVE integer | ||
immediate operands. | ||
(aarch64_print_operand): Likewise. | ||
(aarch64_sve_dupm_mov_immediate_p): New function. | ||
* aarch64-opc-2.c: Regenerate. | ||
* aarch64-asm.h (ins_inv_limm, ins_sve_aimm, ins_sve_asimm) | ||
(ins_sve_limm_mov, ins_sve_shlimm, ins_sve_shrimm): New inserters. | ||
* aarch64-asm.c (aarch64_ins_limm_1): New function, split out from... | ||
(aarch64_ins_limm): ...here. | ||
(aarch64_ins_inv_limm): New function. | ||
(aarch64_ins_sve_aimm): Likewise. | ||
(aarch64_ins_sve_asimm): Likewise. | ||
(aarch64_ins_sve_limm_mov): Likewise. | ||
(aarch64_ins_sve_shlimm): Likewise. | ||
(aarch64_ins_sve_shrimm): Likewise. | ||
* aarch64-asm-2.c: Regenerate. | ||
* aarch64-dis.h (ext_inv_limm, ext_sve_aimm, ext_sve_asimm) | ||
(ext_sve_limm_mov, ext_sve_shlimm, ext_sve_shrimm): New extractors. | ||
* aarch64-dis.c (decode_limm): New function, split out from... | ||
(aarch64_ext_limm): ...here. | ||
(aarch64_ext_inv_limm): New function. | ||
(decode_sve_aimm): Likewise. | ||
(aarch64_ext_sve_aimm): Likewise. | ||
(aarch64_ext_sve_asimm): Likewise. | ||
(aarch64_ext_sve_limm_mov): Likewise. | ||
(aarch64_top_bit): Likewise. | ||
(aarch64_ext_sve_shlimm): Likewise. | ||
(aarch64_ext_sve_shrimm): Likewise. | ||
* aarch64-dis-2.c: Regenerate. | ||
|
||
2016-09-21 Richard Sandiford <[email protected]> | ||
|
||
* aarch64-tbl.h (AARCH64_OPERANDS): Add entries for new MUL VL | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.