[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 30/36] tcg: Remove expansion to shift by vector from do_shifts
From: |
Richard Henderson |
Subject: |
[PATCH v2 30/36] tcg: Remove expansion to shift by vector from do_shifts |
Date: |
Tue, 21 Apr 2020 18:17:16 -0700 |
We do not reflect this expansion in tcg_can_emit_vecop_list,
so it is unused and unusable. However, we actually perform
the same expansion in do_gvec_shifts, so it is also unneeded.
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/tcg-op-vec.c | 35 +++++++++++------------------------
1 file changed, 11 insertions(+), 24 deletions(-)
diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c
index 4af92d6b0a..52c1b66283 100644
--- a/tcg/tcg-op-vec.c
+++ b/tcg/tcg-op-vec.c
@@ -781,7 +781,7 @@ void tcg_gen_rotrv_vec(unsigned vece, TCGv_vec r, TCGv_vec
a, TCGv_vec b)
}
static void do_shifts(unsigned vece, TCGv_vec r, TCGv_vec a,
- TCGv_i32 s, TCGOpcode opc_s, TCGOpcode opc_v)
+ TCGv_i32 s, TCGOpcode opc)
{
TCGTemp *rt = tcgv_vec_temp(r);
TCGTemp *at = tcgv_vec_temp(a);
@@ -790,48 +790,35 @@ static void do_shifts(unsigned vece, TCGv_vec r, TCGv_vec
a,
TCGArg ai = temp_arg(at);
TCGArg si = temp_arg(st);
TCGType type = rt->base_type;
- const TCGOpcode *hold_list;
int can;
tcg_debug_assert(at->base_type >= type);
- tcg_assert_listed_vecop(opc_s);
- hold_list = tcg_swap_vecop_list(NULL);
-
- can = tcg_can_emit_vec_op(opc_s, type, vece);
+ tcg_assert_listed_vecop(opc);
+ can = tcg_can_emit_vec_op(opc, type, vece);
if (can > 0) {
- vec_gen_3(opc_s, type, vece, ri, ai, si);
+ vec_gen_3(opc, type, vece, ri, ai, si);
} else if (can < 0) {
- tcg_expand_vec_op(opc_s, type, vece, ri, ai, si);
+ const TCGOpcode *hold_list = tcg_swap_vecop_list(NULL);
+ tcg_expand_vec_op(opc, type, vece, ri, ai, si);
+ tcg_swap_vecop_list(hold_list);
} else {
- TCGv_vec vec_s = tcg_temp_new_vec(type);
-
- if (vece == MO_64) {
- TCGv_i64 s64 = tcg_temp_new_i64();
- tcg_gen_extu_i32_i64(s64, s);
- tcg_gen_dup_i64_vec(MO_64, vec_s, s64);
- tcg_temp_free_i64(s64);
- } else {
- tcg_gen_dup_i32_vec(vece, vec_s, s);
- }
- do_op3_nofail(vece, r, a, vec_s, opc_v);
- tcg_temp_free_vec(vec_s);
+ g_assert_not_reached();
}
- tcg_swap_vecop_list(hold_list);
}
void tcg_gen_shls_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 b)
{
- do_shifts(vece, r, a, b, INDEX_op_shls_vec, INDEX_op_shlv_vec);
+ do_shifts(vece, r, a, b, INDEX_op_shls_vec);
}
void tcg_gen_shrs_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 b)
{
- do_shifts(vece, r, a, b, INDEX_op_shrs_vec, INDEX_op_shrv_vec);
+ do_shifts(vece, r, a, b, INDEX_op_shrs_vec);
}
void tcg_gen_sars_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 b)
{
- do_shifts(vece, r, a, b, INDEX_op_sars_vec, INDEX_op_sarv_vec);
+ do_shifts(vece, r, a, b, INDEX_op_sars_vec);
}
void tcg_gen_bitsel_vec(unsigned vece, TCGv_vec r, TCGv_vec a,
--
2.20.1
- Re: [PATCH v2 24/36] tcg/i386: Use tcg_constant_vec with tcg vec expanders, (continued)
- [PATCH v2 25/36] tcg: Remove tcg_gen_dup{8,16,32,64}i_vec, Richard Henderson, 2020/04/21
- [PATCH v2 26/36] tcg: Add load_dest parameter to GVecGen2, Richard Henderson, 2020/04/21
- [PATCH v2 27/36] tcg: Fix integral argument type to tcg_gen_rot[rl]i_i{32, 64}, Richard Henderson, 2020/04/21
- [PATCH v2 28/36] tcg: Implement gvec support for rotate by immediate, Richard Henderson, 2020/04/21
- [PATCH v2 30/36] tcg: Remove expansion to shift by vector from do_shifts,
Richard Henderson <=
- [PATCH v2 34/36] tcg/ppc: Implement INDEX_op_rot[lr]v_vec, Richard Henderson, 2020/04/21
- [PATCH v2 29/36] tcg: Implement gvec support for rotate by vector, Richard Henderson, 2020/04/21
- [PATCH v2 32/36] tcg/i386: Implement INDEX_op_rotl[is]_vec, Richard Henderson, 2020/04/21
- [PATCH v2 33/36] tcg/aarch64: Implement INDEX_op_rotli_vec, Richard Henderson, 2020/04/21
- [PATCH v2 36/36] target/s390x: Use tcg_gen_gvec_rotl{i,s,v}, Richard Henderson, 2020/04/21
- [PATCH v2 31/36] tcg: Implement gvec support for rotate by scalar, Richard Henderson, 2020/04/21
- [PATCH v2 35/36] target/ppc: Use tcg_gen_gvec_rotlv, Richard Henderson, 2020/04/21
- Re: [PATCH v2 00/36] tcg 5.1 omnibus patch set, Alex Bennée, 2020/04/23