diff options
author | Roland Levillain <rpl@google.com> | 2014-10-23 18:07:44 +0100 |
---|---|---|
committer | Roland Levillain <rpl@google.com> | 2014-10-23 18:07:44 +0100 |
commit | 30ca3d847fe72cfa33e1b2473100ea2d8bea4517 (patch) | |
tree | a66582c2cb6026be2f59ba66ff437429b67bbe44 /test/411-optimizing-arith | |
parent | 46fdec13b6dcaf932aa9fb1338f32df01aa0d959 (diff) | |
download | art-30ca3d847fe72cfa33e1b2473100ea2d8bea4517.tar.gz art-30ca3d847fe72cfa33e1b2473100ea2d8bea4517.tar.bz2 art-30ca3d847fe72cfa33e1b2473100ea2d8bea4517.zip |
Revert "Implement long negate instruction in the optimizing compiler."
This reverts commit 66ce173a40eff4392e9949ede169ccf3108be2db.
Diffstat (limited to 'test/411-optimizing-arith')
-rw-r--r-- | test/411-optimizing-arith/src/Main.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/411-optimizing-arith/src/Main.java b/test/411-optimizing-arith/src/Main.java index a22c516ff4..4de2271ebd 100644 --- a/test/411-optimizing-arith/src/Main.java +++ b/test/411-optimizing-arith/src/Main.java @@ -74,6 +74,7 @@ public class Main { public static void main(String[] args) { mul(); + neg(); } public static void mul() { @@ -163,6 +164,34 @@ public class Main { expectEquals(Double.POSITIVE_INFINITY, $opt$Mul(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY)); } + public static void neg() { + expectEquals(-1, $opt$Neg(1)); + expectEquals(1, $opt$Neg(-1)); + expectEquals(0, $opt$Neg(0)); + expectEquals(51, $opt$Neg(-51)); + expectEquals(-51, $opt$Neg(51)); + expectEquals(2147483647, $opt$Neg(-2147483647)); // (2^31 - 1) + expectEquals(-2147483647, $opt$Neg(2147483647)); // -(2^31 - 1) + // From the Java 7 SE Edition specification: + // http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.15.4 + // + // For integer values, negation is the same as subtraction from + // zero. The Java programming language uses two's-complement + // representation for integers, and the range of two's-complement + // values is not symmetric, so negation of the maximum negative + // int or long results in that same maximum negative number. + // Overflow occurs in this case, but no exception is thrown. + // For all integer values x, -x equals (~x)+1.'' + expectEquals(-2147483648, $opt$Neg(-2147483648)); // -(2^31) + + $opt$InplaceNegOne(1); + } + + public static void $opt$InplaceNegOne(int a) { + a = -a; + expectEquals(-1, a); + } + static int $opt$Mul(int a, int b) { return a * b; } @@ -178,4 +207,9 @@ public class Main { static double $opt$Mul(double a, double b) { return a * b; } + + static int $opt$Neg(int a){ + return -a; + } + } |