qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>, qemu-devel@nongnu.org
Subject: Re: [PATCH v7 15/27] tcg/tci: Change encoding to uint32_t units
Date: Sat, 12 Jun 2021 08:40:02 -0700	[thread overview]
Message-ID: <940f5fa5-7ceb-a1bd-d938-eec5e4f40d30@linaro.org> (raw)
In-Reply-To: <be90d7b4-cbf9-6ddc-60b8-f8a367697ad3@amsat.org>

On 6/12/21 3:21 AM, Philippe Mathieu-Daudé wrote:
> On 6/1/21 5:00 PM, Richard Henderson wrote:
>> This removes all of the problems with unaligned accesses
>> to the bytecode stream.
>>
>> With an 8-bit opcode at the bottom, we have 24 bits remaining,
>> which are generally split into 6 4-bit slots.  This fits well
>> with the maximum length opcodes, e.g. INDEX_op_add2_i32, which
>> have 6 register operands.
>>
>> We have, in previous patches, rearranged things such that there
>> are no operations with a label which have more than one other
>> operand.  Which leaves us with a 20-bit field in which to encode
>> a label, giving us a maximum TB size of 512k -- easily large.
>>
>> Change the INDEX_op_tci_movi_{i32,i64} opcodes to tci_mov[il].
>> The former puts the immediate in the upper 20 bits of the insn,
>> like we do for the label displacement.  The later uses a label
>> to reference an entry in the constant pool.  Thus, in the worst
>> case we still have a single memory reference for any constant,
>> but now the constants are out-of-line of the bytecode and can
>> be shared between different moves saving space.
>>
>> Change INDEX_op_call to use a label to reference a pair of
>> pointers in the constant pool.  This removes the only slightly
>> dodgy link with the layout of struct TCGHelperInfo.
>>
>> The re-encode cannot be done in pieces.
>>
>> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>   include/tcg/tcg-opc.h    |   4 +-
>>   tcg/tci/tcg-target.h     |   3 +-
>>   tcg/tci.c                | 541 +++++++++++++++------------------------
>>   tcg/tci/tcg-target.c.inc | 379 ++++++++++++---------------
>>   tcg/tci/README           |  20 +-
>>   5 files changed, 384 insertions(+), 563 deletions(-)
> [ ... ]
> 
>> +    case 0:
>> +        /* tcg_out_nop_fill uses zeros */
>> +        if (insn == 0) {
>> +            info->fprintf_func(info->stream, "align");
> 
> "nop"?

You can't execute it as a nop.  It's just alignment.

> 
> Otherwise,
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
>> +            break;
>> +        }
>> +        /* fall through */
>> +
>>       default:
>>           info->fprintf_func(info->stream, "illegal opcode %d", op);
>>           break;
>>       }



  reply	other threads:[~2021-06-12 15:41 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-01 15:00 [PATCH v7 00/27] TCI fixes and cleanups Richard Henderson
2021-06-01 15:00 ` [PATCH v7 01/27] tcg: Combine dh_is_64bit and dh_is_signed to dh_typecode Richard Henderson
2021-06-01 15:00 ` [PATCH v7 02/27] tcg: Add tcg_call_flags Richard Henderson
2021-06-01 15:00 ` [PATCH v7 03/27] accel/tcg/plugin-gen: Drop inline markers Richard Henderson
2021-06-01 15:00 ` [PATCH v7 04/27] plugins: Drop tcg_flags from struct qemu_plugin_dyn_cb Richard Henderson
2021-06-02  9:22   ` Alex Bennée
2021-06-02 16:02     ` Richard Henderson
2021-06-01 15:00 ` [PATCH v7 05/27] accel/tcg: Add tcg call flags to plugins helpers Richard Henderson
2021-06-01 15:00 ` [PATCH v7 06/27] tcg: Store the TCGHelperInfo in the TCGOp for call Richard Henderson
2021-06-01 15:00 ` [PATCH v7 07/27] tcg: Add tcg_call_func Richard Henderson
2021-06-01 15:00 ` [PATCH v7 08/27] tcg: Build ffi data structures for helpers Richard Henderson
2021-06-01 15:00 ` [PATCH v7 09/27] tcg/tci: Improve tcg_target_call_clobber_regs Richard Henderson
2021-06-02 17:59   ` Philippe Mathieu-Daudé
2021-06-01 15:00 ` [PATCH v7 10/27] tcg/tci: Move call-return regs to end of tcg_target_reg_alloc_order Richard Henderson
2021-06-01 15:00 ` [PATCH v7 11/27] tcg/tci: Use ffi for calls Richard Henderson
2021-06-02 10:31   ` Alex Bennée
2021-06-01 15:00 ` [PATCH v7 12/27] tcg/tci: Reserve r13 for a temporary Richard Henderson
2021-06-19 15:50   ` Philippe Mathieu-Daudé
2021-06-01 15:00 ` [PATCH v7 13/27] tcg/tci: Emit setcond before brcond Richard Henderson
2021-06-19 15:50   ` Philippe Mathieu-Daudé
2021-06-01 15:00 ` [PATCH v7 14/27] tcg/tci: Remove tci_write_reg Richard Henderson
2021-06-01 15:00 ` [PATCH v7 15/27] tcg/tci: Change encoding to uint32_t units Richard Henderson
2021-06-12 10:21   ` Philippe Mathieu-Daudé
2021-06-12 15:40     ` Richard Henderson [this message]
2021-06-19 17:48   ` Philippe Mathieu-Daudé
2021-06-19 18:05     ` Richard Henderson
2021-06-01 15:00 ` [PATCH v7 16/27] tcg/tci: Implement goto_ptr Richard Henderson
2021-06-12  9:45   ` Philippe Mathieu-Daudé
2021-06-01 15:00 ` [PATCH v7 17/27] tcg/tci: Implement movcond Richard Henderson
2021-06-01 15:00 ` [PATCH v7 18/27] tcg/tci: Implement andc, orc, eqv, nand, nor Richard Henderson
2021-06-01 15:00 ` [PATCH v7 19/27] tcg/tci: Implement extract, sextract Richard Henderson
2021-06-01 15:00 ` [PATCH v7 20/27] tcg/tci: Implement clz, ctz, ctpop Richard Henderson
2021-06-01 15:01 ` [PATCH v7 21/27] tcg/tci: Implement mulu2, muls2 Richard Henderson
2021-06-01 15:01 ` [PATCH v7 22/27] tcg/tci: Implement add2, sub2 Richard Henderson
2021-06-12  9:36   ` Philippe Mathieu-Daudé
2021-06-01 15:01 ` [PATCH v7 23/27] tcg/tci: Split out tci_qemu_ld, tci_qemu_st Richard Henderson
2021-06-02 18:01   ` Philippe Mathieu-Daudé
2021-06-01 15:01 ` [PATCH v7 24/27] Revert "tcg/tci: Use exec/cpu_ldst.h interfaces" Richard Henderson
2021-06-12  9:24   ` Philippe Mathieu-Daudé
2021-06-01 15:01 ` [PATCH v7 25/27] tcg/tci: Remove the qemu_ld/st_type macros Richard Henderson
2021-06-02 18:03   ` Philippe Mathieu-Daudé
2021-06-01 15:01 ` [PATCH v7 26/27] tcg/tci: Use {set,clear}_helper_retaddr Richard Henderson
2021-06-12  9:24   ` Philippe Mathieu-Daudé
2021-06-01 15:01 ` [PATCH v7 27/27] tests/tcg: Increase timeout for TCI Richard Henderson
2021-06-02  9:26   ` Alex Bennée
2021-06-01 15:30 ` [PATCH v7 00/27] TCI fixes and cleanups no-reply
2021-06-19 17:42 ` Philippe Mathieu-Daudé

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=940f5fa5-7ceb-a1bd-d938-eec5e4f40d30@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=f4bug@amsat.org \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).