On 10/2/25 11:22, Paolo Bonzini wrote:
Generalize the existing optimization of "TSTNE x,sign" and "TSTNE x,-1".
This can be useful for example in the i386 frontend, which will generate
tests of zero-extended registers against 0xffffffff.

Ironically, on x86 hosts this is a very slight pessimization in the very
case it's meant to optimize because

  brcond_i64 cc_dst,$0xffffffff,tsteq,$L1

(test %ebx, %ebx) is 1 byte smaller than

  brcond_i64 cc_dst,$0x0,eq,$L1

(test %rbx, %rbx).  However, in general it is an improvement, especially
if it avoids placing a large immediate in the constant pool.

Signed-off-by: Paolo Bonzini <[email protected]>
---
  tcg/optimize.c | 13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)

Reviewed-by: Richard Henderson <[email protected]>

https://lore.kernel.org/qemu-devel/[email protected]/


Reply via email to