[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2.3 7/8] tcg: Implement insert_op_before
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 2.3 7/8] tcg: Implement insert_op_before |
Date: |
Fri, 14 Nov 2014 15:46:44 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 |
On 11/14/2014 04:25 PM, Bastian Koppelmann wrote:
>
> On 11/11/2014 04:24 PM, Richard Henderson wrote:
>> Rather reserving space in the op stream for optimization,
>> let the optimizer add ops as necessary.
>>
>> Signed-off-by: Richard Henderson <address@hidden>
>> ---
>> tcg/optimize.c | 57
>> +++++++++++++++++++++++++++++++++++----------------------
>> tcg/tcg-op.c | 16 ----------------
>> 2 files changed, 35 insertions(+), 38 deletions(-)
>>
>> diff --git a/tcg/optimize.c b/tcg/optimize.c
>> index 973fbb4..067917c 100644
>> --- a/tcg/optimize.c
>> +++ b/tcg/optimize.c
>> @@ -67,6 +67,37 @@ static void reset_temp(TCGArg temp)
>> temps[temp].mask = -1;
>> }
>> +static TCGOp *insert_op_before(TCGContext *s, TCGOp *old_op,
>> + TCGOpcode opc, int nargs)
>> +{
>> + int oi = s->gen_next_op_idx;
>> + int pi = s->gen_next_parm_idx;
>> + int prev = old_op->prev;
>> + int next = old_op - s->gen_op_buf;
>> + TCGOp *new_op;
>> +
>> + tcg_debug_assert(oi < OPC_BUF_SIZE);
>> + tcg_debug_assert(pi + nargs <= OPPARAM_BUF_SIZE);
> I thinks it is better to assure these assertion always hold, e.g.
>
> if (oi < OPC_BUF_SIZE || pi + nargs <= OPPARAM_BUF_SIZE) {
> return NULL;
> }
> ...
> TCGOp *op2 = insert_op_before(s, op, INDEX_op_movi_i32, 2);
> if (op2) {
> *args2 = &s->gen_opparam_buf[op2->args];
> }
>
> Or how do we know they always hold?
For the same reason we don't bother checking during initial generation of the
opcodes. We simply assume there's enough space. Not a good answer but...
> All references on tcg_gen_op0 are gone, so lets remove it.
Fair enough.
r~
- [Qemu-devel] [PATCH 2.3 2/8] tcg: Reduce ifdefs in tcg-op.c, (continued)
- [Qemu-devel] [PATCH 2.3 2/8] tcg: Reduce ifdefs in tcg-op.c, Richard Henderson, 2014/11/11
- [Qemu-devel] [PATCH 2.3 4/8] tcg: Introduce tcg_op_buf_count and tcg_op_buf_full, Richard Henderson, 2014/11/11
- [Qemu-devel] [PATCH 2.3 5/8] tcg: Put opcodes in a linked list, Richard Henderson, 2014/11/11
- [Qemu-devel] [PATCH 2.3 6/8] tcg: Remove opcodes instead of noping them out, Richard Henderson, 2014/11/11
- [Qemu-devel] [PATCH 2.3 7/8] tcg: Implement insert_op_before, Richard Henderson, 2014/11/11
- [Qemu-devel] [PATCH 2.3 8/8] tcg: Remove unused opcodes, Richard Henderson, 2014/11/11
- [Qemu-devel] [PATCH 2.3 1/8] tcg: Move some opcode generation functions out of line, Richard Henderson, 2014/11/11
- Re: [Qemu-devel] [PATCH 2.3 0/8] Linked list for tcg ops, Bastian Koppelmann, 2014/11/14