]> Git Repo - qemu.git/blob - target/loongarch/insn_trans/trans_extra.c.inc
target/loongarch: Add fixed point extra instruction translation
[qemu.git] / target / loongarch / insn_trans / trans_extra.c.inc
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (c) 2021 Loongson Technology Corporation Limited
4  */
5
6 static bool trans_break(DisasContext *ctx, arg_break *a)
7 {
8     generate_exception(ctx, EXCCODE_BRK);
9     return true;
10 }
11
12 static bool trans_syscall(DisasContext *ctx, arg_syscall *a)
13 {
14     generate_exception(ctx, EXCCODE_SYS);
15     return true;
16 }
17
18 static bool trans_asrtle_d(DisasContext *ctx, arg_asrtle_d * a)
19 {
20     TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
21     TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
22
23     gen_helper_asrtle_d(cpu_env, src1, src2);
24     return true;
25 }
26
27 static bool trans_asrtgt_d(DisasContext *ctx, arg_asrtgt_d * a)
28 {
29     TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
30     TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
31
32     gen_helper_asrtgt_d(cpu_env, src1, src2);
33     return true;
34 }
35
36 static bool trans_cpucfg(DisasContext *ctx, arg_cpucfg *a)
37 {
38     TCGv dest = gpr_dst(ctx, a->rd, EXT_NONE);
39     TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
40
41     gen_helper_cpucfg(dest, cpu_env, src1);
42     gen_set_gpr(a->rd, dest, EXT_NONE);
43
44     return true;
45 }
46
47 static bool gen_crc(DisasContext *ctx, arg_rrr *a,
48                     void (*func)(TCGv, TCGv, TCGv, TCGv),
49                     TCGv tsz)
50 {
51     TCGv dest = gpr_dst(ctx, a->rd, EXT_SIGN);
52     TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE);
53     TCGv src2 = gpr_src(ctx, a->rk, EXT_NONE);
54
55     func(dest, src2, src1, tsz);
56     gen_set_gpr(a->rd, dest, EXT_SIGN);
57
58     return true;
59 }
60
61 TRANS(crc_w_b_w, gen_crc, gen_helper_crc32, tcg_constant_tl(1))
62 TRANS(crc_w_h_w, gen_crc, gen_helper_crc32, tcg_constant_tl(2))
63 TRANS(crc_w_w_w, gen_crc, gen_helper_crc32, tcg_constant_tl(4))
64 TRANS(crc_w_d_w, gen_crc, gen_helper_crc32, tcg_constant_tl(8))
65 TRANS(crcc_w_b_w, gen_crc, gen_helper_crc32c, tcg_constant_tl(1))
66 TRANS(crcc_w_h_w, gen_crc, gen_helper_crc32c, tcg_constant_tl(2))
67 TRANS(crcc_w_w_w, gen_crc, gen_helper_crc32c, tcg_constant_tl(4))
68 TRANS(crcc_w_d_w, gen_crc, gen_helper_crc32c, tcg_constant_tl(8))
This page took 0.027873 seconds and 4 git commands to generate.