summaryrefslogtreecommitdiffstats
path: root/test/415-optimizing-arith-neg
diff options
context:
space:
mode:
authorRoland Levillain <rpl@google.com>2014-11-27 15:03:41 +0000
committerRoland Levillain <rpl@google.com>2014-11-27 15:03:41 +0000
commit5368c219a462defc90c4b896b34eb7506ba5c142 (patch)
tree6374d21b8ac88f3a0f001a7fbda4a1769572c879 /test/415-optimizing-arith-neg
parentd7fa3a7d26105dd112acf955a0c7a880a6027180 (diff)
downloadart-5368c219a462defc90c4b896b34eb7506ba5c142.zip
art-5368c219a462defc90c4b896b34eb7506ba5c142.tar.gz
art-5368c219a462defc90c4b896b34eb7506ba5c142.tar.bz2
Fix neg-float & neg-double for null values in opt. compiler.
- Implement float and double negation as an exclusive or with a bit sign mask in x86 and x86-64 code generators. - Enable requests of temporary FPU (double) registers during register allocation. - Update test cases in test/415-optimizing-arith-neg. Change-Id: I9572c24b27c645ba698825e60cd5b3956b4895fa
Diffstat (limited to 'test/415-optimizing-arith-neg')
-rw-r--r--test/415-optimizing-arith-neg/src/Main.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/test/415-optimizing-arith-neg/src/Main.java b/test/415-optimizing-arith-neg/src/Main.java
index d9f8bcf..bd8a158 100644
--- a/test/415-optimizing-arith-neg/src/Main.java
+++ b/test/415-optimizing-arith-neg/src/Main.java
@@ -36,12 +36,24 @@ public class Main {
}
}
+ public static void assertEquals(String expected, float result) {
+ if (!expected.equals(new Float(result).toString())) {
+ throw new Error("Expected: " + expected + ", found: " + result);
+ }
+ }
+
public static void assertEquals(double expected, double result) {
if (expected != result) {
throw new Error("Expected: " + expected + ", found: " + result);
}
}
+ public static void assertEquals(String expected, double result) {
+ if (!expected.equals(new Double(result).toString())) {
+ throw new Error("Expected: " + expected + ", found: " + result);
+ }
+ }
+
public static void assertIsNaN(float result) {
if (!Float.isNaN(result)) {
throw new Error("Expected NaN: " + result);
@@ -116,9 +128,10 @@ public class Main {
}
private static void negFloat() {
+ assertEquals("-0.0", $opt$NegFloat(0F));
+ assertEquals("0.0", $opt$NegFloat(-0F));
assertEquals(-1F, $opt$NegFloat(1F));
assertEquals(1F, $opt$NegFloat(-1F));
- assertEquals(0F, $opt$NegFloat(0F));
assertEquals(51F, $opt$NegFloat(-51F));
assertEquals(-51F, $opt$NegFloat(51F));
@@ -140,9 +153,10 @@ public class Main {
}
private static void negDouble() {
+ assertEquals("-0.0", $opt$NegDouble(0D));
+ assertEquals("0.0", $opt$NegDouble(-0D));
assertEquals(-1D, $opt$NegDouble(1D));
assertEquals(1D, $opt$NegDouble(-1D));
- assertEquals(0D, $opt$NegDouble(0D));
assertEquals(51D, $opt$NegDouble(-51D));
assertEquals(-51D, $opt$NegDouble(51D));