41b175aba41c9365a1c53b8a1afbd17129c87c14 |
|
19-May-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Clean up arm64 kNumberOfXRegisters usage. Avoid undefined behavior for arm64 stemming from 1u << 32 in loops with upper bound kNumberOfXRegisters. Create iterators for enumerating bits in an integer either from high to low or from low to high and use them for <arch>Context::FillCalleeSaves() on all architectures. Refactor runtime/utils.{h,cc} by moving all bit-fiddling functions to runtime/base/bit_utils.{h,cc} (together with the new bit iterators) and all time-related functions to runtime/base/time_utils.{h,cc}. Improve test coverage and fix some corner cases for the bit-fiddling functions. Bug: 13925192 (cherry picked from commit 80afd02024d20e60b197d3adfbb43cc303cf29e0) Change-Id: I905257a21de90b5860ebe1e39563758f721eab82
|
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
|
65b798ea10dd716c1bb3dda029f9bf255435af72 |
|
06-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Enable more Clang warnings Change-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c
|
ca71458862be8505330b7fd5649a062f31d143dc |
|
04-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add Clang's -Wused-but-marked-unused Add detection of wrong unused annotations. Fix our codebase. Change-Id: I85cc20f2eac71c1ec6c5c7cd6efb08454a629634
|
ab4a2f5995b79c2b5b28c91b419a2c91cb88e377 |
|
11-Mar-2015 |
Guillaume "Vermeille" Sanchez <guillaumesa@google.com> |
Forbid the use of shifts in ShifterOperand in Thumb2 Change-Id: I4b3b4d90f11f2dd0c9a274b724051fa98982fb19
|
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
|
b7f2be9238e49db5d163d23e956d1bbec25da013 |
|
17-Mar-2015 |
Calin Juravle <calin@google.com> |
Revert "Forbid the use of shifts in ShifterOperand in Thumb2" This reverts commit bada8b0f0a10bd32d6cb87ed4e57f2aa3d7c03c2. Change-Id: Ic89c76367c8ab91cfb5d1510789ac2e352922da8
|
8de00e3f5fcb99bfd7e4dc679ab7333549bec2c1 |
|
11-Mar-2015 |
Guillaume "Vermeille" Sanchez <guillaumesa@google.com> |
Make subs alter flags when rn is an immediate Change-Id: I7ea84fca5f97713871744b8ac4265a84fd6a5248
|
bada8b0f0a10bd32d6cb87ed4e57f2aa3d7c03c2 |
|
11-Mar-2015 |
Guillaume "Vermeille" Sanchez <guillaumesa@google.com> |
Forbid the use of shifts in ShifterOperand in Thumb2 Change-Id: Ib141f53e52cce3032a42fbc991303e227c98820b
|
ab1eb0d1d047e3478ebb891e5259d2f1d1dd78bd |
|
14-Feb-2015 |
Andreas Gampe <agampe@google.com> |
ART: Templatize IsInt & IsUint Ensure that things are used correctly. Change-Id: I76f082b32dcee28bbfb4c519daa401ac595873b3
|
3d1e788a53cb2eb87a39cf7e1a58be98dc567a67 |
|
03-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix build by putting ATTRIBUTE_UNUSUED. Change-Id: If894fa1343a7c8a6456d707e815d803404a171d7
|
51fdf43a5a53db624ff637d0aae05e2d47e59af2 |
|
03-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Fix thumb2 assembler's ShifterOperandCanHold. Change-Id: Ica3c5f39d52722950725ba622fc67bd7f634918a
|
7b7e524c86a67f7357bbcfd0e7bde07ded50cca2 |
|
03-Feb-2015 |
Andreas Gampe <agampe@google.com> |
ART: Fix assembler_thumb_test Fix the inconsistent calls. This was bad practice, requiring that shape meant arm32 and thumb were not interchangeable. Also fix an error in the assembler itself for tst and teq. Change-Id: I50242801002aa81cc17bfaa53eb8b7c1d9488fbc
|
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
|
ac0341e4ca2a8f81e846465fb56d49da22b199ed |
|
18-Dec-2014 |
Vladimir Marko <vmarko@google.com> |
Fix Thumb2 Emit16BitAddSub() to keep full immediate. Change-Id: I2d4b44752150669119ead16e99f7d7a945d2e88f
|
5bc561c31d119a964e54cf73b475f8eac044d905 |
|
16-Dec-2014 |
Vladimir Marko <vmarko@google.com> |
Fix Thumb2 assembler to emit 16-bit add/sub SP, #imm. Also allow 16-bit add rN, SP, #imm. Change-Id: I50100ad0b0e19a1c855a2319615e86d7a2b66a69
|
3bcc8ea079d867f26622defd0611d134a3b4ae49 |
|
28-Nov-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Don't use CanHoldArm in the code generator. CanHoldArm was ARM32 specific. Instead use a virtual Assembler::ShifterOperandCanHold that both thumb2 and arm32 implement. Change-Id: I33794a93caf02ee5d78d32a8471d9fd6fe4f0a00
|
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
|
e8469c195570ccfda248b4392472421bc0940987 |
|
26-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Use 16-bit Thumb2 PUSH/POP when possible. JNI compiler uses the same assembler but always pushes and pops registers that require the 32-bit PUSH/POP. Change-Id: I7e857ae799316586cd09d6547cf971ef439af147
|
9aec02fc5df5518c16f1e5a9b6cb198a192db973 |
|
19-Nov-2014 |
Calin Juravle <calin@google.com> |
[optimizing compiler] Add shifts Added SHL, SHR, USHR for arm, x86, x86_64. Change-Id: I971f594e270179457e6958acf1401ff7630df07e
|
8366ca0d7ba3b80a2d5be65ba436446cc32440bd |
|
17-Nov-2014 |
Elliott Hughes <enh@google.com> |
Fix the last users of TARGET_CPU_SMP. Everyone else assumes SMP. Change-Id: I7ff7faef46fbec6c67d6e446812d599e473cba39
|
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
|
51d3fc40637fc73d4156ad617cd451b844cbb75e |
|
13-Nov-2014 |
Roland Levillain <rpl@google.com> |
Add support for int-to-byte in the optimizing compiler. - Add support for the int-to-byte Dex instruction in the optimizing compiler. - Implement the ARM and Thumb-2 SBFX instructions. - Generate x86, x86-64 and ARM (but not ARM64) code for char to byte, short to byte and int to byte HTypeConversion nodes. - Add related tests to test/422-type-conversion. Change-Id: Ic8b8911b90d4b5281fad15bcee96bc3ee85dc577
|
277ccbd200ea43590dfc06a93ae184a765327ad0 |
|
04-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: More warnings Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general, and -Wunused-but-set-parameter for GCC builds. Change-Id: I81bbdd762213444673c65d85edae594a523836e5
|
775ef49bad8e8d9d02fc5968858dce6a00a78475 |
|
04-Nov-2014 |
Roland Levillain <rpl@google.com> |
Fix store instructions to large frames in ARM opt. compiler. When accessing a stack frame at a large offset, use an additional core register (R5 or R6) as a temporary register whenever IP contains the value to store (and thus cannot be used by art::Thumb2Assembler::StoreToOffset as a temporary register to compute the memory address where the value is to be stored). The previous value of R5 (or R6) is saved on the stack before the emission of the store instruction and restored afterwards. Change-Id: Ic5fd5ab2c09d8327dd1f0f241d40d2c397ce64cd
|
6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f |
|
31-Oct-2014 |
Ian Rogers <irogers@google.com> |
Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags. Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
|
19a19cffd197a28ae4c9c3e59eff6352fd392241 |
|
22-Oct-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Add support for static fields in optimizing compiler. Change-Id: Id2f010589e2bd6faf42c05bb33abf6816ebe9fa9
|
2c4257be8191c5eefde744e8965fcefc80a0a97d |
|
24-Oct-2014 |
Ian Rogers <irogers@google.com> |
Tidy logging code not using UNIMPLEMENTED. Change-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe
|
35c68e3018d0066eec8e374897d5cf07e1360729 |
|
30-Sep-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix typo Fixes a miss-translation in the pedantic change. Change-Id: Ibdce896bf3667e06f10d60f160803451096b08ba
|
c8ccf68b805c92674545f63e0341ba47e8d9701c |
|
30-Sep-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix some -Wpedantic errors Remove extra semicolons. Dollar signs in C++ identifiers are an extension. Named variadic macros are an extension. Binary literals are a C++14 feature. Enum re-declarations are not allowed. Overflow. Change-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a
|
3c7bb98698f77af10372cf31824d3bb115d9bf0f |
|
23-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement array get and array put in optimizing. Also fix a couple of assembler/disassembler issues. Change-Id: I705c8572988c1a9c4df3172b304678529636d5f6
|
1a43dd78d054dbad8d7af9ba4829ea2f1cb70b53 |
|
17-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Add write barriers to optimizing compiler. Change-Id: I43a40954757f51d49782e70bc28f7c314d6dbe17
|
96f89a290eb67d7bf4b1636798fa28df14309cc7 |
|
11-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Add assembly operations with constants in optimizing compiler. Change-Id: I5bcc35ab50d4457186effef5592a75d7f4e5b65f
|
8d486731559ba0c5e12c27b4a507181333702b7e |
|
16-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Use the thumb2 assembler for the optimizing compiler. Change-Id: I2b058f4433504dc3299c06f5cb0b5ab12f34aa82
|
0bb9ade51635559f991259a7ac90d8570ad886aa |
|
27-Jun-2014 |
Dave Allison <dallison@google.com> |
Fix off-by-one errors in limit checking for ldr/str instructions. The LDR/STR encoder in the thumb assembler had an off-by-one error for limit checking for immediates. This resulted in an assertion failure for things like 'ldr rx,[ry,#128]' Bug: 15876206 Change-Id: Ic866212e2feae94e0bd4c753724898d84f5cb944
|
45fdb93f04b981f70f7b6d98949ab3986b7331f8 |
|
25-Jun-2014 |
Dave Allison <dallison@google.com> |
Support additional instructions in ARM and thumb assemblers This adds the following support for the ARM and thumb assemblers: 1. Shifting by a register. 2. LDR/STR with a register offset, possibly shifted. 3. LDR(literal). 4. STR PC relative. Also adds tests for them in the thumb assembler gtest. Change-Id: Ie467e3c1d06b699cacbdef3482ed9a92e4f1809b
|
20dfc797dc631bf8d655dcf123f46f13332d3074 |
|
17-Jun-2014 |
Dave Allison <dallison@google.com> |
Add some more instruction support to optimizing compiler. This adds a few more DEX instructions to the optimizing compiler's builder (constants, moves, if_xx, etc). Also: * Changes the codegen for IF_XX instructions to use a condition rather than comparing a value against 0. * Fixes some instructions in the ARM disassembler. * Fixes PushList and PopList in the thumb2 assembler. * Switches the assembler for the optimizing compiler to thumb2 rather than ARM. Change-Id: Iaafcd02243ccc5b03a054ef7a15285b84c06740f
|
65fcc2cf3c5cd97b84330c094908f3a6a7a8d4e7 |
|
28-Apr-2014 |
Dave Allison <dallison@google.com> |
Thumb2 assembler for JNI compiler and optimizing compiler This provides a programmatic assembler for the thumb2 instruction set for ARM. The interface is the same as the ARM assembler and the ARM assembler has been moved into Arm32Assembler. The assembler handles most 16 and 32 bit instructions and also allows relocations due to branch expansion. It will also rewrite cbz/cbnz instructions if they go out of range. It also changes the JNI compiler to use the thumb2 assembler as opposed to forcing it to use ARM32. The trampoline compiler still uses ARM due to the way it returns the address of its generated code. A trampoline in thumb2 is the same size as that in ARM anyway (8 bytes). Provides gtest for testing the thumb2 instruction output. This gtest only runs on the host as it uses arm-eabi-objdump to disassemble the generated code. On the target the output is not checked but the assembler will still be run to perform all its checks. Change-Id: Icd9742b6f13541bec5b23097896727392e3a6fb6
|