b97fbe5a636745110529aced389b251d59ab2fd6 |
|
16-Mar-2018 |
Aart Bik <ajcbik@google.com> |
Minor DCHECK bug fix. Rationale: Should use the utility to test for SIMD result, Test: 623 Bug: b/80497244 (cherry picked from commit 5a0eb0cbeeabda48bfef05df9f59a6fd607e1a1e) Change-Id: I2966efea643eb7292c59f4f3e9b8725f0792d689
|
ee74149e9209eabf5928bb0df9a7cf8e194f9677 |
|
21-Dec-2017 |
Aart Bik <ajcbik@google.com> |
Force JIT on reduction with many variables. Rationale: This method exposed a few bugs with SIMDization, so it is important we make sure this loops is vectorized under JIT. Bug: 70559970 Test: 623 Change-Id: I1be82f934d9c929ce390c30e278cb86491b5564d
|
2dd7b672ea0afd7ea4448b43d24829e9886de3af |
|
07-Dec-2017 |
Aart Bik <ajcbik@google.com> |
Fixed spilling bug (visible on ARM64): missed SIMD type. Test: test-art-host test-art-target Change-Id: I6f321446f54943e02f250732ec9da729f633c3a9
|
8c6c3575668831c752820ba4174b07ee407f7a4f |
|
25-Oct-2017 |
Aart Bik <ajcbik@google.com> |
Make SIMD checker tests more robust. Rationale: With more and more peeling and cleanup loops coming up, some of our checker tests were a bit fragile testing for the first Phi occurrence. This CL fixes that. Also fixes a few omissions found during the refactoring. Test: test-art-host test-art-target Change-Id: I9b27237cf048981ca2b5a18057e09211b7002486
|
df011c3bc3db8b327f2b2d93e108c3a53a9a4f34 |
|
28-Sep-2017 |
Aart Bik <ajcbik@google.com> |
Generalized zero/sign-ext analysis. Generalized SAD. Rationale: The more, the better. Some of the analysis was overly conservative (e.g. extension does not need to happen from terminals only as long as vectorized guarantees higher order bits don't contribute). Also, added hidden-SUB for SAD. Test: test-art-host test-art-target Bug: 64091002 Change-Id: I66afd8fb4292ce5cf14f98f9c5ce2bf2b8c98488
|
521b50f58f2af8b5a68f821a6c4eac7d86ec01f5 |
|
09-Sep-2017 |
Aart Bik <ajcbik@google.com> |
No unrolling for large loop bodies. Rationale: should yield 1, not 0 Test: test-art-host test-art-target Change-Id: I0ca68b2a5a4dba1c3e41248376002d9635716840
|
dcaf0e5da40dafc51c70d2ce4e23925d30b27374 |
|
08-Sep-2017 |
Aart Bik <ajcbik@google.com> |
Bug fix on 32-bit vs 64-bit movd/movdq on x86_64. Bug: 65478356 Test: test-art-host Change-Id: I5335225ab8ca40e099c4a6b93cbf58783a6ddd0b
|
7f56ff42ac663ccfa62034ed22297bd7d9bce2f6 |
|
30-Aug-2017 |
Aart Bik <ajcbik@google.com> |
Refined range rule for ABS(x) Rationale; ABS(minint) = minint prevents assuming >=0 always. With a fail-before(sig11)/pass-after regression test. Test: 623 Change-Id: If5fb1580b207c7cdd964f7498849d1768bb1589d
|
671e48a4895cc1a0b7a1458d608f8c4f9b5cf85c |
|
09-Aug-2017 |
Aart Bik <ajcbik@google.com> |
Fix performance regression. Rationale: One "improvement" overlooked in the previous CL hoists a try-test out of the optimization to make sure we don't change HIR when not needed. However, the try-test may affect the outcome of the test, so that was bad, bad! Bug: 64091002 Test: test-art-host Change-Id: Icf5f73e7cbeb209ee5fa5f6c1bef64fe127bb2fd
|
21c7e6fbcabef2f22b467e1e89f4abe1aa43e459 |
|
27-Jul-2017 |
Artem Serov <artem.serov@linaro.org> |
ART: Fix SimplifyInduction for an instruction with HEnvironment. After an instruction is removed during RemoveFromCycle its environment isn't properly cleaned: it still has input instructions present and registered (those instructions still hold records for that). Test: test-art-target, test-art-host. Change-Id: Iea315bdf735d75fe477f43671f05b40dfecc63a8
|
8f7c41044bdb7a36913444a3437bf2b946f7efe9 |
|
21-Jun-2017 |
Artem Serov <artem.serov@linaro.org> |
ARM: ART Vectorizer (64-bit vectors). Basic vectorization support with 64-bit vector length on ARM 32-bit platforms (128-bit vectors require massive changes in register allocator). Test: test-art-target, test-art-host Change-Id: I1d740146c3f00170fc033ae5fd69d59321ddcbf4
|
19680d3655433e98582983ed0a6d44d6b4822951 |
|
11-May-2017 |
Goran Jakovljevic <Goran.Jakovljevic@imgtec.com> |
MIPS64: ART Vectorizer MIPS64 implementation which uses MSA extension. Also extended all relevant checker tests to test MIPS64 implementation. Test: booted MIPS64R6 in QEMU Test: ./testrunner.py --target --optimizing -j1 in QEMU Change-Id: I8b8a2f601076bca1925e21213db8ed1d41d79b52
|
304c8a5dfe92d5677e9561270b19313d3e450c59 |
|
23-May-2017 |
Aart Bik <ajcbik@google.com> |
Support for narrow operands in "dangerous" operations. This is a revert^2 of commit 636e870d55c1739e2318c2180fac349683dbfa97. Rationale: Under strict conditions, even operations that are sensitive to higher order bits can vectorize by inspecting the operands carefully. This enables more vectorization, as demonstrated by the removal of quite a few TODOs. Test: test-art-target, test-art-host Change-Id: Ic2684f771d2e36df10432286198533284acaf472
|
9231690d586ecf45d5d9481bc5df5a5ad2628c89 |
|
23-May-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Support for narrow operands in "dangerous" operations." Fails on armv8 / speed-profile This reverts commit 636e870d55c1739e2318c2180fac349683dbfa97. Change-Id: Ib2a09b3adeba994c6b095672a1e08b32d3871872
|
636e870d55c1739e2318c2180fac349683dbfa97 |
|
18-May-2017 |
Aart Bik <ajcbik@google.com> |
Support for narrow operands in "dangerous" operations. Rationale: Under strict conditions, even operations that are sensitive to higher order bits can vectorize by inspecting the operands carefully. This enables more vectorization, as demonstrated by the removal of quite a few TODOs. Test: test-art-target, test-art-host Change-Id: I2b0fda6a182da9aed9ce1708a53eaf0b7e1c9146
|
06886e53ad3218407db42cd14a43b8824fb61547 |
|
03-May-2017 |
Aart Bik <ajcbik@google.com> |
Fixed bug due to not updating TC information (with regression test) Bug: 37768917 Test: test-art-target, test-art-host (cherry picked from commit e22445fba0e5747ea787429ac64577a9a62aded3) Change-Id: I505106ef7ab8eed1e37067b39d6ef657ee234292
|
e22445fba0e5747ea787429ac64577a9a62aded3 |
|
03-May-2017 |
Aart Bik <ajcbik@google.com> |
Fixed bug due to not updating TC information (with regression test) Bug: 37768917 Test: test-art-target, test-art-host Change-Id: Ia0cd4e0874941a047625448cbb95b7b4733d70d1
|
f50c2b9023e32cefb1f8e57c0751c394d251b61f |
|
01-May-2017 |
Aart Bik <ajcbik@google.com> |
Allow same-length integral type mixing in SIMD. Rationale: Just like the incoming sequential code, the SIMD code allows for some type matching, as long as it is integral and same length. Bug: 37764324 Test: test-art-target, test-art-host Change-Id: Ide1c5403e0f3b8c5372e8ac6dd282d8211ca8f1b
|
d58bc3212a968fe5a2e1fba51df9a7efedcf1b60 |
|
01-May-2017 |
Aart Bik <ajcbik@google.com> |
Allow same-length integral type mixing in SIMD. Rationale: Just like the incoming sequential code, the SIMD code allows for some type matching, as long as it is integral and same length. Bug: 37764324 Test: test-art-target, test-art-host Change-Id: Ide1c5403e0f3b8c5372e8ac6dd282d8211ca8f1b
|
472821b210a7fc7a4d2e3d45762c7b5b9628a35b |
|
28-Apr-2017 |
Aart Bik <ajcbik@google.com> |
Enable string "array get" vectorization. Rationale: Like its scalar counterpart, the SIMD implementation of array get from a string needs to deal with compressed and uncompressed cases. Micro benchmarks shows 2x to 3x speedup for just copying data! Test: test-art-target, test-art-host Change-Id: I2fd714e50715b263123c215cd181f19194456d2b
|
d86c08555905dbc42233a506683e3995446fc113 |
|
14-Apr-2017 |
Aart Bik <ajcbik@google.com> |
Fixed bug on pending environment use of termination condition. With regression test. Test: test-art-host Bug: 37247891 Change-Id: I55b06939d465d3ddb736d1ba659b1df179a5c390
|
3101e58114b21876f77940d716385c54f697761b |
|
11-Apr-2017 |
Aart Bik <ajcbik@google.com> |
Fix bug in vectorization of charAt, with regression test Rationale: String array get instruction cannot be vectorized in a straightforward way, since compression has to be dealt with. So rejected for now. Test: test-art-target, test-art-host Bug: 37151445 Change-Id: I16112cb8b1be30babd8ec07af5976db0369f8c28
|
fa76296bc624bc2c879167c260ad6925238efb3d |
|
07-Apr-2017 |
Aart Bik <ajcbik@google.com> |
Fixed missing context while detecting unit strides. With regression test (found by fuzz testing). Bug: 37033123 Test: test-art-target Change-Id: Id738b2a3a353985c3d0bf3beeb581a31f1fcbc3f
|
7adb688fe1213c6dcaf4d2adae3d8b7decf7c28a |
|
07-Mar-2017 |
Aart Bik <ajcbik@google.com> |
Improve isunit computation, some tests edits needed for SIMD. Rationale: Break-out CL of ART Vectorizer: number 4. The purpose is making the original CL smaller and easier to review. Bug: 34083438 Test: test-art-host Change-Id: I62a174944bbbe1e08f631f322c513eeaea14de26
|
b603a5cdff7c1fb300b83175bfb3cd990fdd6265 |
|
07-Mar-2017 |
Aart Bik <ajcbik@google.com> |
Bug fix in overflow detection on pow. With regression test. Rationale: Missed potential overflow in base update. Test: test-art-host Bug: 35706963 Change-Id: I117d96c1fa95dde37f5676f9dc750f0a71becafa
|
d3ba626b424511b91db8e04660e3248cdd597100 |
|
30-Jan-2017 |
Aart Bik <ajcbik@google.com> |
Fix bug in geometric last value (found with fuzz testing) Rationale: When power computation overflows, div should use 0 while mul should use truncated version. Both cases were incorrectly using the latter. Test: test-art-host Bug: 34779592 Change-Id: I9eb8e1280c58b09d57886128f4df4541c143afaa
|
74da5290dd5cc040bee5430796715bd9302036c2 |
|
20-Dec-2016 |
Aart Bik <ajcbik@google.com> |
Fix transfer over rejected induction. Rationale: With the more precise rejection of narrowing linear induction, parent rules should be prepared to reject failed transfers. Also added a bit more comments to clarify rules. With regression tests. Bug: 33774618 Test: test-art-host Change-Id: I4a206e51d4359ab383379914dd4697fc81903547
|
807868eac75a39e79ee6309ed4cbe038407efa29 |
|
04-Nov-2016 |
Aart Bik <ajcbik@google.com> |
Account for early exit loop. Rationale: last value computation is obviously only right if the loop does not have early exits; only needed if cycle leaks to outside loop in any way. Bug:32633772 Test: 623-checker-loop-regressions Change-Id: Id60beca4704491cff611ad12a24bfc63c09d32c3
|