On 03/18/2014 09:02 AM, Peter Maydell wrote: > On 18 March 2014 15:48, Richard Henderson <r...@twiddle.net> wrote: >> Change the definition such that shifts are not allowed to crash >> for any input. >> >> Signed-off-by: Richard Henderson <r...@twiddle.net> >> --- >> tcg/README | 18 +++++++++++++----- >> 1 file changed, 13 insertions(+), 5 deletions(-) >> >> diff --git a/tcg/README b/tcg/README >> index f178212..431cee7 100644 >> --- a/tcg/README >> +++ b/tcg/README >> @@ -36,6 +36,12 @@ or a memory location which is stored in a register >> outside QEMU TBs >> A TCG "basic block" corresponds to a list of instructions terminated >> by a branch instruction. >> >> +An operation with "undefined behavior" may result in a crash. >> + >> +An operation with "unspecified behaviour" shall not crash. However, > > no 'u' would be consistent with the US spelling elsewhere.
Oops, by fingers have no consistency. > Incidentally, are deposit ops with bogus pos and len > undefined or unspecified behavior? (And is deposit of > 64 bits to bit 0 allowed?) Yes, deposit of 64 at 0 is allowed. Since deposit parameters are immediate constants instead of values in TCGv temporaries, we check them at opcode creation in tcg-op.h. Since we abort that's undefined, I guess. r~