On Sat, 25 May 2024 at 00:27, Richard Henderson <richard.hender...@linaro.org> wrote: > > These are the only instructions in the 3 source scalar class. > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/tcg/a64.decode | 10 ++ > target/arm/tcg/translate-a64.c | 233 ++++++++++++--------------------- > 2 files changed, 93 insertions(+), 150 deletions(-) >
> static void disas_data_proc_fp(DisasContext *s, uint32_t insn) > { > - if (extract32(insn, 24, 1)) { > - /* Floating point data-processing (3 source) */ > - disas_fp_3src(s, insn); > - } else if (extract32(insn, 21, 1) == 0) { > + if (extract32(insn, 21, 1) == 0) { > /* Floating point to fixed point conversions */ > disas_fp_fixed_conv(s, insn); > } else { Doesn't this result in the unallocated-encodings in the fp-3src class now falling into the "else" clause and being mis-decoded as the wrong thing? I think this needs to be if (extract32(insn, 24, 1)) { unallocated_encoding(); } else if (extract32(insn, 21, 1) == 0) { [etc] thanks -- PMM