History log of /art/compiler/utils/arm/assembler_thumb2_test.cc
Revision Date Author Comments
f2bb04304ab545ecef67fc6b8708e3ad41a6005f 25-Apr-2016 Vladimir Marko <vmarko@google.com> Thumb2: Reduce memory used for fixup dependencies.

Mark fixups for far backward branches as 32-bit from the
beginning and ignore their dependencies since they cannot
be expanded anymore. This reduces the memory used by the
fixup_dependents_ when compiling methods with a lot of
slow paths.

Bug: 28256882

This is a cherry-pick of the fixed revert-revert
Revert "Revert "Thumb2: Reduce memory used for fixup dependencies.""
(cherry picked from commit a64f249add4a0a9e93aa6f246045ca79f5916dcd)

Change-Id: I9ca766b73d9f5a1da5dc10ad070145ac88fbcd53
c257da7b0fb6737f65aba426add8831e45404755 02-Feb-2016 Artem Serov <artem.serov@linaro.org> ARM: Implement Reverse bits and bytes intrinsic.

- IntegerReverse
- LongReverse
- IntegerReverseBytes
- LongReverseBytes
- ShortReverseBytes

Change-Id: I3ec202696b245148a0237ff6e46ac3f1a3f8402a
6fd0ffe8da212723a3ac0256ce350b5872cc61d4 19-Nov-2015 Vladimir Marko <vmarko@google.com> Optimizing/Thumb2: Improve load/store for large offsets.

This reduces the boot.oat size on Nexus 5 by 568KiB (0.8%).

Also change 32-bit ADD/SUB immediate to use the recommended
encoding T3 when both T3 and T4 are available.

Change-Id: I174382bda2b22da70560b947f5536acf8c1814a9
7cffc3b0004d32faffc552c0a59286f369b21504 20-Oct-2015 Andreas Gampe <agampe@google.com> ART: Arm32 packed-switch jump tables

Add jump table support to the thumb2 assembler. Jump tables are
a collection of labels for the case targets, and an anchor label
denoting the position of the jump.

Use the jump table support to implement packed-switch support for
arm32.

Add tests for BindTrackedLabel and JumpTable to the thumb2 assembler
test.

Bug: 24092914
Change-Id: I5c84f193dfebf9e07f48678efc8bd151bb1410dd
9ee23f4273efed8d6378f6ad8e63c65e30a17139 23-Jul-2015 Scott Wakeling <scott.wakeling@linaro.org> ARM/ARM64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight

Change-Id: I2a07c279756ee804fb7c129416bdc4a3962e93ed
611d3395e9efc0ab8dbfa4a197fa022fbd8c7204 10-Jul-2015 Scott Wakeling <scott.wakeling@linaro.org> ARM/ARM64: Implement numberOfLeadingZeros intrinsic.

Change-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b
663c93448e50599d411b2403585b90513dbf8e3a 22-Jul-2015 Vladimir Marko <vmarko@google.com> ART: Fix Thumb2 literal fixup.

When processing a load literal during fixup, we use the
current code size to determine whether we need to add the
padding before literals. However, this may change by the end
of the fixup, yet we didn't recalculate to see if the load
literal is pushed out of range.

Instead of making the load literal fixup also depend on all
preceding fixups, add an extra pass over literals when we
need the padding and repeat the fixup loop if needed.

Change-Id: Ia21d660486167a2dcb1ad4afe8acc669b4af669d
cf93a5cd9c978f59113d42f9f642fab5e2cc8877 16-Jun-2015 Vladimir Marko <vmarko@google.com> Revert "Revert "ART: Implement literal pool for arm, fix branch fixup.""

This reverts commit fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98.

Adjust block label positions. Bad catch block labels were the
reason for the revert.

Change-Id: Ia6950d639d46b9da6b07f3ade63ab46d03d63310
fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98 16-Jun-2015 Vladimir Marko <vmarko@google.com> Revert "ART: Implement literal pool for arm, fix branch fixup."

