target/sh4: do not use a helper to implement fneg
authorAurelien Jarno <aurelien@aurel32.net>
Sun, 2 Jul 2017 16:26:43 +0000 (18:26 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Tue, 18 Jul 2017 21:39:15 +0000 (23:39 +0200)
There is no need to use a helper to flip one bit, just use a TCG xor
instruction instead.

Message-Id: <20170702202814.27793-5-aurelien@aurel32.net>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
target/sh4/helper.h
target/sh4/op_helper.c
target/sh4/translate.c

index f71522482293d7738c7d29ccb133212aca75c24a..d2398922ddf3b16f5ef94ccf69c8773397bbf723 100644 (file)
@@ -32,7 +32,6 @@ DEF_HELPER_FLAGS_2(float_DT, TCG_CALL_NO_WG, f64, env, i32)
 DEF_HELPER_FLAGS_4(fmac_FT, TCG_CALL_NO_WG, f32, env, f32, f32, f32)
 DEF_HELPER_FLAGS_3(fmul_FT, TCG_CALL_NO_WG, f32, env, f32, f32)
 DEF_HELPER_FLAGS_3(fmul_DT, TCG_CALL_NO_WG, f64, env, f64, f64)
-DEF_HELPER_FLAGS_1(fneg_T, TCG_CALL_NO_RWG_SE, f32, f32)
 DEF_HELPER_FLAGS_3(fsub_FT, TCG_CALL_NO_WG, f32, env, f32, f32)
 DEF_HELPER_FLAGS_3(fsub_DT, TCG_CALL_NO_WG, f64, env, f64, f64)
 DEF_HELPER_FLAGS_2(fsqrt_FT, TCG_CALL_NO_WG, f32, env, f32)
index f2e39c5ca661dd79b1c1b00eff3862454c2b45bc..64206cf80302a4fdb0b2508c100c86d64b701a80 100644 (file)
@@ -384,11 +384,6 @@ float64 helper_fmul_DT(CPUSH4State *env, float64 t0, float64 t1)
     return t0;
 }
 
-float32 helper_fneg_T(float32 t0)
-{
-    return float32_chs(t0);
-}
-
 float32 helper_fsqrt_FT(CPUSH4State *env, float32 t0)
 {
     set_float_exception_flags(0, &env->fp_status);
index bff212a78eefc00a6268b6115ccf46c7f01691f0..9360522a98409cd6c25ea21925e9ea26ad753214 100644 (file)
@@ -1691,9 +1691,8 @@ static void _decode_opc(DisasContext * ctx)
        return;
     case 0xf04d: /* fneg FRn/DRn - FPSCR: Nothing */
        CHECK_FPU_ENABLED
-       {
-           gen_helper_fneg_T(cpu_fregs[FREG(B11_8)], cpu_fregs[FREG(B11_8)]);
-       }
+        tcg_gen_xori_i32(cpu_fregs[FREG(B11_8)], cpu_fregs[FREG(B11_8)],
+                         0x80000000);
        return;
     case 0xf05d: /* fabs FRn/DRn - FPCSR: Nothing */
        CHECK_FPU_ENABLED