https://bugs.kde.org/show_bug.cgi?id=487439
--- Comment #10 from Mark Wielaard <m...@klomp.org> --- (In reply to Paul Floyd from comment #9) > diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c > index f0b1c5516..28c37f092 100644 > --- a/VEX/priv/guest_amd64_toIR.c > +++ b/VEX/priv/guest_amd64_toIR.c > @@ -14138,7 +14138,7 @@ Long dis_ESC_0F__SSE2 ( Bool* decode_OK, > goto decode_success; > } > /* 66 0F 73 /6 ib = PSLLQ by immediate */ > - if (have66noF2noF3(pfx) && sz == 2 > + if (have66noF2noF3(pfx) && (sz == 2 || /* ignore redundant REX.W */ > sz == 8) > && epartIsReg(getUChar(delta)) > && gregLO3ofRM(getUChar(delta)) == 6) { > delta = dis_SSE_shiftE_imm( pfx, delta, "psllq", Iop_ShlN64x2 ); > > Mark, do you know how to force using rex.W in assembler? It looks like binutils gas allows you to use rex.W as prefix, so: rex.W psllq $12, %xmm1 The documentation is a little confusing though (I am not sure whether W should be seen as X, Y and Z extension bit or not): https://sourceware.org/binutils/docs/as/i386_002dPrefixes.html The ‘rex’ family of prefixes is used by x86-64 to encode extensions to i386 instruction set. The ‘rex’ prefix has four bits — an operand size overwrite (64) used to change operand size from 32-bit to 64-bit and X, Y and Z extensions bits used to extend the register set. You may write the ‘rex’ prefixes directly. The ‘rex64xyz’ instruction emits ‘rex’ prefix with all the bits set. By omitting the 64, x, y or z you may write other prefixes as well. Normally, there is no need to write the prefixes explicitly, since gas will automatically generate them based on the instruction operands. -- You are receiving this mail because: You are watching all bug changes.