|
From: | Richard Henderson |
Subject: | Re: [PATCH 11/12] target/loongarch: Use generic hrev64_i32() in REVB.2H opcode |
Date: | Tue, 22 Aug 2023 10:04:30 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 |
On 8/22/23 09:11, Philippe Mathieu-Daudé wrote:
-static void gen_revb_2h(TCGv dest, TCGv src1) -{ - TCGv mask = tcg_constant_tl(0x00FF00FF); - TCGv t0 = tcg_temp_new(); - TCGv t1 = tcg_temp_new(); - - tcg_gen_shri_tl(t0, src1, 8); - tcg_gen_and_tl(t0, t0, mask); - tcg_gen_and_tl(t1, src1, mask); - tcg_gen_shli_tl(t1, t1, 8);Looking at https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#_revb_2h4h2wdthe sign extension is missing, so the next line:- tcg_gen_or_tl(dest, t0, t1);should be replaced by smth like: tcg_gen_or_tl(t0, t0, t1); tcg_gen_ext32s_tl(dest, t0);
Extension is handled by TRANS(revb_2h, gen_rr, EXT_NONE, EXT_SIGN, gen_revb_2h) ^^^^^^^^^ this r~
[Prev in Thread] | Current Thread | [Next in Thread] |