This reverts commit f38caa68cce551fb153dff37d01db518e58ed00f.

Change-Id: Id88b82cc949d288cfcdb3c401b96f884b777fc40
Reason: broke the tests.
f38caa68cce551fb153dff37d01db518e58ed00f 29-May-2015 Vladimir Marko <vmarko@google.com> ART: Implement literal pool for arm, fix branch fixup.

Change-Id: Iecc91418bb4ee1c957f42fefb737d0ee2ba960e7
c66671076b12a0ee8b9d1ae782732cc91beacb73 15-May-2015 Zheng Xu <zheng.xu@arm.com> Opt compiler: Speedup div/rem by constants on arm32 and arm64.

This patch also includes:
1. Add java test for div/rem negative constants.
2. Fix a thumb2 encoding issue where the last operand is
"reg, shift #amount" in some instructions.
3. Support a simple filter in arm32 assembler test to filter out
unsupported cases, such as "smull r0, r0, r1, r2".
4. Add smull arm32 assembler test.
5. Add smull/umull thumb2 test.
6. Add test for the thumb2 encoding issue which is fixed in this
patch.

Change-Id: I1601bc9c38f70f11909f2816fe3ec105a158951e
4af147eb3296a26eea566f53a7f687194638d46b 07-Apr-2015 Roland Levillain <rpl@google.com> Exercise art::arm::Thumb2Assembler::StoreToOffset for word pairs.

- Augment compiler/utils/arm/assembler_thumb2_test.cc.
- Ensure art::arm::Thumb2Assembler::StoreToOffset properly
handles IP as (implicit) second source register.
- Remove the parity constraint on the first source register
for art::arm::Thumb2Assembler::ldrd and
art::arm::Thumb2Assembler::strd (as they are not required
by the Thumb-2 encoding).
- Introduce additional versions of
art::arm::Thumb2Assembler::ldrd and
art::arm::Thumb2Assembler::strd accepting a second source
register, which is not necessarily the one following the
first source register, as it is allowed by the Thumb-2
encoding.

Change-Id: I7dba168437a96a5cbb117058e9c547fb1ff5c295
c5a5ac641eb4b32fa6737c390813ce78c66a12d3 02-Apr-2015 Roland Levillain <rpl@google.com> Exercise art::arm::Thumb2Assembler::StoreToOffset for words.

Change-Id: Ifa82e69c055eb99e526fc7ab5db54bde988d2caf
dc62c48937a6476ed9c0d739f6b3b5c26f758371 11-Mar-2015 Guillaume "Vermeille" Sanchez <guillaumesa@google.com> Make subs and adds alter flags when rn is an immediate

Change-Id: I70e0d78f155bf806222ad12a324dbd8c8fe575a1
2dae78cbd4394a4498a845c6943992b57bd07b6e 17-Mar-2015 Calin Juravle <calin@google.com> Revert "Make subs alter flags when rn is an immediate"

This reverts commit 8de00e3f5fcb99bfd7e4dc679ab7333549bec2c1.

Change-Id: Ie9da31279f565f165d51d8c0036928377280e3b8
8de00e3f5fcb99bfd7e4dc679ab7333549bec2c1 11-Mar-2015 Guillaume "Vermeille" Sanchez <guillaumesa@google.com> Make subs alter flags when rn is an immediate

Change-Id: I7ea84fca5f97713871744b8ac4265a84fd6a5248
2bcf9bf784a0021630d8fe63d7230d46d6891780 29-Jan-2015 Andreas Gampe <agampe@google.com> ART: Arm intrinsics for Optimizing compiler

Add arm32 intrinsics to the optimizing compiler.

Change-Id: If4aeedbf560862074d8ee08ca4484b666d6b9bf0
513ea0c203a86e9d81a8630b56cb62704e126cc2 02-Feb-2015 Andreas Gampe <agampe@google.com> ART: Fix thumb2 utils assembler

