From a290160f74ee53c0ffb51c7b3ac916d239c9556a Mon Sep 17 00:00:00 2001 From: Lena Djokic Date: Thu, 21 Sep 2017 13:50:52 +0200 Subject: MIPS32R2: Share address computation For array accesses the element address has the following structure: Address = CONST_OFFSET + base_addr + index << ELEM_SHIFT The address part (index << ELEM_SHIFT) can be shared across array accesses with the same data type and index. For example, in the following loop 5 accesses can share address computation: void foo(int[] a, int[] b, int[] c) { for (i...) { a[i] = a[i] + 5; b[i] = b[i] + c[i]; } } Test: test-art-host, test-art-target Change-Id: Id09fa782934aad4ee47669275e7e1a4d7d23b0fa --- compiler/optimizing/nodes.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/nodes.h') diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 411af2ad83..fef0c865ae 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -1423,7 +1423,8 @@ class HLoopInformationOutwardIterator : public ValueObject { #else #define FOR_EACH_CONCRETE_INSTRUCTION_MIPS(M) \ M(MipsComputeBaseMethodAddress, Instruction) \ - M(MipsPackedSwitch, Instruction) + M(MipsPackedSwitch, Instruction) \ + M(IntermediateArrayAddressIndex, Instruction) #endif #define FOR_EACH_CONCRETE_INSTRUCTION_MIPS64(M) -- cgit v1.2.3-59-g8ed1b