target-tricore: Use clz opcode
Tested-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Reviewed-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
c3aa369e5d
commit
0efa820854
@ -87,9 +87,7 @@ DEF_HELPER_FLAGS_2(min_hu, TCG_CALL_NO_RWG_SE, i32, i32, i32)
|
||||
DEF_HELPER_FLAGS_2(ixmin, TCG_CALL_NO_RWG_SE, i64, i64, i32)
|
||||
DEF_HELPER_FLAGS_2(ixmin_u, TCG_CALL_NO_RWG_SE, i64, i64, i32)
|
||||
/* count leading ... */
|
||||
DEF_HELPER_FLAGS_1(clo, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(clo_h, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(clz, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(clz_h, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(cls, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(cls_h, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
|
@ -1733,11 +1733,6 @@ EXTREMA_H_B(min, <)
|
||||
|
||||
#undef EXTREMA_H_B
|
||||
|
||||
uint32_t helper_clo(target_ulong r1)
|
||||
{
|
||||
return clo32(r1);
|
||||
}
|
||||
|
||||
uint32_t helper_clo_h(target_ulong r1)
|
||||
{
|
||||
uint32_t ret_hw0 = extract32(r1, 0, 16);
|
||||
@ -1756,11 +1751,6 @@ uint32_t helper_clo_h(target_ulong r1)
|
||||
return ret_hw0 | (ret_hw1 << 16);
|
||||
}
|
||||
|
||||
uint32_t helper_clz(target_ulong r1)
|
||||
{
|
||||
return clz32(r1);
|
||||
}
|
||||
|
||||
uint32_t helper_clz_h(target_ulong r1)
|
||||
{
|
||||
uint32_t ret_hw0 = extract32(r1, 0, 16);
|
||||
|
@ -6367,7 +6367,8 @@ static void decode_rr_logical_shift(CPUTriCoreState *env, DisasContext *ctx)
|
||||
tcg_gen_andc_tl(cpu_gpr_d[r3], cpu_gpr_d[r1], cpu_gpr_d[r2]);
|
||||
break;
|
||||
case OPC2_32_RR_CLO:
|
||||
gen_helper_clo(cpu_gpr_d[r3], cpu_gpr_d[r1]);
|
||||
tcg_gen_not_tl(cpu_gpr_d[r3], cpu_gpr_d[r1]);
|
||||
tcg_gen_clzi_tl(cpu_gpr_d[r3], cpu_gpr_d[r3], TARGET_LONG_BITS);
|
||||
break;
|
||||
case OPC2_32_RR_CLO_H:
|
||||
gen_helper_clo_h(cpu_gpr_d[r3], cpu_gpr_d[r1]);
|
||||
@ -6379,7 +6380,7 @@ static void decode_rr_logical_shift(CPUTriCoreState *env, DisasContext *ctx)
|
||||
gen_helper_cls_h(cpu_gpr_d[r3], cpu_gpr_d[r1]);
|
||||
break;
|
||||
case OPC2_32_RR_CLZ:
|
||||
gen_helper_clz(cpu_gpr_d[r3], cpu_gpr_d[r1]);
|
||||
tcg_gen_clzi_tl(cpu_gpr_d[r3], cpu_gpr_d[r1], TARGET_LONG_BITS);
|
||||
break;
|
||||
case OPC2_32_RR_CLZ_H:
|
||||
gen_helper_clz_h(cpu_gpr_d[r3], cpu_gpr_d[r1]);
|
||||
|
Loading…
Reference in New Issue
Block a user