diff options
author | Aart Bik <ajcbik@google.com> | 2017-05-18 14:45:27 -0700 |
---|---|---|
committer | Aart Bik <ajcbik@google.com> | 2017-05-18 17:18:24 -0700 |
commit | 636e870d55c1739e2318c2180fac349683dbfa97 (patch) | |
tree | 6c726b0b918e26aba5b5f9ec1bc900045ef2c3e3 /test/640-checker-char-simd | |
parent | de31d084f7d64c94911aef927798559d39759f95 (diff) | |
download | android_art-636e870d55c1739e2318c2180fac349683dbfa97.tar.gz android_art-636e870d55c1739e2318c2180fac349683dbfa97.tar.bz2 android_art-636e870d55c1739e2318c2180fac349683dbfa97.zip |
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
Diffstat (limited to 'test/640-checker-char-simd')
-rw-r--r-- | test/640-checker-char-simd/src/Main.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/test/640-checker-char-simd/src/Main.java b/test/640-checker-char-simd/src/Main.java index 0628b36003..89d4b6b84e 100644 --- a/test/640-checker-char-simd/src/Main.java +++ b/test/640-checker-char-simd/src/Main.java @@ -134,9 +134,9 @@ public class Main { /// CHECK-DAG: ArrayGet loop:<<Loop>> outer_loop:none /// CHECK-DAG: ArraySet loop:<<Loop>> outer_loop:none // - /// CHECK-START-ARM64: void Main.sar2() loop_optimization (after) - // - // TODO: fill in when supported + // TODO: would need signess flip. + /// CHECK-START: void Main.sar2() loop_optimization (after) + /// CHECK-NOT: VecShr static void sar2() { for (int i = 0; i < 128; i++) a[i] >>= 2; @@ -148,8 +148,10 @@ public class Main { /// CHECK-DAG: ArraySet loop:<<Loop>> outer_loop:none // /// CHECK-START-ARM64: void Main.shr2() loop_optimization (after) - // - // TODO: fill in when supported + /// CHECK-DAG: Phi loop:<<Loop:B\d+>> outer_loop:none + /// CHECK-DAG: VecLoad loop:<<Loop>> outer_loop:none + /// CHECK-DAG: VecUShr loop:<<Loop>> outer_loop:none + /// CHECK-DAG: VecStore loop:<<Loop>> outer_loop:none static void shr2() { for (int i = 0; i < 128; i++) a[i] >>>= 2; |