From: Richard Henderson <rth@twiddle.net>
To: "Alex Bennée" <alex.bennee@linaro.org>,
"Aurelien Jarno" <aurelien@aurel32.net>
Cc: Claudio Fontana <claudio.fontana@gmail.com>,
Stefan Weil <sw@weilnetz.de>,
Claudio Fontana <claudio.fontana@huawei.com>,
qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
Blue Swirl <blauwirbel@gmail.com>
Subject: Re: [Qemu-devel] [PATCH for-2.5 07/10] tcg: implement real ext_i32_i64 and extu_i32_i64 ops
Date: Fri, 31 Jul 2015 09:11:49 -0700 [thread overview]
Message-ID: <55BB9E45.10204@twiddle.net> (raw)
In-Reply-To: <871tfogvu3.fsf@linaro.org>
On 07/31/2015 09:01 AM, Alex Bennée wrote:
>
> Aurelien Jarno <aurelien@aurel32.net> writes:
>
>> Implement real ext_i32_i64 and extu_i32_i64 ops. They ensure that a
>> 32-bit value is always converted to a 64-bit value and not propagated
>> through the register allocator or the optimizer.
>>
>> Cc: Andrzej Zaborowski <balrogg@gmail.com>
>> Cc: Alexander Graf <agraf@suse.de>
>> Cc: Blue Swirl <blauwirbel@gmail.com>
>> Cc: Claudio Fontana <claudio.fontana@huawei.com>
>> Cc: Claudio Fontana <claudio.fontana@gmail.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Cc: Stefan Weil <sw@weilnetz.de>
>> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
>> ---
>> tcg/aarch64/tcg-target.c | 4 ++++
>> tcg/i386/tcg-target.c | 5 +++++
>> tcg/ia64/tcg-target.c | 4 ++++
>> tcg/ppc/tcg-target.c | 6 ++++++
>> tcg/s390/tcg-target.c | 5 +++++
>> tcg/sparc/tcg-target.c | 8 ++++++--
>> tcg/tcg-op.c | 10 ++++------
>> tcg/tcg-opc.h | 3 +++
>> tcg/tci/tcg-target.c | 4 ++++
>> tci.c | 6 ++++--
>> 10 files changed, 45 insertions(+), 10 deletions(-)
>>
>> diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
>> index b7ec4f5..7f7ab7e 100644
>> --- a/tcg/aarch64/tcg-target.c
>> +++ b/tcg/aarch64/tcg-target.c
>> @@ -1556,6 +1556,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc,
>> case INDEX_op_ext16s_i32:
>> tcg_out_sxt(s, ext, MO_16, a0, a1);
>> break;
>> + case INDEX_op_ext_i32_i64:
>> case INDEX_op_ext32s_i64:
>> tcg_out_sxt(s, TCG_TYPE_I64, MO_32, a0, a1);
>> break;
>> @@ -1567,6 +1568,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc,
>> case INDEX_op_ext16u_i32:
>> tcg_out_uxt(s, MO_16, a0, a1);
>> break;
>> + case INDEX_op_extu_i32_i64:
>> case INDEX_op_ext32u_i64:
>> tcg_out_movr(s, TCG_TYPE_I32, a0, a1);
>
> So what is the difference between extu_i32_i64 and ext32u_i64. The
> README skips over this particular part of the naming convention and I
> wonder if we should be clearer about that before we add more ops.
The size of the input, for one. The possibility of eliding is another.
Our current plan for x86_64 and aarch64 is to canonicalize all 32-bit
quantities to be zero-extended in the register. Primarily because for both
platforms this can be done for free. Thus exts_i32_64 and extrl_i64_i32 will
require implementation, but extu_i32_i64 will be replaced by a move.
Similarly, mips64 would keep values sign-extended (as *required* by the
standard for all 32-bit operations), and thus exts_i32_i64 would be replaced by
a move.
Other targets will probably make extrl_i64_i32 be the move, since the 32-bit
ops don't re-extend for free.
r~
next prev parent reply other threads:[~2015-07-31 16:12 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-24 16:30 [Qemu-devel] [PATCH for-2.5 00/10] tcg: improve optimizer Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 01/10] tcg/optimize: optimize temps tracking Aurelien Jarno
2015-07-27 8:21 ` Paolo Bonzini
2015-07-27 9:09 ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 02/10] tcg/optimize: add temp_is_const and temp_is_copy functions Aurelien Jarno
2015-07-29 16:01 ` Alex Bennée
2015-07-29 16:25 ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 03/10] tcg/optimize: track const/copy status separately Aurelien Jarno
2015-07-27 8:25 ` Paolo Bonzini
2015-07-27 9:10 ` Aurelien Jarno
2015-07-29 16:10 ` Alex Bennée
2015-07-29 16:25 ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 04/10] tcg/optimize: allow constant to have copies Aurelien Jarno
2015-07-24 20:15 ` Richard Henderson
2015-07-24 22:56 ` Aurelien Jarno
2015-07-29 16:12 ` Alex Bennée
2015-07-29 16:27 ` Aurelien Jarno
2015-07-29 20:42 ` Alex Bennée
2015-07-30 7:46 ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 05/10] tcg: rename trunc_shr_i32 into trunc_shr_i64_i32 Aurelien Jarno
2015-07-31 6:31 ` Alex Bennée
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 06/10] tcg: don't abuse TCG type in tcg_gen_trunc_shr_i64_i32 Aurelien Jarno
2015-07-31 7:32 ` Alex Bennée
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 07/10] tcg: implement real ext_i32_i64 and extu_i32_i64 ops Aurelien Jarno
2015-07-31 16:01 ` Alex Bennée
2015-07-31 16:11 ` Richard Henderson [this message]
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 08/10] tcg/optimize: add optimizations for " Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 09/10] tcg/optimize: do not remember garbage high bits for 32-bit ops Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 10/10] tcg: update README about size changing ops Aurelien Jarno
2015-07-31 16:02 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55BB9E45.10204@twiddle.net \
--to=rth@twiddle.net \
--cc=agraf@suse.de \
--cc=alex.bennee@linaro.org \
--cc=aurelien@aurel32.net \
--cc=blauwirbel@gmail.com \
--cc=claudio.fontana@gmail.com \
--cc=claudio.fontana@huawei.com \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.