[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 19/20] target/arm: Promote consecutive memory ops fo
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 19/20] target/arm: Promote consecutive memory ops for aa32 |
Date: |
Thu, 11 Oct 2018 13:52:05 -0700 |
For a sequence of loads or stores from a single register,
little-endian operations can be promoted to an 8-byte op.
This can reduce the number of operations by a factor of 8.
Signed-off-by: Richard Henderson <address@hidden>
---
target/arm/translate.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 12a744b3c3..09f2d648b7 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -5011,6 +5011,16 @@ static int disas_neon_ls_insn(DisasContext *s, uint32_t
insn)
if (size == 3 && (interleave | spacing) != 1) {
return 1;
}
+ /* For our purposes, bytes are always little-endian. */
+ if (size == 0) {
+ endian = MO_LE;
+ }
+ /* Consecutive little-endian elements from a single register
+ * can be promoted to a larger little-endian operation.
+ */
+ if (interleave == 1 && endian == MO_LE) {
+ size = 3;
+ }
tmp64 = tcg_temp_new_i64();
addr = tcg_temp_new_i32();
tmp2 = tcg_const_i32(1 << size);
--
2.17.1
- Re: [Qemu-devel] [PATCH 02/20] target/arm: Don't call tcg_clear_temp_count, (continued)
- [Qemu-devel] [PATCH 09/20] target/arm: Use gvec for NEON_3R_VADD_VSUB insns, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 17/20] target/arm: Use gvec for NEON VLD all lanes, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 11/20] target/arm: Use gvec for NEON_3R_VMUL, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 18/20] target/arm: Reorg NEON VLD/VST all elements, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 05/20] target/arm: Mark some arrays const, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 03/20] target/arm: Use tcg_gen_gvec_dup_i64 for LD[1-4]R, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 13/20] target/arm: Use gvec for VSRA, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 06/20] target/arm: Use gvec for NEON VDUP, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 19/20] target/arm: Promote consecutive memory ops for aa32,
Richard Henderson <=
- [Qemu-devel] [PATCH 12/20] target/arm: Use gvec for VSHR, VSHL, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 04/20] target/arm: Promote consecutive memory ops for aa64, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 16/20] target/arm: Use gvec for NEON_3R_VTST_VCEQ, NEON_3R_VCGT, NEON_3R_VCGE, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 15/20] target/arm: Use gvec for NEON_3R_VML, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 08/20] target/arm: Use gvec for NEON_3R_LOGIC insns, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 07/20] target/arm: Use gvec for NEON VMOV, VMVN, VBIC & VORR (immediate), Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 10/20] target/arm: Use gvec for NEON_2RM_VMN, NEON_2RM_VNEG, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 20/20] target/arm: Reorg NEON VLD/VST single element to one lane, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 14/20] target/arm: Use gvec for VSRI, VSLI, Richard Henderson, 2018/10/11