[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.5 04/10] tcg/optimize: allow constant to h
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH for-2.5 04/10] tcg/optimize: allow constant to have copies |
Date: |
Wed, 29 Jul 2015 21:42:48 +0100 |
Aurelien Jarno <address@hidden> writes:
> On 2015-07-29 17:12, Alex Bennée wrote:
>>
>> Aurelien Jarno <address@hidden> writes:
>>
>> > Now that copies and constants are tracked separately, we can allow
>> > constant to have copies, deferring the choice to use a register or a
>> > constant to the register allocation pass. This prevent this kind of
>> > regular constant reloading:
>> >
>> > -OUT: [size=338]
>> > +OUT: [size=298]
>> > mov -0x4(%r14),%ebp
>> > test %ebp,%ebp
>> > jne 0x7ffbe9cb0ed6
>> > mov $0x40002219f8,%rbp
>> > mov %rbp,(%r14)
>> > - mov $0x40002219f8,%rbp
>> > mov $0x4000221a20,%rbx
>> > mov %rbp,(%rbx)
>> > mov $0x4000000000,%rbp
>> > mov %rbp,(%r14)
<snip>
>> > --- a/tcg/optimize.c
>> > +++ b/tcg/optimize.c
>> > @@ -237,11 +237,6 @@ static void tcg_opt_gen_mov(TCGContext *s, TCGOp *op,
>> > TCGArg *args,
>> > return;
>> > }
>> >
>> > - if (temp_is_const(src)) {
>> > - tcg_opt_gen_movi(s, op, args, dst, temps[src].val);
>> > - return;
>> > - }
>> > -
>>
>> That looks suspicious, surely we only want to drop the move if we
>> already have the const somewhere else?
>
> That's actually the while point of this patchset, to avoid converting
> mov into moving for constant values and thus loosing the link between
> temps.
I get that, I guess I didn't follow the previous loading of the constant
value. Maybe showing the ops in the commit message will make it clearer.
>
> At this moment point of the code, the only way to know that the source
> temp is a constant is when it has been set using a movi before.
OK.
--
Alex Bennée
[Qemu-devel] [PATCH for-2.5 08/10] tcg/optimize: add optimizations for ext_i32_i64 and extu_i32_i64 ops, Aurelien Jarno, 2015/07/24
[Qemu-devel] [PATCH for-2.5 05/10] tcg: rename trunc_shr_i32 into trunc_shr_i64_i32, Aurelien Jarno, 2015/07/24
[Qemu-devel] [PATCH for-2.5 02/10] tcg/optimize: add temp_is_const and temp_is_copy functions, Aurelien Jarno, 2015/07/24
[Qemu-devel] [PATCH for-2.5 03/10] tcg/optimize: track const/copy status separately, Aurelien Jarno, 2015/07/24