[Qemu-commits] [qemu/qemu] 9f07e4: target/i386: remove PCOMMIT from TCG, deprecate pr...

2024-05-14 Thread Richard Henderson via Qemu-commits
  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3
  
https://github.com/qemu/qemu/commit/9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M docs/about/deprecated.rst
M target/i386/cpu.c
M target/i386/cpu.h
M target/i386/tcg/translate.c

  Log Message:
  ---
  target/i386: remove PCOMMIT from TCG, deprecate property

The PCOMMIT instruction was never included in any physical processor.
TCG implements it as a no-op instruction, but its utility is debatable
to say the least.  Drop it from the decoder since it is only available
with "-cpu max", which does not guarantee migration compatibility
across versions, and deprecate the property just in case someone is
using it as "pcommit=off".

Reviewed-by: Richard Henderson 
Signed-off-by: Paolo Bonzini 


  Commit: 41c685dc59bb611096f3bb6a663cfa82e4cba97b
  
https://github.com/qemu/qemu/commit/41c685dc59bb611096f3bb6a663cfa82e4cba97b
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/tcg/translate.c

  Log Message:
  ---
  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 
int main()
{
   int x = 0x1234;
   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//5 on real hardware and 5//
on QEMU.

Cc: qemu-sta...@nongnu.org
Reviewed-by: Zhao Liu 
Reviewed-by: Richard Henderson 
Signed-off-by: Paolo Bonzini 


  Commit: 40a3ec7b5ffde500789d016660a171057d6b467c
  
https://github.com/qemu/qemu/commit/40a3ec7b5ffde500789d016660a171057d6b467c
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/tcg/translate.c

  Log Message:
  ---
  target/i386: rdpkru/wrpkru are no-prefix instructions

Reject 0x66/0xf3/0xf2 in front of them.

Cc: qemu-sta...@nongnu.org
Reviewed-by: Richard Henderson 
Signed-off-by: Paolo Bonzini 


  Commit: 3fabbe0b7d458d6380f4b3246b8b32400f6bd1d9
  
https://github.com/qemu/qemu/commit/3fabbe0b7d458d6380f4b3246b8b32400f6bd1d9
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/tcg/decode-new.c.inc
M target/i386/tcg/decode-new.h
M target/i386/tcg/emit.c.inc
M target/i386/tcg/translate.c

  Log Message:
  ---
  target/i386: move prefetch and multi-byte UD/NOP to new decoder

These are trivial to add, and moving them to the new decoder fixes some
corner cases: raising #UD instead of an instruction fetch page fault for
the undefined opcodes, and incorrectly rejecting 0F 18 prefetches with
register operands (which are treated as reserved NOPs).

Reviewed-by: Richard Henderson 
Reviewed-by: Zhao Liu 
Signed-off-by: Paolo Bonzini 


  Commit: fe01af5d47d4cf7fdf90c54d43f784e5068c8d72
  
https://github.com/qemu/qemu/commit/fe01af5d47d4cf7fdf90c54d43f784e5068c8d72
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/cpu.c

  Log Message:
  ---
  target/i386: fix feature dependency for WAITPKG

The VMX feature bit depends on general availability of WAITPKG,
not the other way round.

Fixes: 33cc88261c3 ("target/i386: add support for 
VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE", 2023-08-28)
Cc: qemu-sta...@nongnu.org
Reviewed-by: Zhao Liu 
Signed-off-by: Paolo Bonzini 


  Commit: ff5b5739f97d08d9ca984ec8016b54487a76401b
  
https://github.com/qemu/qemu/commit/ff5b5739f97d08d9ca984ec8016b54487a76401b
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M tests/tcg/i386/test-i386.c

  Log Message:
  ---
  tests/tcg: cover lzcnt/tzcnt/popcnt

Reviewed-by: Zhao Liu 
Signed-off-by: Paolo Bonzini 


  Commit: 23b1f53c2c8990ed745acede171e49645af3d6d0
  
https://github.com/qemu/qemu/commit/23b1f53c2c8990ed745acede171e49645af3d6d0
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M configure

  Log Message:
  ---
  configure: quote -D options that are passed through to meson

Ensure that they go through unmodified, instead of removing one layer
of quoting.

-D is a pretty specialized option and most options that can have spaces
do not need it (for example, c_args is covered by --extra-cflags).
Therefore it's unlikely that this causes actual trouble.  However,
a somewhat realistic failure case would be with -Dpkg_config_path
and a pkg-config directory that contains spaces.

Cc: qemu-sta...@nongnu.org
Reviewed-by: Thomas Huth 

[Qemu-commits] [qemu/qemu] 9f07e4: target/i386: remove PCOMMIT from TCG, deprecate pr...

2024-05-12 Thread Richard Henderson via Qemu-commits
  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3
  
https://github.com/qemu/qemu/commit/9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M docs/about/deprecated.rst
M target/i386/cpu.c
M target/i386/cpu.h
M target/i386/tcg/translate.c

  Log Message:
  ---
  target/i386: remove PCOMMIT from TCG, deprecate property

The PCOMMIT instruction was never included in any physical processor.
TCG implements it as a no-op instruction, but its utility is debatable
to say the least.  Drop it from the decoder since it is only available
with "-cpu max", which does not guarantee migration compatibility
across versions, and deprecate the property just in case someone is
using it as "pcommit=off".

Reviewed-by: Richard Henderson 
Signed-off-by: Paolo Bonzini 


  Commit: 41c685dc59bb611096f3bb6a663cfa82e4cba97b
  
https://github.com/qemu/qemu/commit/41c685dc59bb611096f3bb6a663cfa82e4cba97b
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/tcg/translate.c

  Log Message:
  ---
  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 
int main()
{
   int x = 0x1234;
   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//5 on real hardware and 5//
on QEMU.

Cc: qemu-sta...@nongnu.org
Reviewed-by: Zhao Liu 
Reviewed-by: Richard Henderson 
Signed-off-by: Paolo Bonzini 


  Commit: 40a3ec7b5ffde500789d016660a171057d6b467c
  
https://github.com/qemu/qemu/commit/40a3ec7b5ffde500789d016660a171057d6b467c
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/tcg/translate.c

  Log Message:
  ---
  target/i386: rdpkru/wrpkru are no-prefix instructions

Reject 0x66/0xf3/0xf2 in front of them.

Cc: qemu-sta...@nongnu.org
Reviewed-by: Richard Henderson 
Signed-off-by: Paolo Bonzini 


  Commit: 3fabbe0b7d458d6380f4b3246b8b32400f6bd1d9
  
https://github.com/qemu/qemu/commit/3fabbe0b7d458d6380f4b3246b8b32400f6bd1d9
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/tcg/decode-new.c.inc
M target/i386/tcg/decode-new.h
M target/i386/tcg/emit.c.inc
M target/i386/tcg/translate.c

  Log Message:
  ---
  target/i386: move prefetch and multi-byte UD/NOP to new decoder

These are trivial to add, and moving them to the new decoder fixes some
corner cases: raising #UD instead of an instruction fetch page fault for
the undefined opcodes, and incorrectly rejecting 0F 18 prefetches with
register operands (which are treated as reserved NOPs).

Reviewed-by: Richard Henderson 
Reviewed-by: Zhao Liu 
Signed-off-by: Paolo Bonzini 


  Commit: fe01af5d47d4cf7fdf90c54d43f784e5068c8d72
  
https://github.com/qemu/qemu/commit/fe01af5d47d4cf7fdf90c54d43f784e5068c8d72
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M target/i386/cpu.c

  Log Message:
  ---
  target/i386: fix feature dependency for WAITPKG

The VMX feature bit depends on general availability of WAITPKG,
not the other way round.

Fixes: 33cc88261c3 ("target/i386: add support for 
VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE", 2023-08-28)
Cc: qemu-sta...@nongnu.org
Reviewed-by: Zhao Liu 
Signed-off-by: Paolo Bonzini 


  Commit: ff5b5739f97d08d9ca984ec8016b54487a76401b
  
https://github.com/qemu/qemu/commit/ff5b5739f97d08d9ca984ec8016b54487a76401b
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M tests/tcg/i386/test-i386.c

  Log Message:
  ---
  tests/tcg: cover lzcnt/tzcnt/popcnt

Reviewed-by: Zhao Liu 
Signed-off-by: Paolo Bonzini 


  Commit: 23b1f53c2c8990ed745acede171e49645af3d6d0
  
https://github.com/qemu/qemu/commit/23b1f53c2c8990ed745acede171e49645af3d6d0
  Author: Paolo Bonzini 
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
M configure

  Log Message:
  ---
  configure: quote -D options that are passed through to meson

Ensure that they go through unmodified, instead of removing one layer
of quoting.

-D is a pretty specialized option and most options that can have spaces
do not need it (for example, c_args is covered by --extra-cflags).
Therefore it's unlikely that this causes actual trouble.  However,
a somewhat realistic failure case would be with -Dpkg_config_path
and a pkg-config directory that contains spaces.

Cc: qemu-sta...@nongnu.org
Reviewed-by: Thomas Huth