qemu-e2k/target/i386
Joseph Myers c6a56c8e99 target/i386: fix pmovsx/pmovzx in-place operations
The SSE4.1 pmovsx* and pmovzx* instructions take packed 1-byte, 2-byte
or 4-byte inputs and sign-extend or zero-extend them to a wider vector
output.  The associated helpers for these instructions do the
extension on each element in turn, starting with the lowest.  If the
input and output are the same register, this means that all the input
elements after the first have been overwritten before they are read.
This patch makes the helpers extend starting with the highest element,
not the lowest, to avoid such overwriting.  This fixes many GCC test
failures (161 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.1708082018390.23380@digraph.polyomino.org.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2017-09-19 14:09:10 +02:00
..
Makefile.objs target/i386: add the CONFIG_TCG into Makefiles 2017-07-05 09:12:44 +02:00
TODO Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
arch_dump.c i386: introduce ELF_NOTE_SIZE macro 2017-08-31 12:29:07 +02:00
arch_memory_mapping.c target/i386: enable A20 automatically in system management mode 2017-06-07 18:22:02 +02:00
bpt_helper.c target-i386: Fix eflags.TF/#DB handling of syscall/sysret insns 2016-12-22 16:01:04 +01:00
cc_helper.c target-i386: Use ctpop helper 2017-01-10 08:49:59 -08:00
cc_helper_template.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
cpu-qom.h i386: Define static "base" CPU model 2017-02-27 13:23:27 -03:00
cpu.c QAPI patches for 2017-09-01 2017-09-04 13:28:09 +01:00
cpu.h x86: replace cpu_x86_init() with cpu_generic_init() 2017-09-01 11:54:25 -03:00
excp_helper.c target/i386: move TLB refill function out of helper.c 2017-07-05 09:12:44 +02:00
fpu_helper.c target/i386: split cpu_set_mxcsr() and make cpu_set_fpuc() inline 2017-07-05 09:12:44 +02:00
gdbstub.c x86: Fix x86_64 'g' packet response to gdb from 32-bit mode. 2016-12-22 16:00:25 +01:00
hax-all.c vcpu_dirty: share the same field in CPUState for all accelerators 2017-07-04 14:30:03 +02:00
hax-darwin.c hax: add Darwin support 2017-01-19 22:07:46 +01:00
hax-darwin.h hax: add Darwin support 2017-01-19 22:07:46 +01:00
hax-i386.h hax: add Darwin support 2017-01-19 22:07:46 +01:00
hax-interface.h target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
hax-mem.c hax: Fix memory mapping de-duplication logic 2017-05-05 12:10:00 +02:00
hax-windows.c target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
hax-windows.h target/i386: Add Intel HAX files 2017-01-19 22:07:46 +01:00
helper.c target/i386: add the tcg_enabled() in target/i386/ 2017-07-05 09:12:44 +02:00
helper.h target-i386: correctly propagate retaddr into SVM helpers 2017-02-16 18:37:01 +01:00
hyperv.c event_notifier: cleanups around event_notifier_set_handler 2017-01-16 17:52:35 +01:00
hyperv.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
int_helper.c target-i386: Use clz and ctz opcodes 2017-01-10 08:06:11 -08:00
kvm-stub.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
kvm.c target-i386: kvm_get/put_vcpu_events don't handle sipi_vector 2017-08-01 17:27:33 +02:00
kvm_i386.h Move CONFIG_KVM related definitions to kvm_i386.h 2017-07-04 14:30:03 +02:00
machine.c target/i386: add the tcg_enabled() in target/i386/ 2017-07-05 09:12:44 +02:00
mem_helper.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
misc_helper.c target/i386/misc_helper: wrap BQL around another IRQ generator 2017-04-10 10:14:50 +01:00
monitor.c hmp: allow apic-id for "info lapic" 2017-09-01 11:54:24 -03:00
mpx_helper.c target/i386: move cpu_sync_bndcs_hflags() function 2017-07-05 09:12:44 +02:00
ops_sse.h target/i386: fix pmovsx/pmovzx in-place operations 2017-09-19 14:09:10 +02:00
ops_sse_header.h target-i386: Use ctpop helper 2017-01-10 08:49:59 -08:00
seg_helper.c target/i386: simplify handling of conforming code segments on interrupt 2017-07-04 14:30:03 +02:00
shift_helper_template.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
smm_helper.c target/i386: use multiple CPU AddressSpaces 2017-06-07 18:22:02 +02:00
svm.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
svm_helper.c target-i386: defer VMEXIT to do_interrupt 2017-03-09 10:41:48 +00:00
trace-events docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
translate.c target/i386: [tcg] Port to generic translation framework 2017-09-06 08:06:47 -07:00
xsave_helper.c xsave_helper: pull xsave and xrstor out of kvm.c into helper function 2017-07-04 14:39:27 +02:00