diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2009-09-30 23:09:35 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2009-10-04 13:24:45 +0200 |
commit | cfc86988a830d89ed22433af83711847d7859b15 (patch) | |
tree | db11df76590d6e22d9c934d99adb129c811344f2 /x_keymap.c | |
parent | 3bc0bdcaadef1100ce2413af818d9c8e2f6319fc (diff) | |
download | qemu-cfc86988a830d89ed22433af83711847d7859b15.tar.gz qemu-cfc86988a830d89ed22433af83711847d7859b15.tar.bz2 qemu-cfc86988a830d89ed22433af83711847d7859b15.zip |
tcg: add ext{8,16,32}u_i{32,64} TCG ops
Currently zero extensions ops are implemented by a and op with a
constant. This is then catched in some backend, and replaced by
a zero extension instruction. While this works well on RISC
machines, this adds a useless register move on non-RISC machines.
Example on x86:
ext16u_i32 r1, r2
is translated into
mov %eax,%ebx
movzwl %bx, %ebx
while the optimized version should be:
movzwl %ax, %ebx
This patch adds ext{8,16,32}u_i{32,64} TCG ops that can be
implemented in the backends to avoid emitting useless register
moves.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'x_keymap.c')
0 files changed, 0 insertions, 0 deletions