On 19/07/19 13:51, Peter Maydell wrote: >> I haven't looked closely at the code but I would guess that the >> fallthrough is intended, because the default label has an "ot == MO_16" >> condition. > Yeah, this code is really weird -- if TARGET_X86_64 then > MO_16 falls through into MO_32, but if only i386 then > MO_16 falls through into the default case ?!?
Yes, and in either case MO_16 falls through into the 32-bit code. However, the i386 32-bit version and the x86-64 64-bit version are unified into a single piece of code for TARGET_LONG_BITS-bit operands. Almost, because you still need that ugly special case for MO_16 in the default label. Paolo