On 10/18/2016 08:33 AM, Claudio Fontana wrote:
> + case INDEX_op_extract_i64:
> + case INDEX_op_extract_i32:
> + tcg_out_ubfm(s, ext, a0, a1, a2, a2 + args[3] - 1);
> + break;
> +
> + case INDEX_op_sextract_i64:
> + case INDEX_op_sextract_i32:
> + tcg_out_sbfm(s, ext, a0, a1, a2, a2 + args[3] - 1);
> + break;
> +
ah, probably missing something obvious.. not args[3]?
No, the r and s fields encode lsb and msb of the field.
I had the same wrong memory of the encoding; which is fair considering the
aarch32 instruction *does* use lsb and size-1.
The failure was quite obvious even in the disassembly once I actually got a
machine checked out to test it.
r~