On 10/17/19 9:01 AM, Alex Bennée wrote: >> + /* >> + * Rely on the TCG guarantee that out of range shifts produce >> + * unspecified results, not undefined behaviour (i.e. no trap). >> + * Discard out-of-range results after the fact. >> + */ >> + tcg_gen_ext8s_i32(lsh, b); >> + tcg_gen_neg_i32(rsh, lsh); >> + tcg_gen_shl_i32(lval, a, lsh); >> + tcg_gen_shr_i32(rval, a, rsh); >> + tcg_gen_movcond_i32(TCG_COND_LTU, d, lsh, max, lval, zero); >> + tcg_gen_movcond_i32(TCG_COND_LTU, d, rsh, max, rval, d); > > Do these get dead coded away if the shift is a const?
They would, although because of the form of the instruction, as a variable shift from a vector element, I don't expect it to ever be const. We will have just read the value from env memory. r~