target/i386: fix operand order for PDEP and PEXT
commit75b208c28316095c4685e8596ceb9e3f656592e2
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 23 Nov 2020 12:17:47 +0000 (23 07:17 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 10 Dec 2020 17:14:49 +0000 (10 12:14 -0500)
treeb5ecca206a49e734a405ac1b5da1bcf963016552
parent379e9eaed497a2e09b5985e1e15967d7bfea8296
target/i386: fix operand order for PDEP and PEXT

For PDEP and PEXT, the mask is provided in the memory (mod+r/m)
operand, and therefore is loaded in s->T0 by gen_ldst_modrm.
The source is provided in the second source operand (VEX.vvvv)
and therefore is loaded in s->T1.  Fix the order in which
they are passed to the helpers.

Reported-by: Lenard Szolnoki <blog@lenardszolnoki.com>
Analyzed-by: Lenard Szolnoki <blog@lenardszolnoki.com>
Fixes: https://bugs.launchpad.net/qemu/+bug/1605123
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/translate.c
tests/tcg/i386/Makefile.target
tests/tcg/i386/test-i386-bmi2.c [new file with mode: 0644]