[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 04/14] target/ppc: introduce GEN_VSX_HELPER_X3 m
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 04/14] target/ppc: introduce GEN_VSX_HELPER_X3 macro to fpu_helper.c |
Date: |
Sun, 5 May 2019 07:49:36 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 5/5/19 2:52 AM, Mark Cave-Ayland wrote:
> Right, it looks like VSX_CMP is the culprit here. Am I right in thinking that
> it's
> best to remove the opc parameter from GEN_VSX_HELPER_X3 above, and then have a
> separate gen and helper function for just the VSX_CMP instructions?
> Presumably this
> reduces of the overhead at both translation and execution time for the
> instructions
> that don't require it.
Yep.
I think the best fix for VSX_CMP is to return the value that is to be assigned
to cr[6], and let it assign like so:
gen_helper_foo(cpu_crf[6], other, arguments);
(Or if the opcode bit is unset,
TCGv_i32 ignored = tcg_temp_new_i32();
gen_helper_foo(ignored, other arguments);
tcg_temp_free_i32(ignored);
)
at which point these functions do not modify tcg globals, so the decl
can be improved to
DEF_HELPER_FLAGS_2(xvcmpeqdp, TCG_CALL_NO_RWG, i32, ptr, ptr, ptr)
To keep the assignment vs exception order, you remove the direct call to
do_float_check_status and use gen_helper_float_check_status.
r~