On 16 December 2013 08:54, Claudio Fontana <claudio.fontana@xxxxxxxxxx> wrote: > Hello Peter, > > On 13.12.2013 20:18, Peter Maydell wrote: >> From: Alexander Graf <agraf@xxxxxxx> >> >> This patch adds emulation for the "Data-processing (3 source)" >> family of instructions, namely MADD, MSUB, SMADDL, SMSUBL, SMULH, >> UMADDL, UMSUBL, UMULH. >> >> Signed-off-by: Alexander Graf <agraf@xxxxxxx> >> Signed-off-by: Alex Bennée <alex.bennee@xxxxxxxxxx> >> Signed-off-by: Peter Maydell <peter.maydell@xxxxxxxxxx> >> --- >> target-arm/translate-a64.c | 91 +++++++++++++++++++++++++++++++++++++++++++++- >> 1 file changed, 89 insertions(+), 2 deletions(-) >> >> diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c >> index a6f1945..b3e9449 100644 >> --- a/target-arm/translate-a64.c >> +++ b/target-arm/translate-a64.c >> @@ -2125,10 +2125,97 @@ static void disas_add_sub_reg(DisasContext *s, uint32_t insn) >> tcg_temp_free_i64(tcg_result); >> } >> >> -/* Data-processing (3 source) */ >> +/* C3.5.9 Data-processing (3 source) >> + >> + 31 30 29 28 24 23 21 20 16 15 14 10 9 5 4 0 >> + +--+------+-----------+------+------+----+------+------+------+ >> + |sf| op54 | 1 1 0 1 1 | op31 | Rm | o0 | Ra | Rn | Rd | >> + +--+------+-----------+------+------+----+------+------+------+ >> + >> + */ >> static void disas_data_proc_3src(DisasContext *s, uint32_t insn) >> { >> - unsupported_encoding(s, insn); >> + int rd = extract32(insn, 0, 5); >> + int rn = extract32(insn, 5, 5); >> + int ra = extract32(insn, 10, 5); >> + int rm = extract32(insn, 16, 5); >> + int op_id = (extract32(insn, 29, 3) << 4) | >> + (extract32(insn, 21, 3) << 1) | >> + extract32(insn, 15, 1); >> + bool is_32bit = !extract32(insn, 31, 1); > > we have used "sf" everywhere else.. Yes, might as well be consistent. >> + tcg_temp_free(low_bits); > > should this be tcg_temp_free_i64()? Yes, since we're preferring to be explicit about i32 vs i64 temps. (We know we're always building a 64 bit binary for translate-a64.c so in fact we can guarantee that tcg_temp_free is always tcg_temp_free_i64; but consistency with the 32 bit decoder is nice.) Fixed these nits in my working tree. thanks -- PMM _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm