OSDN Git Service

target/i386: set rip_offset for some SSE4.1 instructions
authorJoseph Myers <joseph@codesourcery.com>
Tue, 8 Aug 2017 00:43:38 +0000 (00:43 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 8 Aug 2017 08:40:20 +0000 (10:40 +0200)
commitab6ab3e9972a49a359f59895a88bed311472ca97
tree78e5a615953f63121bc978f5914457787d136d6b
parentded6ddc5a7b95217557fa360913d1213e12d4a6d
target/i386: set rip_offset for some SSE4.1 instructions

When emulating various SSE4.1 instructions such as pinsrd, the address
of a memory operand is computed without allowing for the 8-bit
immediate operand located after the memory operand, meaning that the
memory operand uses the wrong address in the case where it is
rip-relative.  This patch adds the required rip_offset setting for
those instructions, so fixing some GCC test failures (13 in the gcc
testsuite in my GCC 6-based testing) when testing with a default CPU
setting enabling those instructions.

Signed-off-by: Joseph Myers <joseph@codesourcery.com>
Message-Id: <alpine.DEB.2.20.1708080041391.28702@digraph.polyomino.org.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/translate.c