diff options
Diffstat (limited to 'test/411-optimizing-arith/src/RemTest.java')
| -rw-r--r-- | test/411-optimizing-arith/src/RemTest.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/411-optimizing-arith/src/RemTest.java b/test/411-optimizing-arith/src/RemTest.java index 1b31f63569..287f5d8799 100644 --- a/test/411-optimizing-arith/src/RemTest.java +++ b/test/411-optimizing-arith/src/RemTest.java @@ -89,6 +89,34 @@ public class RemTest { expectDivisionByZero(5L); expectDivisionByZero(Long.MAX_VALUE); expectDivisionByZero(Long.MIN_VALUE); + + expectEquals(0, $noinline$RemLoaded1(0)); + expectEquals(0, $noinline$RemLoaded1(1)); + expectEquals(0, $noinline$RemLoaded1(-1)); + expectEquals(0, $noinline$RemLoaded1(12345)); + expectEquals(0, $noinline$RemLoaded1(Integer.MAX_VALUE)); + expectEquals(0, $noinline$RemLoaded1(Integer.MIN_VALUE)); + + expectEquals(0, $noinline$RemLoadedN1(0)); + expectEquals(0, $noinline$RemLoadedN1(1)); + expectEquals(0, $noinline$RemLoadedN1(-1)); + expectEquals(0, $noinline$RemLoadedN1(12345)); + expectEquals(0, $noinline$RemLoadedN1(Integer.MAX_VALUE)); + expectEquals(0, $noinline$RemLoadedN1(Integer.MIN_VALUE)); + + expectEquals(0L, $noinline$RemLoaded1(0L)); + expectEquals(0L, $noinline$RemLoaded1(1L)); + expectEquals(0L, $noinline$RemLoaded1(-1L)); + expectEquals(0L, $noinline$RemLoaded1(12345L)); + expectEquals(0L, $noinline$RemLoaded1(Long.MAX_VALUE)); + expectEquals(0L, $noinline$RemLoaded1(Long.MIN_VALUE)); + + expectEquals(0L, $noinline$RemLoadedN1(0L)); + expectEquals(0L, $noinline$RemLoadedN1(1L)); + expectEquals(0L, $noinline$RemLoadedN1(-1L)); + expectEquals(0L, $noinline$RemLoadedN1(12345L)); + expectEquals(0L, $noinline$RemLoadedN1(Long.MAX_VALUE)); + expectEquals(0L, $noinline$RemLoadedN1(Long.MIN_VALUE)); } static int $opt$Rem(int a, int b) { @@ -99,6 +127,26 @@ public class RemTest { return a % 0; } + static int $noinline$RemLoaded1(int a) { + int[] v = {25, 1}; + return a % v[1]; + } + + static int $noinline$RemLoadedN1(int a) { + int [] v = {25, -1}; + return a % v[1]; + } + + static long $noinline$RemLoaded1(long a) { + long[] v = {25, 1}; + return a % v[1]; + } + + static long $noinline$RemLoadedN1(long a) { + long [] v = {25, -1}; + return a % v[1]; + } + // Modulo by literals != 0 should not generate checks. static int $opt$RemConst(int a) { return a % 4; |