summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics.cc
AgeCommit message (Collapse)Author
2015-08-03Merge "Revert "Optimizing String.Equals as an intrinsic (x86)"" Roland Levillain
2015-08-03Revert "Optimizing String.Equals as an intrinsic (x86)" Roland Levillain
Reverted as it breaks the compilation of boot.{oat,art} on x86 (although this CL may not be the culprit, as the issue seems to come from Optimizing's register allocator). This reverts commit 8ab7bd6c8b10ad58758c33a1dc9326212bd200e9. Change-Id: If7c8b6258d1e690f4d2a06bcc82c92563ac6cdef
2015-08-03Merge "Optimizing String.Equals as an intrinsic (x86)" Roland Levillain
2015-07-31Optimizing String.Equals as an intrinsic (x86) agicsaki
The third implementation of String.Equals. I added an intrinsic in x86 which is similar to the original java implementation of String.equals: an instanceof check, null check, length check, and reference equality check followed by a loop comparing strings character by character. Interesting Benchmarking Values: Optimizing Compiler on Nexus Player Intrinsic 15-30 Character Strings: 177 ns Original 15-30 Character Strings: 275 ns Intrinsic Null Argument: 59 ns Original Null Argument: 137 ns Intrinsic 100-1000 Character Strings: 1812 ns Original 100-1000 Character Strings: 6334 ns Bug: 21481923 Change-Id: Ia386e19b9dbfe0dac688b20ec93d8f90f67af47e
2015-07-31ART: Change stream output kNone intrinsic David Brazdil
Name of intrinsics is dumped with C1visualizer and checked with Checker whose attributes should not contain whitespace. This patch changes the output printed for non-intrinsified invokes. Change-Id: I3e565e8c9e26eb61026e7a13823eab20409dd63a
2015-05-26Merge "ART: Clean up arm64 kNumberOfXRegisters usage." Vladimir Marko
2015-05-26ART: Clean up arm64 kNumberOfXRegisters usage. Vladimir Marko
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 Change-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7
2015-05-22Do not use dex_compilation_unit after inlining. Nicolas Geoffray
It's incompatible with inlining, as inlined invokes/load class/new can be from another dex file. Change-Id: I8897b6a012942bc8e136f2bea70252d3fb3a7fa5
2015-04-29Factor MoveArguments methods in Optimizing's intrinsics handlers. Roland Levillain
Also add a precondition similar to the one present in code generators, regarding static invoke related explicit clinit check elimination in non-baseline compilations. Change-Id: I26f4dcb5d02824d7556f90b4b0c85b08b737fa53
2015-04-27Replace String CharArray with internal uint16_t array. Jeff Hao
Summary of high level changes: - Adds compiler inliner support to identify string init methods - Adds compiler support (quick & optimizing) with new invoke code path that calls method off the thread pointer - Adds thread entrypoints for all string init methods - Adds map to verifier to log when receiver of string init has been copied to other registers. used by compiler and interpreter Change-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01
2015-04-06ART: Enable more Clang warnings Andreas Gampe
Change-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c
2015-03-27[optimizing] Do not inline intrinsics Razvan A Lupusoru
The intrinsics generally have specialized code and the code for them may be faster than what can be achieved with inlining. Thus inliner should skip intrinsics. At the same time, easy methods are not worth intrinsifying: ie String length and isEmpty. Those can be handled by inliner with no problem and can actually lead to better code since call is not kept around through all of the optimizations. Change-Id: Iab38e6c33f79efa54d845d4871cf26fa9b235ab0 Signed-off-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
2015-01-28ART: Arm64 optimizing compiler intrinsics Andreas Gampe
Implement most intrinsics for the optimizing compiler for Arm64. Change-Id: Idb459be09f0524cb9aeab7a5c7fccb1c6b65a707
2015-01-15ART: Optimizing compiler intrinsics Andreas Gampe
Add intrinsics infrastructure to the optimizing compiler. Add almost all intrinsics supported by Quick to the x86-64 backend. Further intrinsics require more assembler support. Change-Id: I48de9b44c82886bb298d16e74e12a9506b8e8807