summary refs log tree commit diff stats
path: root/scripts/tracetool/backend/log.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-05-09 12:38:10 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2024-05-10 15:45:14 +0200
commit41c685dc59bb611096f3bb6a663cfa82e4cba97b (patch)
treef011fcbed8e10538ea3d14f2d576e0c281ada6e7 /scripts/tracetool/backend/log.py
parent9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3 (diff)
downloadfocaccia-qemu-41c685dc59bb611096f3bb6a663cfa82e4cba97b.tar.gz
focaccia-qemu-41c685dc59bb611096f3bb6a663cfa82e4cba97b.zip
target/i386: fix operand size for DATA16 REX.W POPCNT
According to the manual, 32-bit vs 64-bit is governed by REX.W
and REX ignores the 0x66 prefix.  This can be confirmed with this
program:

    #include <stdio.h>
    int main()
    {
       int x = 0x12340000;
       int y;
       asm("popcntl %1, %0" : "=r" (y) : "r" (x)); printf("%x\n", y);
       asm("mov $-1, %0; .byte 0x66; popcntl %1, %0" : "+r" (y) : "r" (x)); printf("%x\n", y);
       asm("mov $-1, %0; .byte 0x66; popcntq %q1, %q0" : "+r" (y) : "r" (x)); printf("%x\n", y);
    }

which prints 5/ffff0000/5 on real hardware and 5/ffff0000/ffff0000
on QEMU.

Cc: qemu-stable@nongnu.org
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'scripts/tracetool/backend/log.py')
0 files changed, 0 insertions, 0 deletions