Merge tag 'qemu-macppc-20230206' of https://github.com/mcayland/qemu into staging
[qemu.git] / target / hexagon / genptr.h
blob591b059698688ca12774586ce5f55d0537a0588a
1 /*
2 * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, see <http://www.gnu.org/licenses/>.
18 #ifndef HEXAGON_GENPTR_H
19 #define HEXAGON_GENPTR_H
21 #include "insn.h"
22 #include "tcg/tcg.h"
23 #include "translate.h"
25 extern const SemanticInsn opcode_genptr[];
27 void gen_store32(TCGv vaddr, TCGv src, int width, uint32_t slot);
28 void gen_store1(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot);
29 void gen_store2(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot);
30 void gen_store4(TCGv_env cpu_env, TCGv vaddr, TCGv src, uint32_t slot);
31 void gen_store8(TCGv_env cpu_env, TCGv vaddr, TCGv_i64 src, uint32_t slot);
32 void gen_store1i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot);
33 void gen_store2i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot);
34 void gen_store4i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot);
35 void gen_store8i(TCGv_env cpu_env, TCGv vaddr, int64_t src, uint32_t slot);
36 TCGv gen_read_reg(TCGv result, int num);
37 TCGv gen_read_preg(TCGv pred, uint8_t num);
38 void gen_log_reg_write(int rnum, TCGv val);
39 void gen_log_pred_write(DisasContext *ctx, int pnum, TCGv val);
40 void gen_set_usr_field(int field, TCGv val);
41 void gen_set_usr_fieldi(int field, int x);
42 void gen_set_usr_field_if(int field, TCGv val);
43 void gen_sat_i32(TCGv dest, TCGv source, int width);
44 void gen_sat_i32_ovfl(TCGv ovfl, TCGv dest, TCGv source, int width);
45 void gen_satu_i32(TCGv dest, TCGv source, int width);
46 void gen_satu_i32_ovfl(TCGv ovfl, TCGv dest, TCGv source, int width);
47 void gen_sat_i64(TCGv_i64 dest, TCGv_i64 source, int width);
48 void gen_sat_i64_ovfl(TCGv ovfl, TCGv_i64 dest, TCGv_i64 source, int width);
49 void gen_satu_i64(TCGv_i64 dest, TCGv_i64 source, int width);
50 void gen_satu_i64_ovfl(TCGv ovfl, TCGv_i64 dest, TCGv_i64 source, int width);
51 void gen_add_sat_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b);
52 TCGv gen_8bitsof(TCGv result, TCGv value);
53 void gen_set_byte_i64(int N, TCGv_i64 result, TCGv src);
54 TCGv gen_get_byte(TCGv result, int N, TCGv src, bool sign);
55 TCGv gen_get_byte_i64(TCGv result, int N, TCGv_i64 src, bool sign);
56 TCGv gen_get_half(TCGv result, int N, TCGv src, bool sign);
57 void gen_set_half(int N, TCGv result, TCGv src);
58 void gen_set_half_i64(int N, TCGv_i64 result, TCGv src);
59 void probe_noshuf_load(TCGv va, int s, int mi);
61 #endif