On 09/26/2013 05:48 PM, Alexander Graf wrote: > +uint64_t HELPER(cinc)(uint32_t pstate, uint32_t insn, uint64_t n, uint64_t m) > +{ > + bool else_inc = get_bits(insn, 10, 1); > + int cond = get_bits(insn, 12, 4); > + bool else_inv = get_bits(insn, 30, 1); > + bool is_32bit = !get_bits(insn, 31, 1); > + uint64_t r; > + > + if (helper_cond(pstate, cond)) { > + r = n; > + goto out; > + } > + > + r = m; > + if (else_inv) { > + r = ~r; > + } > + if (else_inc) { > + r++; > + } > + > +out: > + if (is_32bit) { > + r = (uint32_t)r; > + } > + > + return r; > +}
Better to properly decode this during translate. And it's easy to do everything you need via setcond and movcond. r~