]> git.proxmox.com Git - mirror_qemu.git/commitdiff
target-sh4: optimize swap.w
authorAurelien Jarno <aurelien@aurel32.net>
Sun, 16 Sep 2012 11:12:20 +0000 (13:12 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Fri, 21 Sep 2012 17:53:16 +0000 (19:53 +0200)
It's possible swap the two 16-bit words of a 32-bit register using a
rotation. If the TCG target doesn't implement rotation, the replacement
code is similar to the previously implemented code.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target-sh4/translate.c

index 92c5a1fb6dc6ec5fb9977ff001b3d6ebfa1d8afd..9ecbe471e63b3abd6a8033247cbff9254b7c9fa3 100644 (file)
@@ -732,17 +732,7 @@ static void _decode_opc(DisasContext * ctx)
        }
        return;
     case 0x6009:               /* swap.w Rm,Rn */
-       {
-           TCGv high, low;
-           high = tcg_temp_new();
-           tcg_gen_shli_i32(high, REG(B7_4), 16);
-           low = tcg_temp_new();
-           tcg_gen_shri_i32(low, REG(B7_4), 16);
-           tcg_gen_ext16u_i32(low, low);
-           tcg_gen_or_i32(REG(B11_8), high, low);
-           tcg_temp_free(low);
-           tcg_temp_free(high);
-       }
+        tcg_gen_rotli_i32(REG(B11_8), REG(B7_4), 16);
        return;
     case 0x200d:               /* xtrct Rm,Rn */
        {