On 02/27/2018 06:38 AM, Alex Bennée wrote: > @@ -11244,7 +11245,7 @@ static void disas_simd_indexed(DisasContext *s, > uint32_t insn) > } > /* fall through */ > case 0x9: /* FMUL, FMULX */ > - if (!extract32(size, 1, 1)) { > + if (size == 1) { > unallocated_encoding(s); > return; > }
This is still redundant, since size == 1 is handled... > @@ -11256,18 +11257,34 @@ static void disas_simd_indexed(DisasContext *s, > uint32_t insn) > } > > if (is_fp) { > - /* low bit of size indicates single/double */ > - size = extract32(size, 0, 1) ? 3 : 2; > - if (size == 2) { > + /* convert insn encoded size to TCGMemOp size */ > + switch (size) { > + case 2: /* single precision */ > + size = MO_32; > index = h << 1 | l; > - } else { > + rm |= (m << 4); > + break; > + case 3: /* double precision */ > + size = MO_64; > if (l || !is_q) { > unallocated_encoding(s); > return; > } > index = h; > + rm |= (m << 4); > + break; > + case 0: /* half precision */ > + size = MO_16; > + index = h << 2 | l << 1 | m; > + is_fp16 = true; > + if (arm_dc_feature(s, ARM_FEATURE_V8_FP16)) { > + break; > + } > + /* fallthru */ > + default: /* unallocated */ > + unallocated_encoding(s); > + return; > } ... here. But it's not wrong and I can clean this up along with the additional changes I need to make to this function for fcmla support. So, Reviewed-by: Richard Henderson <richard.hender...@linaro.org> r~