|
| From: | Richard Henderson |
| Subject: | Re: [PATCH 01/18] i386: Rework sse_op_table1 |
| Date: | Thu, 25 Aug 2022 16:38:53 -0700 |
| User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
On 8/25/22 15:13, Paolo Bonzini wrote:
@@ -3112,6 +3165,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s,
int b,
{
int b1, op1_offset, op2_offset, is_xmm, val;
int modrm, mod, rm, reg;
+ struct SSEOpHelper_table1 sse_op;
SSEFunc_0_epp sse_fn_epp;
SSEFunc_0_eppi sse_fn_eppi;
SSEFunc_0_ppi sse_fn_ppi;
@@ -3127,8 +3181,10 @@ static void gen_sse(CPUX86State *env, DisasContext *s,
int b,
b1 = 3;
else
b1 = 0;
- sse_fn_epp = sse_op_table1[b][b1];
- if (!sse_fn_epp) {
+ sse_op = sse_op_table1[b];
+ sse_fn_epp = sse_op.op[b1];
+ if ((sse_op.flags & (SSE_OPF_SPECIAL | SSE_OPF_3DNOW)) == 0
+ && !sse_fn_epp) {
Do we really want a 5 word structure copy into the local stack frame here?
Surely better as
const struct SSEOpHelper_table1 *sse_op;
...
sse_op = &sse_op_table1[b];
Otherwise,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
| [Prev in Thread] | Current Thread | [Next in Thread] |