]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - opcodes/aarch64-asm.h
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / opcodes / aarch64-asm.h
CommitLineData
a06ea964 1/* aarch64-asm.h -- Header file for aarch64-asm.c and aarch64-asm-2.c.
fd67aa11 2 Copyright (C) 2012-2024 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
29const aarch64_opcode* aarch64_find_real_opcode (const aarch64_opcode *);
30
31/* Switch-table-based high-level operand inserter. */
32
78933a4a
AM
33bool aarch64_insert_operand (const aarch64_operand *,
34 const aarch64_opnd_info *, aarch64_insn *,
35 const aarch64_inst *, aarch64_operand_error *);
a06ea964
NC
36
37/* Operand inserters. */
38
39#define AARCH64_DECL_OPD_INSERTER(x) \
78933a4a
AM
40 bool aarch64_##x (const aarch64_operand *, const aarch64_opnd_info *, \
41 aarch64_insn *, const aarch64_inst *, \
42 aarch64_operand_error *)
a06ea964 43
c2e5c986 44AARCH64_DECL_OPD_INSERTER (ins_none);
a06ea964
NC
45AARCH64_DECL_OPD_INSERTER (ins_regno);
46AARCH64_DECL_OPD_INSERTER (ins_reglane);
47AARCH64_DECL_OPD_INSERTER (ins_reglist);
48AARCH64_DECL_OPD_INSERTER (ins_ldst_reglist);
49AARCH64_DECL_OPD_INSERTER (ins_ldst_reglist_r);
50AARCH64_DECL_OPD_INSERTER (ins_ldst_elemlist);
51AARCH64_DECL_OPD_INSERTER (ins_advsimd_imm_shift);
52AARCH64_DECL_OPD_INSERTER (ins_imm);
53AARCH64_DECL_OPD_INSERTER (ins_imm_half);
54AARCH64_DECL_OPD_INSERTER (ins_advsimd_imm_modified);
aa2aa4c6 55AARCH64_DECL_OPD_INSERTER (ins_fpimm);
a06ea964
NC
56AARCH64_DECL_OPD_INSERTER (ins_fbits);
57AARCH64_DECL_OPD_INSERTER (ins_aimm);
58AARCH64_DECL_OPD_INSERTER (ins_limm);
e950b345 59AARCH64_DECL_OPD_INSERTER (ins_inv_limm);
a06ea964
NC
60AARCH64_DECL_OPD_INSERTER (ins_ft);
61AARCH64_DECL_OPD_INSERTER (ins_addr_simple);
f42f1a1d 62AARCH64_DECL_OPD_INSERTER (ins_addr_offset);
a06ea964
NC
63AARCH64_DECL_OPD_INSERTER (ins_addr_regoff);
64AARCH64_DECL_OPD_INSERTER (ins_addr_simm);
3f06e550 65AARCH64_DECL_OPD_INSERTER (ins_addr_simm10);
a06ea964
NC
66AARCH64_DECL_OPD_INSERTER (ins_addr_uimm12);
67AARCH64_DECL_OPD_INSERTER (ins_simd_addr_post);
68AARCH64_DECL_OPD_INSERTER (ins_cond);
69AARCH64_DECL_OPD_INSERTER (ins_sysreg);
70AARCH64_DECL_OPD_INSERTER (ins_pstatefield);
71AARCH64_DECL_OPD_INSERTER (ins_sysins_op);
72AARCH64_DECL_OPD_INSERTER (ins_barrier);
fd195909 73AARCH64_DECL_OPD_INSERTER (ins_barrier_dsb_nxs);
9ed608f9 74AARCH64_DECL_OPD_INSERTER (ins_hint);
a06ea964
NC
75AARCH64_DECL_OPD_INSERTER (ins_prfop);
76AARCH64_DECL_OPD_INSERTER (ins_reg_extended);
77AARCH64_DECL_OPD_INSERTER (ins_reg_shifted);
582e12bf 78AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s4);
98907a70
RS
79AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s4xvl);
80AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s6xvl);
81AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_s9xvl);
4df068de
RS
82AARCH64_DECL_OPD_INSERTER (ins_sve_addr_ri_u6);
83AARCH64_DECL_OPD_INSERTER (ins_sve_addr_rr_lsl);
84AARCH64_DECL_OPD_INSERTER (ins_sve_addr_rz_xtw);
85AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zi_u5);
86AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zz_lsl);
87AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zz_sxtw);
88AARCH64_DECL_OPD_INSERTER (ins_sve_addr_zz_uxtw);
e950b345 89AARCH64_DECL_OPD_INSERTER (ins_sve_aimm);
d8773a8a 90AARCH64_DECL_OPD_INSERTER (ins_sve_aligned_reglist);
e950b345 91AARCH64_DECL_OPD_INSERTER (ins_sve_asimm);
165d4950
RS
92AARCH64_DECL_OPD_INSERTER (ins_sve_float_half_one);
93AARCH64_DECL_OPD_INSERTER (ins_sve_float_half_two);
94AARCH64_DECL_OPD_INSERTER (ins_sve_float_zero_one);
f11ad6bc 95AARCH64_DECL_OPD_INSERTER (ins_sve_index);
e950b345 96AARCH64_DECL_OPD_INSERTER (ins_sve_limm_mov);
582e12bf 97AARCH64_DECL_OPD_INSERTER (ins_sve_quad_index);
f11ad6bc 98AARCH64_DECL_OPD_INSERTER (ins_sve_reglist);
b408ebbf 99AARCH64_DECL_OPD_INSERTER (ins_sve_strided_reglist);
2442d846 100AARCH64_DECL_OPD_INSERTER (ins_sve_scale);
e950b345
RS
101AARCH64_DECL_OPD_INSERTER (ins_sve_shlimm);
102AARCH64_DECL_OPD_INSERTER (ins_sve_shrimm);
7bb5f07c 103AARCH64_DECL_OPD_INSERTER (ins_sme_za_hv_tiles);
d8773a8a 104AARCH64_DECL_OPD_INSERTER (ins_sme_za_hv_tiles_range);
01a4d082
PW
105AARCH64_DECL_OPD_INSERTER (ins_sme_za_list);
106AARCH64_DECL_OPD_INSERTER (ins_sme_za_array);
107AARCH64_DECL_OPD_INSERTER (ins_sme_addr_ri_u4xvl);
3dd032c5 108AARCH64_DECL_OPD_INSERTER (ins_sme_sm_za);
d3de0860 109AARCH64_DECL_OPD_INSERTER (ins_sme_pred_reg_with_index);
582e12bf
RS
110AARCH64_DECL_OPD_INSERTER (ins_imm_rotate1);
111AARCH64_DECL_OPD_INSERTER (ins_imm_rotate2);
6327658e 112AARCH64_DECL_OPD_INSERTER (ins_x0_to_x30);
99e01a66 113AARCH64_DECL_OPD_INSERTER (ins_simple_index);
6efa6601 114AARCH64_DECL_OPD_INSERTER (ins_plain_shrimm);
a06ea964
NC
115
116#undef AARCH64_DECL_OPD_INSERTER
117
118#endif /* OPCODES_AARCH64_ASM_H */