On Wed, Feb 10, 2021 at 10:08:51AM +0100, Peter Zijlstra wrote: > + /* skip nontrivial SIB */ > + if (modrm_rm == 4 && sib != 0x24) > + break;
Hmm,, maybe that should be: if (modrm_rm == 4 && !(sib == 0x24 && rex_b == rex_x)) Because what we have is that once we have a SIB byte, rex_b is for sib_base and rex_x is always sib_index, and we need to ensure that sib_base == sib_index for the trivial case. /me changes...