It didn't correctly put down the 16b variants, as it was not
checking the ShifterOperand correctly.

Add one simple test. TODO: exhaustive testing.

Change-Id: Ied08da115f8417a3ca92bd9967c6dcdc102e7510
52c489645b6e9ae33623f1ec24143cde5444906e 16-Dec-2014 Calin Juravle <calin@google.com> [optimizing compiler] Add support for volatile

- for backends: arm, x86, x86_64
- added necessary instructions to assemblies
- clean up code gen for field set/get
- fixed InstructionDataEquals for some instructions
- fixed comments in compiler_enums

* 003-opcode test verifies basic volatile functionality

Change-Id: I144393efa312dfb2c332cb84056b00edffee338a
ddb7df25af45d7cd19ed1138e537973735cc78a5 25-Nov-2014 Calin Juravle <calin@google.com> [optimizing compiler] Add CMP{L,G}_{FLOAT,DOUBLE}

Adds:
- float comparison for arm, x86, x86_64 backends.
- ucomis{s,d} assembly to x86 and x86_64.
- vmstat assebmly for thumb2
- new assembly tests

Change-Id: Ie3e19d0c08b3b875cd0a4be4ee4e9c8a4a076290
981e45424f52735b1c61ae0eac7e299ed313f8db 14-Nov-2014 Roland Levillain <rpl@google.com> Add support for int-to-char in the optimizing compiler.

- Add support for the int-to-char Dex instruction in the
optimizing compiler.
- Implement the ARM and Thumb-2 UBFX instructions and add
tests for them.
- Generate x86, x86-64 and ARM (but not ARM64) code for
byte to char, short to char, int to char (and char to
char!) HTypeConversion nodes.
- Add related tests to test/422-type-conversion.

Change-Id: I5cd4c6d86f0f6a966c059715b98db35cc8f9de76
851df20225593b10e698a760ac3cd5243620700b 12-Nov-2014 Andreas Gampe <agampe@google.com> ART: Multiview assembler_test, fix x86-64 assembler

Expose "secondary" names for registers so it is possible to test
32b views for 64b architectures.

Add floating-point register testing.

Refactor assembler_test for better code reuse (and simpler adding
of combination drivers).

Fix movss, movsd (MR instead of RM encoding), xchgl, xchgq,
both versions of EmitGenericShift.

Tighten imull(Reg,Imm), imulq(Reg,Imm), xchgl and xchgq encoding.

Clarify cv*** variants with a comment.

Add tests for movl, addl, imull, imuli, mull, subl, cmpqi, cmpl,
xorq (regs), xorl, movss, movsd, addss, addsd, subss, subsd, mulss,
mulsd, divss, divsd, cvtsi2ss, cvtsi2sd, cvtss2si, cvtss2sd, cvtsd2si,
cvttss2si, cvttsd2si, cvtsd2ss, cvtdq2pd, comiss, comisd, sqrtss,
sqrtsd, xorps, xorpd, fincstp, fsin, fcos, fptan, xchgl (disabled,
see code comment), xchgq, testl, andl, andq, orl, orq, shll, shrl,
sarl, negq, negl, notq, notl, enter and leave, call, ret, and jmp,
and make some older ones more exhaustive.

Follow-up TODOs:
1) Support memory (Address).
2) Support tertiary and quaternary register views.

Bug: 18117217
Change-Id: I1d583a3bec552e3cc7c315925e1e006f393ab687
1a28fc43ea7daa624ada9af40e30de64d4e946a8 13-Nov-2014 Roland Levillain <rpl@google.com> Exercise the generation of SBFX on ARM32 & Thumb-2.

Exercise the generation of the ARM SBFX intruction in
compiler/utils/arm/assembler_arm32_test.cc (ARM
instruction set encoding) and in
compiler/utils/arm/assembler_thumb2_test.cc (Thumb
instruction set encoding).

Change-Id: Ic72683aac6dd6628e227523e352c395e1a63b52e