qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 00/16] tcg: Better handling of constants


From: Alex Bennée
Subject: Re: [PATCH 00/16] tcg: Better handling of constants
Date: Mon, 20 Apr 2020 16:39:53 +0100
User-agent: mu4e 1.4.1; emacs 28.0.50

Richard Henderson <address@hidden> writes:

> This promotes constants to full-fledged temporaries, which are then
> hashed so we have only a single copy across the TB.  If an opcode
> requires forcing one into a register, then we will only do this
> once -- at least until the register is killed, e.g. by a function call.
>
> While this is probably an modest improvement for integer code, it is
> significant for SVE vector code.  In particular, where a generator function
> loads a constant for the operation, and then the generator function is
> called N times for the N x 128-bit vector.  Previously we'd be loading
> up the same constant N times and now we do so only once.
>
> The existing tcg_const_{type}() functions are unchanged, allocating
> a new temporary and initializing it.  The constant propagation pass
> of the optimizer will generally remove the temporary when it turns
> out not to be modified further.
>
> This adds new tcg_constant_{type}() functions which produce a read-only
> temporary containing the constant which need not be freed.  I have
> updated the generic expanders to take advantage of this, but have not
> touched the target front ends.
>
> This also, in the end, allows the complete removal of the tcg opcodes
> that create a constant: INDEX_op_movi_{i32,i64} and INDEX_op_dupi_vec.
> Loading of constants into hard registers is completely controlled by
> the register allocator.
>
>
> r~
>
>
> Richard Henderson (16):
>   tcg: Add temp_readonly

The series failed to apply at the first patch. Should it be based on any
other patches?

-- 
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]