[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
- [PATCH 08/16] tcg/optimize: Adjust TempOptInfo allocation, (continued)
- [PATCH 08/16] tcg/optimize: Adjust TempOptInfo allocation, Richard Henderson, 2020/04/18
- [PATCH 04/16] tcg: Use tcg_constant_{i32,i64} with tcg int expanders, Richard Henderson, 2020/04/18
- [PATCH 10/16] tcg/tci: Add special tci_movi_{i32,i64} opcodes, Richard Henderson, 2020/04/18
- [PATCH 09/16] tcg/optimize: Use tcg_constant_internal with constant folding, Richard Henderson, 2020/04/18
- [PATCH 12/16] tcg: Use tcg_out_dupi_vec from temp_load, Richard Henderson, 2020/04/18
- [PATCH 14/16] tcg: Add tcg_reg_alloc_dup2, Richard Henderson, 2020/04/18
- [PATCH 13/16] tcg: Increase tcg_out_dupi_vec immediate to int64_t, Richard Henderson, 2020/04/18
- [PATCH 11/16] tcg: Remove movi and dupi opcodes, Richard Henderson, 2020/04/18
- [PATCH 16/16] tcg: Remove tcg_gen_dup{8,16,32,64}i_vec, Richard Henderson, 2020/04/18
- [PATCH 15/16] tcg/i386: Use tcg_constant_vec with tcg vec expanders, Richard Henderson, 2020/04/18
- Re: [PATCH 00/16] tcg: Better handling of constants,
Alex Bennée <=