summaryrefslogtreecommitdiff
path: root/test/082-inline-execute/src/Main.java
AgeCommit message (Collapse)Author
2021-02-10Add Math.multiplyHigh intrinsicNikita Iashchenko
Test: ./art/test/testrunner/testrunner.py --target --optimizing --64 -t 082-inline-execute Test: ./art/test/testrunner/testrunner.py --host --optimizing --64 -t 082-inline-execute Change-Id: I4b6cafa8b9e513eca7c5c139440024d87a7ef758
2020-09-25Introduce Long.divideUnsigned() intrinsic on ARM64.Artem Serov
Extends the 082-inline-execute test and reorders divideUnsigned intrinsic code before VarHandle code. Test: 082-inline-execute. Test: testrunner.py --target --optimizing --64 Bug: 156736938 Change-Id: I8acf3db184da30640aff36cf02570ae0c6d2b88c
2020-09-24Integer.divideUnsigned() intrinsic on ARM64.Vladimir Marko
Implements the intrinsic for arm64; adds a comment for a DCHECK() that prevented kNoOutputOverlap usage in intrinsics with slow paths. Author: Vladimir Marko. Committer: Artem Serov. Test: Covered by 082-inline-execute. Test: testrunner.py --target --optimizing --64 Bug: 156736938 Change-Id: Ie1e61c19afe6a899fd4152206e5dbf9ad013e602
2020-07-09Add some x86/x86-64 assembler tests.Vladimir Marko
Also add divq() and divl() to x86-64 assembler and clean up a test. This is a follow-up to https://android-review.googlesource.com/1355865 . Test: m test-art-host-gtest Test: testrunner.py --host --optimizing -t 082-inline-execute Bug: 156736938 Change-Id: Iade33a2250cea481249f6b976bc53c86663cb901
2020-07-09Make Integer.divideUnsigned intrinsic for x86.Andra Danciu
Bug: 156736938 Test: Added a test to 082-inline-execute. Test: art/test.py --host --32 -r -t 082-inline-execute Change-Id: Id516126fce10f2fa52b95c1b2b107ca7bf45e347
2017-02-02Math.min and Math.max intrinsics for ARMxueliang.zhong
This patch implements min/max intrinsics for: * Long * Float * Double Test: m test-art-host Test: m test-art-target Test: 082-inline-execute Change-Id: I2dfab8ab606f3d01fba712f9014d2e0617449d74
2017-01-31Implement Math.rint Intrinsic for ARM32.xueliang.zhong
Test: m test-art-host Test: m test-art-target Test: 082-inline-execute Change-Id: If73bcea5f9fb24942c7390c6ccbcfb012f8951c7
2016-06-16MIPS64: java.lang.Math.roundChris Larsen
- int java.lang.Math.round(float) - long java.lang.Math.round(double) BUG=26327751 Change-Id: I8bb7a5f32375b06b886a0babf39eb3e20df3a085
2016-04-26MIPS32: java.lang.Math.round(float)Chris Larsen
BUG=26327751 Change-Id: I9ec0d600bbbbcf9e1ed07fbfc0ce9187a2ae5727
2016-03-03MIPS32: Implement isInfinite intrinsics.Chris Larsen
- boolean java.lang.Float.isInfinite(float) - boolean java.lang.Double.isInfinite(double) Change-Id: I17dc2380ec864fd7612025ed400e29dd115ccab4
2016-02-25Add StrictMath.round tests for large integers.Vladimir Marko
This is a follow-up to https://android-review.googlesource.com/203175 . Bug: 27166445 Change-Id: I850999c782017650017fad7e27c83b60b57edaf9
2016-02-22MIPS32: Implement intrinsics from java.lang.Math:Chris Larsen
- abs(double) - abs(float) - abs(int) - abs(long) - max(double, double) - max(float, float) - max(int, int) - max(long, long) - min(double, double) - min(float, float) - min(int, int) - min(long, long) - sqrt(double) The math intrinsics: - ceil(double) - floor(double) - rint(double) - round(double) - round(float) aren't implemented because they require instructions which only exist for MIPS64, or for MIPS32r6. Change-Id: I943be3592b52a423fcb7ac40f46f38a5e2a58c50
2016-02-17Add Math.round tests for large integers.Hans Boehm
These fail for OpenJDK7 and earlier code. Bug: 27166445 Change-Id: Ia09f61bd375e0935e05300cfef4304b2fd9ac12f
2015-11-21Merge mnc-dr-enso-dev into goog/masterPrzemyslaw Szczepaniak
Bug: 25758743 Change-Id: I19d433934f01856e7b5a7392a58b759c3ac386e7
2015-11-18Fix 082-inline-executeYi Kong
Change the expectation for java.lang.Math.round and java.lang.StrictMath.round to follow API specification. Change-Id: I026a12a8be6abe8472531bff7564e9b65cd23d09
2015-09-11ARM/ARM64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRightScott Wakeling
Change-Id: I2a07c279756ee804fb7c129416bdc4a3962e93ed
2015-08-25ART: Additional ceil/floor/rint test casesChris Larsen
Test boundaries conditions around the precision limits of Double's 53 bit mantissa, and Long's [-2^63,2^63-1] range. Change-Id: I7fa33f53d2547a5446f46bb12fbb1b7c2a639b2a
2015-08-17Implement CountLeadingZeros for x86Mark Mendell
Generate Long and Integer numberOfLeadingZeros for x86 and x86_64. Uses 'bsr' instruction to find the first one bit, and then corrects the result. Added some more tests with constant values to test constant folding. Also add a runtime test with 0 as the input. Change-Id: I920b21bb00069bccf5f921f8f87a77e334114926 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
2015-08-04ARM/ARM64: Implement numberOfLeadingZeros intrinsic.Scott Wakeling
Change-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b
2015-07-08ART: Release inputs in Long.reverse intrinsic in x86Andreas Gampe
In the worst case we are using two temps each for input and output. Then we do not have a temp left over for the swap operations. The input is dead, however, after the first swap. So try to release it (a no-op if it isn't actually a temp). Bug: 22324327 (cherry picked from commit 575422fa5be7389bdaff5e2d25dd87b1d2d4de85) Change-Id: I1fc50159afdad14160e34abeaf4670958171d6b2
2015-07-08ART: Release inputs in Long.reverse intrinsic in x86Andreas Gampe
In the worst case we are using two temps each for input and output. Then we do not have a temp left over for the swap operations. The input is dead, however, after the first swap. So try to release it (a no-op if it isn't actually a temp). Bug: 22324327 Change-Id: I1fc50159afdad14160e34abeaf4670958171d6b2
2015-05-12ART: arm indexOf intrinsics for the optimizing compilerAndreas Gampe
Add intrinsics implementations for indexOf in the optimizing compiler. These are mostly ported from Quick. Bug: 20889065 (cherry picked from commit ba6fdbcb764d5a8972f5ff2d7147e4d78226b347) Change-Id: I18ee849d41187a381f99529669e6f97040aaacf6
2015-05-12Merge "ART: arm indexOf intrinsics for the optimizing compiler"Andreas Gampe
2015-05-12ART: arm indexOf intrinsics for the optimizing compilerAndreas Gampe
Add intrinsics implementations for indexOf in the optimizing compiler. These are mostly ported from Quick. Bug: 20889065 Change-Id: I18ee849d41187a381f99529669e6f97040aaacf6
2015-05-11ART: x86 indexOf intrinsics for the optimizing compilerAndreas Gampe
Add intrinsics implementations for indexOf in the optimizing compiler. These are mostly ported from Quick. Add instruction support to assemblers where necessary. Change-Id: Ife90ed0245532a5c436a26fe84715dc357f353c8
2015-05-07ART: Refactor 082-inline-executeAndreas Gampe
Refactor the indexOf intrinsics tests so that the optimizing compiler would actually compile them. Bug: 20889065 Change-Id: I69bfda7fa3eb4ce42c593203731e3ddd61f7e1ed
2015-02-09ART: Arm intrinsics for Optimizing compilerAndreas Gampe
Add arm32 intrinsics to the optimizing compiler. Change-Id: If4aeedbf560862074d8ee08ca4484b666d6b9bf0
2015-01-28ART: Arm64 optimizing compiler intrinsicsAndreas Gampe
Implement most intrinsics for the optimizing compiler for Arm64. Change-Id: Idb459be09f0524cb9aeab7a5c7fccb1c6b65a707
2015-01-26Quick: Fix range check for intrinsic String.charAt() on x86.Vladimir Marko
Bug: 19125146 Change-Id: I274190a7a60cd2e29a854738ed1ec99a9e611969
2015-01-21ART: Fix GenInlined functionsChao-ying Fu
This patch fixes Mir2Lir::GenInlinedReverseBytes, Mir2Lir::GenInlinedAbsInt, Mir2Lir::GenInlinedAbsLong, Mir2Lir::GenInlinedFloatCvt, Mir2Lir::GenInlinedDoubleCvt, X86Mir2Lir::GenInlinedSqrt, X86Mir2Lir::GenInlinedMinMaxFP, X86Mir2Lir::GenInlinedMinMax, X86Mir2Lir::GenInlinedPeek, and X86Mir2Lir::GenInlinedReverseBits to generate no code, when results are unused. New calls without assignments are added to 082-inline-execute. Change-Id: I7076e9ddbea43545315f2aeb677c63a8a6e95224 Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
2015-01-15ART: Optimizing compiler intrinsicsAndreas 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
2014-08-04AArch64: Add inlining support for ceil(), floor(), rint(), round()Serban Constantinescu
This patch adds inlining support for the following Math, StrictMath methods in the ARM64 backend: * double ceil(double) * double floor(double) * double rint(double) * long round(double) * int round(float) Also some cleanup. Change-Id: I9f5a2f4065b1313649f4b0c4380b8176703c3fe1 Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-07-18ART: inline Math.Max/Min (float and double)Alexei Zavjalov
This implements the inlined version of Math.Max/Min intrinsics. Change-Id: I2db8fa7603db3cdf01016ec26811a96f91b1e6ed Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com> Signed-off-by: Shou, Yixin <yixin.shou@intel.com>
2014-07-11Merge "AArch64: Fix and enable reverseBytes intrinsic."Andreas Gampe
2014-07-11ART: Compacting ROS/DlMalloc spaces with semispace copy GCZuo Wang
Current semispace copy GC is mainly associated with bump pointer spaces. Though it squeezes fragmentation most aggressively, an extra copy is required to re-establish the data in the ROS/DlMalloc space to allow CMS GCs to happen afterwards. As semispace copy GC is still stop-the-world, this not only introduces unnecessary overheads but also longer response time. Response time indicates the time duration between the start of transition request and the start of transition animation, which may impact the user experience. Using semispace copy GC to compact the data in a ROS space to another ROS(or DlMalloc space to another DlMalloc) space solves this problem. Although it squeezes less fragmentation, CMS GCs can run immediately after the compaction. We apply this algorithm in two cases: 1) Right before throwing an OOM if -XX:EnableHSpaceCompactForOOM is passed in as true. 2) When app is switched to background if the -XX:BackgroundGC option has value HSpaceCompact. For case 1), OOMs are significantly delayed in the harmony GC stress test, with compaction ratio up to 0.87. For case 2), compaction ratio around 0.5 is observed in both built-in SMS and browser. Similar results have been obtained on other apps as well. Change-Id: Iad9eabc6d046659fda3535ae20f21bc31f89ded3 Signed-off-by: Wang, Zuo <zuo.wang@intel.com> Signed-off-by: Chang, Yang <yang.chang@intel.com> Signed-off-by: Lei Li <lei.l.li@intel.com> Signed-off-by: Lin Zang <lin.zang@intel.com>
2014-07-10AArch64: Fix and enable reverseBytes intrinsic.Zheng Xu
There is no revsh on arm64, use rev16 and sxth instead. Change-Id: I5f9879352f0ad76b386c82cbf476894af888a64c
2014-07-09ART: Add simple tests for inlining of CASAndreas Gampe
Add simple test cases for the inlining of CAS in the quick compiler to run-test 082. The tests are not multi-threaded and will just establish that the baseline behavior is correct. For extensive evaluation consider tests available in libcore. Change-Id: I9f463599e48ab7abc725769dda84758c9c6a76c2
2014-07-09x86_64: enable Peek and Poke intrinsicsAlexei Zavjalov
This implements intrinsics for: Memory.peekByte/Short/Int/Long() Memory.pokeByte/Short/Int/Long() Change-Id: I6da6250f262dfd7aded35c2e3ade2d0916bd73cb Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
2014-07-08ART: Do not emit load when inlining unused Thread.currentThread()Andreas Gampe
When the result is not used, do not emit the load. This avoids uninitialized registers leading to size-check errors. Change-Id: I212392ffea7243720f120b2f12679df286106a02
2014-07-03AArch64: Add few more inline functionsSerban Constantinescu
This patch adds inlining support for the following functions: * Math.max/min(long, long) * Math.max/min(float, float) * Math.max/min(double, double) * Integer.reverse(int) * Long.reverse(long) Change-Id: Ia2b1619fd052358b3a0d23e5fcbfdb823d2029b9 Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-04-17String.IndexOf method handles negative start index value in incorrect wayAlexei Zavjalov
The standard implementation of String.IndexOf converts the negative value of the start index to 0 and searching will start from the beginning of the string. But current implementation may start searching from the incorrect memory offset, that can lead to sigsegv or return incorrect result. This patch adds the handler for cases when fromIndex is negative. Change-Id: I3ac86290712789559eaf5e46bef0006872395bfa Signed-off-by: Alexei Zavjalov <alexei.zavjalov@intel.com>
2014-03-13ART's intrinsic for String.indexOf use the incorrect registerYevgeny Rouban
ART's intrinsic for String.indexOf of x86 platform use the incorrect register to compare start with the string length. It should be fixed. Change-Id: I22986b4d4b23f62b4bb97baab9fe43152d12145e Signed-off-by: Vladimir Ivanov <vladimir.a.ivanov@intel.com> Signed-off-by: Yevgeny Rouban <yevgeny.y.rouban@intel.com>
2013-03-06Update intrinsic inlining test.Sebastien Hertz
Adds invokes of StrictMath operations to reflect compiler inlining support. Change-Id: Ibb2205a41c1e79ddbeacc2e716a9d05b723eb532
2012-06-15Test all cases of all intrinsics.Elliott Hughes
Bug: 6617283 Change-Id: I463ef1e2c09ad41af2e45f17f2f23e8d59f560e0
2011-09-29Adding old unit tests to test suite.jeffhao
These tests are copied straight over. They'll still run, but they're using the old system. Change-Id: If494519e52ddf858a9febfc55bdae830468cb3c8