@samitouri / QOSamiQemu / commits / 8c7ba1cedf

target/loongarch: Use generic tcg_gen_revbit*

Reviewed-by: Song Gao <17746591750@163.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Richard Henderson committed Jul 30, 2026 at 11:29 UTC 8c7ba1cedffb55827165d47f9216b24dccbd34e3
3 files changed +9 -29
target/loongarch/tcg/helper.h
-4
@@ -5,10 +5,6 @@
5
6 DEF_HELPER_2(raise_exception, noreturn, env, i32)
7
8 -DEF_HELPER_FLAGS_1(bitrev_w, TCG_CALL_NO_RWG_SE, tl, tl)
9 -DEF_HELPER_FLAGS_1(bitrev_d, TCG_CALL_NO_RWG_SE, tl, tl)
10 -DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl)
11 -
8 DEF_HELPER_FLAGS_3(asrtle_d, TCG_CALL_NO_WG, void, env, tl, tl)
9 DEF_HELPER_FLAGS_3(asrtgt_d, TCG_CALL_NO_WG, void, env, tl, tl)
10
target/loongarch/tcg/insn_trans/trans_bit.c.inc
+9 -4
@@ -178,6 +178,11 @@ static void gen_masknez(TCGv dest, TCGv src1, TCGv src2)
178 tcg_gen_movcond_tl(TCG_COND_NE, dest, src2, zero, zero, src1);
179 }
180
181 +static void gen_bitrev_w(TCGv dest, TCGv src)
182 +{
183 + tcg_gen_revbit32_tl(dest, src, TCG_BSWAP_OS);
184 +}
185 +
186 TRANS(ext_w_h, ALL, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_ext16s_tl)
187 TRANS(ext_w_b, ALL, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_ext8s_tl)
188 TRANS(clo_w, ALL, gen_rr, EXT_NONE, EXT_NONE, gen_clo_w)
@@ -194,10 +199,10 @@ TRANS(revb_2w, 64, gen_rr, EXT_NONE, EXT_NONE, gen_revb_2w)
199 TRANS(revb_d, 64, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_bswap64_i64)
200 TRANS(revh_2w, 64, gen_rr, EXT_NONE, EXT_NONE, gen_revh_2w)
201 TRANS(revh_d, 64, gen_rr, EXT_NONE, EXT_NONE, gen_revh_d)
197 -TRANS(bitrev_4b, ALL, gen_rr, EXT_ZERO, EXT_SIGN, gen_helper_bitswap)
198 -TRANS(bitrev_8b, 64, gen_rr, EXT_NONE, EXT_NONE, gen_helper_bitswap)
199 -TRANS(bitrev_w, ALL, gen_rr, EXT_NONE, EXT_SIGN, gen_helper_bitrev_w)
200 -TRANS(bitrev_d, 64, gen_rr, EXT_NONE, EXT_NONE, gen_helper_bitrev_d)
202 +TRANS(bitrev_4b, ALL, gen_rr, EXT_NONE, EXT_SIGN, tcg_gen_revbit8_i64)
203 +TRANS(bitrev_8b, 64, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_revbit8_i64)
204 +TRANS(bitrev_w, ALL, gen_rr, EXT_NONE, EXT_NONE, gen_bitrev_w)
205 +TRANS(bitrev_d, 64, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_revbit64_i64)
206 TRANS(maskeqz, ALL, gen_rrr, EXT_NONE, EXT_NONE, EXT_NONE, gen_maskeqz)
207 TRANS(masknez, ALL, gen_rrr, EXT_NONE, EXT_NONE, EXT_NONE, gen_masknez)
208 TRANS(bytepick_w, ALL, gen_rrr_sa, EXT_NONE, EXT_NONE, gen_bytepick_w)
target/loongarch/tcg/op_helper.c
-21
@@ -22,27 +22,6 @@ void helper_raise_exception(CPULoongArchState *env, uint32_t exception)
22 do_raise_exception(env, exception, GETPC());
23 }
24
25 -target_ulong helper_bitrev_w(target_ulong rj)
26 -{
27 - return (int32_t)revbit32(rj);
28 -}
29 -
30 -target_ulong helper_bitrev_d(target_ulong rj)
31 -{
32 - return revbit64(rj);
33 -}
34 -
35 -target_ulong helper_bitswap(target_ulong v)
36 -{
37 - v = ((v >> 1) & (target_ulong)0x5555555555555555ULL) |
38 - ((v & (target_ulong)0x5555555555555555ULL) << 1);
39 - v = ((v >> 2) & (target_ulong)0x3333333333333333ULL) |
40 - ((v & (target_ulong)0x3333333333333333ULL) << 2);
41 - v = ((v >> 4) & (target_ulong)0x0F0F0F0F0F0F0F0FULL) |
42 - ((v & (target_ulong)0x0F0F0F0F0F0F0F0FULL) << 4);
43 - return v;
44 -}
45 -
25 /* loongarch assert op */
26 void helper_asrtle_d(CPULoongArchState *env, target_ulong rj, target_ulong rk)
27 {