diff options
author | Calin Juravle <calin@google.com> | 2015-02-23 15:53:39 +0000 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2015-02-23 15:55:11 +0000 |
commit | 3173c8a11f7e23a89526e0ac3b21af5150966d74 (patch) | |
tree | 490fb32942acdcd19f02adfd075fdd32f0830a7e /test/451-regression-add-float | |
parent | 735969139b162f9d45a3c0e47dc24a8aec63c736 (diff) | |
download | art-3173c8a11f7e23a89526e0ac3b21af5150966d74.zip art-3173c8a11f7e23a89526e0ac3b21af5150966d74.tar.gz art-3173c8a11f7e23a89526e0ac3b21af5150966d74.tar.bz2 |
[optimizing] Fix float addition on x86.
Change-Id: Ic39aaae89b8e5184b98001ea67221a3564e9334a
Diffstat (limited to 'test/451-regression-add-float')
-rw-r--r-- | test/451-regression-add-float/expected.txt | 0 | ||||
-rw-r--r-- | test/451-regression-add-float/info.txt | 2 | ||||
-rw-r--r-- | test/451-regression-add-float/src/Main.java | 72 |
3 files changed, 74 insertions, 0 deletions
diff --git a/test/451-regression-add-float/expected.txt b/test/451-regression-add-float/expected.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/451-regression-add-float/expected.txt diff --git a/test/451-regression-add-float/info.txt b/test/451-regression-add-float/info.txt new file mode 100644 index 0000000..83a5f9d --- /dev/null +++ b/test/451-regression-add-float/info.txt @@ -0,0 +1,2 @@ +Tests a regression in float addition for optimizing. The second argument +could be now be a constant for floating point numbers. diff --git a/test/451-regression-add-float/src/Main.java b/test/451-regression-add-float/src/Main.java new file mode 100644 index 0000000..0d4bf06 --- /dev/null +++ b/test/451-regression-add-float/src/Main.java @@ -0,0 +1,72 @@ +/* +* Copyright (C) 2015 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + + +public class Main { + + public static void main(String[] args) { + assertEqual(4, add3(1)); + assertEqual(4l, add3(1l)); + assertEqual(4f, add3(1f)); + assertEqual(4d, add3(1d)); + } + + public static int add3(int a) { + return 1 + a + 2; + } + + public static long add3(long a) { + return 1l + a + 2l; + } + + public static float add3(float a) { + return 1f + a + 2f; + } + + public static double add3(double a) { + return 1d + a + 2d; + } + + public static void assertEqual(int a, int b) { + if (a != b) { + throw new RuntimeException("Expected: " + a + " Found: " + b); + } + } + + public static void assertEqual(long a, long b) { + if (a != b) { + throw new RuntimeException("Expected: " + a + " Found: " + b); + } + } + + public static void assertEqual(float a, float b) { + boolean aproxEquals = (a > b) + ? ((a - b) < 0.0001f) + : ((b - a) < 0.0001f); + if (!aproxEquals) { + throw new RuntimeException("Expected: " + a + " Found: " + b); + } + } + + public static void assertEqual(double a, double b) { + boolean aproxEquals = (a > b) + ? ((a - b) < 0.0001d) + : ((b - a) < 0.0001d); + if (!aproxEquals) { + throw new RuntimeException("Expected: " + a + " Found: " + b); + } + } +} |