]>
Commit | Line | Data |
---|---|---|
a06ea964 | 1 | /* aarch64-asm.h -- Header file for aarch64-asm.c and aarch64-asm-2.c. |
b3adc24a | 2 | Copyright (C) 2012-2020 Free Software Foundation, Inc. |
a06ea964 NC |
3 | Contributed by ARM Ltd. |
4 | ||
5 | This file is part of the GNU opcodes library. | |
6 | ||
7 | This library is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3, or (at your option) | |
10 | any later version. | |
11 | ||
12 | It is distributed in the hope that it will be useful, but WITHOUT | |
13 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
14 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public | |
15 | License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program; see the file COPYING3. If not, | |
19 | see <http://www.gnu.org/licenses/>. */ | |
20 | ||
21 | #ifndef OPCODES_AARCH64_ASM_H | |
22 | #define OPCODES_AARCH64_ASM_H | |
23 | ||
24 | #include "aarch64-opc.h" | |
25 | ||
26 | /* Given OPCODE, return the opcode entry that OPCODE aliases to, e.g. | |
27 | given LSL, return UBFM. */ | |
28 | ||
29 | const aarch64_opcode* aarch64_find_real_opcode (const aarch64_opcode *); | |
30 | ||
31 | /* Switch-table-based high-level operand inserter. */ | |
32 | ||
561a72d4 | 33 | bfd_boolean aarch64_insert_operand (const aarch64_operand *, |
a06ea964 | 34 | const aarch64_opnd_info *, aarch64_insn *, |
561a72d4 TC |
35 | const aarch64_inst *, |
36 | aarch64_operand_error *); | |
a06ea964 NC |
37 | |
38 | /* Operand inserters. */ | |
39 | ||
40 | #define AARCH64_DECL_OPD_INSERTER(x) \ | |
561a72d4 TC |
41 | bfd_boolean aarch64_##x (const aarch64_operand *, const aarch64_opnd_info *, \ |
42 | aarch64_insn *, const aarch64_inst *, \ | |
43 | aarch64_operand_error *) | |
a06ea964 | 44 | |
c2e5c986 | 45 | AARCH64_DECL_OPD_INSERTER (ins_none); |
a06ea964 NC |
46 | AARCH64_DECL_OPD_INSERTER (ins_regno); |
47 | AARCH64_DECL_OPD_INSERTER (ins_reglane); | |
48 | AARCH64_DECL_OPD_INSERTER (ins_reglist); | |
49 | AARCH64_DECL_OPD_INSERTER (ins_ldst_reglist); | |
50 | AARCH64_DECL_OPD_INSERTER (ins_ldst_reglist_r); | |
51 | AARCH64_DECL_OPD_INSERTER (ins_ldst_elemlist); | |
52 | AARCH64_DECL_OPD_INSERTER (ins_advsimd_imm_shift); | |
53 | AARCH64_DECL_OPD_INSERTER (ins_imm); | |
54 | AARCH64_DECL_OPD_INSERTER (ins_imm_half); | |
55 | AARCH64_DECL_OPD_INSERTER (ins_advsimd_imm_modified); | |
aa2aa4c6 | 56 | AARCH64_DECL_OPD_INSERTER (ins_fpimm); |
a06ea964 NC |
57 | AARCH64_DECL_OPD_INSERTER (ins_fbits); |
58 | AARCH64_DECL_OPD_INSERTER (ins_aimm); | |
59 | AARCH64_DECL_OPD_INSERTER (ins_limm); | |
e950b345 | 60 | AARCH64_DECL_OPD_INSERTER (ins_inv_limm); |
a06ea964 NC |
61 | AARCH64_DECL_OPD_INSERTER (ins_ft); |
62 | AARCH64_DECL_OPD_INSERTER (ins_addr_simple); | |
f42f1a1d | 63 | AARCH64_DECL_OPD_INSERTER (ins_addr_offset); |
a06ea964 NC |
64 | AARCH64_DECL_OPD_INSERTER (ins_addr_regoff); |
65 | AARCH64_DECL_OPD_INSERTER (ins_addr_simm); | |
3f06e550 | 66 | AARCH64_DECL_OPD_INSERTER (ins_addr_simm10); |
a06ea964 NC |
67 | AARCH64_DECL_OPD_INSERTER (ins_addr_uimm12); |
68 | AARCH64_DECL_OPD_INSERTER (ins_simd_addr_post); | |
69 | AARCH64_DECL_OPD_INSERTER (ins_cond); | |
70 | AARCH64_DECL_OPD_INSERTER (ins_sysreg); | |
71 | AARCH64_DECL_OPD_INSERTER (ins_pstatefield); | |
72 | AARCH64_DECL_OPD_INSERTER (ins_sysins_op); | |
73 | AARCH64_DECL_OPD_INSERTER (ins_barrier); | |
fd195909 | 74 | AARCH64_DECL_OPD_INSERTER (ins_barrier_dsb_nxs); |
9ed608f9 | 75 | AARCH64_DECL_OPD_INSERTER (ins_hint); |
a06ea964 NC |
76 | AARCH64_DECL_OPD_INSERTER (ins_prfop); |
77 | AARCH64_DECL_OPD_INSERTER (ins_reg_extended); | |
78 | AARCH64_DECL_OPD_INSERTER (ins_reg_shifted); | |
582e12bf | 79 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s4); |
98907a70 RS |
80 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s4xvl); |
81 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s6xvl); | |
82 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s9xvl); | |
4df068de RS |
83 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_u6); |
84 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_rr_lsl); | |
85 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_rz_xtw); | |
86 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zi_u5); | |
87 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zz_lsl); | |
88 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zz_sxtw); | |
89 | AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zz_uxtw); | |
e950b345 RS |
90 | AARCH64_DECL_OPD_INSERTER (ins_sve_aimm); |
91 | AARCH64_DECL_OPD_INSERTER (ins_sve_asimm); | |
165d4950 RS |
92 | AARCH64_DECL_OPD_INSERTER (ins_sve_float_half_one); |
93 | AARCH64_DECL_OPD_INSERTER (ins_sve_float_half_two); | |
94 | AARCH64_DECL_OPD_INSERTER (ins_sve_float_zero_one); | |
f11ad6bc | 95 | AARCH64_DECL_OPD_INSERTER (ins_sve_index); |
e950b345 | 96 | AARCH64_DECL_OPD_INSERTER (ins_sve_limm_mov); |
582e12bf | 97 | AARCH64_DECL_OPD_INSERTER (ins_sve_quad_index); |
f11ad6bc | 98 | AARCH64_DECL_OPD_INSERTER (ins_sve_reglist); |
2442d846 | 99 | AARCH64_DECL_OPD_INSERTER (ins_sve_scale); |
e950b345 RS |
100 | AARCH64_DECL_OPD_INSERTER (ins_sve_shlimm); |
101 | AARCH64_DECL_OPD_INSERTER (ins_sve_shrimm); | |
582e12bf RS |
102 | AARCH64_DECL_OPD_INSERTER (ins_imm_rotate1); |
103 | AARCH64_DECL_OPD_INSERTER (ins_imm_rotate2); | |
a06ea964 NC |
104 | |
105 | #undef AARCH64_DECL_OPD_INSERTER | |
106 | ||
107 | #endif /* OPCODES_AARCH64_ASM_H */ |