19d005392SPhilippe Mathieu-Daudé /*
29d005392SPhilippe Mathieu-Daudé * VR5432 extensions translation routines
39d005392SPhilippe Mathieu-Daudé *
49d005392SPhilippe Mathieu-Daudé * Reference: VR5432 Microprocessor User’s Manual
59d005392SPhilippe Mathieu-Daudé * (Document Number U13751EU5V0UM00)
69d005392SPhilippe Mathieu-Daudé *
79d005392SPhilippe Mathieu-Daudé * Copyright (c) 2021 Philippe Mathieu-Daudé
89d005392SPhilippe Mathieu-Daudé *
99d005392SPhilippe Mathieu-Daudé * SPDX-License-Identifier: GPL-2.0-or-later
109d005392SPhilippe Mathieu-Daudé */
119d005392SPhilippe Mathieu-Daudé
129d005392SPhilippe Mathieu-Daudé #include "qemu/osdep.h"
139d005392SPhilippe Mathieu-Daudé #include "translate.h"
149d005392SPhilippe Mathieu-Daudé
159d005392SPhilippe Mathieu-Daudé /* Include the auto-generated decoder. */
169d005392SPhilippe Mathieu-Daudé #include "decode-vr54xx.c.inc"
175fa38eedSPhilippe Mathieu-Daudé
185fa38eedSPhilippe Mathieu-Daudé /*
195fa38eedSPhilippe Mathieu-Daudé * Integer Multiply-Accumulate Instructions
205fa38eedSPhilippe Mathieu-Daudé *
215fa38eedSPhilippe Mathieu-Daudé * MACC Multiply, accumulate, and move LO
225fa38eedSPhilippe Mathieu-Daudé * MACCHI Multiply, accumulate, and move HI
235fa38eedSPhilippe Mathieu-Daudé * MACCHIU Unsigned multiply, accumulate, and move HI
245fa38eedSPhilippe Mathieu-Daudé * MACCU Unsigned multiply, accumulate, and move LO
25bf772002SPhilippe Mathieu-Daudé * MSAC Multiply, negate, accumulate, and move LO
26bf772002SPhilippe Mathieu-Daudé * MSACHI Multiply, negate, accumulate, and move HI
27bf772002SPhilippe Mathieu-Daudé * MSACHIU Unsigned multiply, negate, accumulate, and move HI
28bf772002SPhilippe Mathieu-Daudé * MSACU Unsigned multiply, negate, accumulate, and move LO
29a5e29320SPhilippe Mathieu-Daudé * MULHI Multiply and move HI
30a5e29320SPhilippe Mathieu-Daudé * MULHIU Unsigned multiply and move HI
31a5e29320SPhilippe Mathieu-Daudé * MULS Multiply, negate, and move LO
32a5e29320SPhilippe Mathieu-Daudé * MULSHI Multiply, negate, and move HI
33a5e29320SPhilippe Mathieu-Daudé * MULSHIU Unsigned multiply, negate, and move HI
34a5e29320SPhilippe Mathieu-Daudé * MULSU Unsigned multiply, negate, and move LO
355fa38eedSPhilippe Mathieu-Daudé */
365fa38eedSPhilippe Mathieu-Daudé
trans_mult_acc(DisasContext * ctx,arg_r * a,void (* gen_helper_mult_acc)(TCGv,TCGv_ptr,TCGv,TCGv))375fa38eedSPhilippe Mathieu-Daudé static bool trans_mult_acc(DisasContext *ctx, arg_r *a,
385fa38eedSPhilippe Mathieu-Daudé void (*gen_helper_mult_acc)(TCGv, TCGv_ptr, TCGv, TCGv))
395fa38eedSPhilippe Mathieu-Daudé {
405fa38eedSPhilippe Mathieu-Daudé TCGv t0 = tcg_temp_new();
415fa38eedSPhilippe Mathieu-Daudé TCGv t1 = tcg_temp_new();
425fa38eedSPhilippe Mathieu-Daudé
435fa38eedSPhilippe Mathieu-Daudé gen_load_gpr(t0, a->rs);
445fa38eedSPhilippe Mathieu-Daudé gen_load_gpr(t1, a->rt);
455fa38eedSPhilippe Mathieu-Daudé
46*ad75a51eSRichard Henderson gen_helper_mult_acc(t0, tcg_env, t0, t1);
475fa38eedSPhilippe Mathieu-Daudé
485fa38eedSPhilippe Mathieu-Daudé gen_store_gpr(t0, a->rd);
49f2eb9312SRichard Henderson return true;
505fa38eedSPhilippe Mathieu-Daudé }
515fa38eedSPhilippe Mathieu-Daudé
525fa38eedSPhilippe Mathieu-Daudé TRANS(MACC, trans_mult_acc, gen_helper_macc);
535fa38eedSPhilippe Mathieu-Daudé TRANS(MACCHI, trans_mult_acc, gen_helper_macchi);
545fa38eedSPhilippe Mathieu-Daudé TRANS(MACCHIU, trans_mult_acc, gen_helper_macchiu);
555fa38eedSPhilippe Mathieu-Daudé TRANS(MACCU, trans_mult_acc, gen_helper_maccu);
56bf772002SPhilippe Mathieu-Daudé TRANS(MSAC, trans_mult_acc, gen_helper_msac);
57bf772002SPhilippe Mathieu-Daudé TRANS(MSACHI, trans_mult_acc, gen_helper_msachi);
58bf772002SPhilippe Mathieu-Daudé TRANS(MSACHIU, trans_mult_acc, gen_helper_msachiu);
59bf772002SPhilippe Mathieu-Daudé TRANS(MSACU, trans_mult_acc, gen_helper_msacu);
60a5e29320SPhilippe Mathieu-Daudé TRANS(MULHI, trans_mult_acc, gen_helper_mulhi);
61a5e29320SPhilippe Mathieu-Daudé TRANS(MULHIU, trans_mult_acc, gen_helper_mulhiu);
62a5e29320SPhilippe Mathieu-Daudé TRANS(MULS, trans_mult_acc, gen_helper_muls);
63a5e29320SPhilippe Mathieu-Daudé TRANS(MULSHI, trans_mult_acc, gen_helper_mulshi);
64a5e29320SPhilippe Mathieu-Daudé TRANS(MULSHIU, trans_mult_acc, gen_helper_mulshiu);
65a5e29320SPhilippe Mathieu-Daudé TRANS(MULSU, trans_mult_acc, gen_helper_mulsu);
66