diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2024-12-15 10:06:10 +0100 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2025-01-23 11:35:33 +0100 |
| commit | 456709db50f424d112bc5f07260fdc51555f3a24 (patch) | |
| tree | 3ee86b3cd8dd3278869f31895092702c948d8963 /rust/qemu-api/src | |
| parent | 0360b781870a628379de20e03305c4e62dbdcca4 (diff) | |
| download | focaccia-qemu-456709db50f424d112bc5f07260fdc51555f3a24.tar.gz focaccia-qemu-456709db50f424d112bc5f07260fdc51555f3a24.zip | |
target/i386: execute multiple REP/REPZ iterations without leaving TB
Use a TCG loop so that it is not necessary to go through the setup steps of REP and through the I/O check on every iteration. Interestingly, this is not a particularly effective optimization on its own, though it avoids the cost of correct RF emulation that was added in the previous patch. The main benefit lies in allowing the hoisting of loop invariants outside the loop, which will happen separately. The loop exits when the low 16 bits of CX/ECX/RCX are zero (so generally speaking the string operation runs in 65536 iteration batches) to give the main loop an opportunity to pick up interrupts. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Link: https://lore.kernel.org/r/20241215090613.89588-12-pbonzini@redhat.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/qemu-api/src')
0 files changed, 0 insertions, 0 deletions