blob: 951d2c7510d507cab17b984df6b066c955ec0580 [file] [log] [blame]
Aart Bik6e74fa92016-01-25 16:51:32 -08001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17public class Main {
18
19 /// CHECK-START: int Main.compare32(int, int) intrinsics_recognition (after)
20 /// CHECK-DAG: <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
21 /// CHECK-DAG: Return [<<Result>>]
22 private static int compare32(int x, int y) {
23 return Integer.compare(x, y);
24 }
25
26 /// CHECK-START: int Main.compare64(long, long) intrinsics_recognition (after)
27 /// CHECK-DAG: <<Result:i\d+>> InvokeStaticOrDirect intrinsic:LongCompare
28 /// CHECK-DAG: Return [<<Result>>]
29 private static int compare64(long x, long y) {
30 return Long.compare(x, y);
31 }
32
33 public static void main(String args[]) {
34 expectEquals(-1, compare32(Integer.MIN_VALUE, Integer.MIN_VALUE + 1));
35 expectEquals(-1, compare32(Integer.MIN_VALUE, -1));
36 expectEquals(-1, compare32(Integer.MIN_VALUE, 0));
37 expectEquals(-1, compare32(Integer.MIN_VALUE, 1));
38 expectEquals(-1, compare32(Integer.MIN_VALUE, Integer.MAX_VALUE));
39 expectEquals(-1, compare32(-1, 0));
40 expectEquals(-1, compare32(-1, 1));
41 expectEquals(-1, compare32(0, 1));
42
43 expectEquals(0, compare32(Integer.MIN_VALUE, Integer.MIN_VALUE));
44 expectEquals(0, compare32(-1, -1));
45 expectEquals(0, compare32(0, 0));
46 expectEquals(0, compare32(1, 1));
47 expectEquals(0, compare32(Integer.MAX_VALUE, Integer.MAX_VALUE));
48
49 expectEquals(1, compare32(0, -1));
50 expectEquals(1, compare32(1, -1));
51 expectEquals(1, compare32(1, 0));
52 expectEquals(1, compare32(Integer.MAX_VALUE, Integer.MIN_VALUE));
53 expectEquals(1, compare32(Integer.MAX_VALUE, -1));
54 expectEquals(1, compare32(Integer.MAX_VALUE, 0));
55 expectEquals(1, compare32(Integer.MAX_VALUE, 1));
56 expectEquals(1, compare32(Integer.MAX_VALUE, Integer.MAX_VALUE - 1));
57
58 for (int i = -11; i <= 11; i++) {
59 for (int j = -11; j <= 11; j++) {
60 int expected = 0;
61 if (i < j) expected = -1;
62 else if (i > j) expected = 1;
63 expectEquals(expected, compare32(i, j));
64 }
65 }
66
67 expectEquals(-1, compare64(Long.MIN_VALUE, Long.MIN_VALUE + 1L));
68 expectEquals(-1, compare64(Long.MIN_VALUE, -1L));
69 expectEquals(-1, compare64(Long.MIN_VALUE, 0L));
70 expectEquals(-1, compare64(Long.MIN_VALUE, 1L));
71 expectEquals(-1, compare64(Long.MIN_VALUE, Long.MAX_VALUE));
72 expectEquals(-1, compare64(-1L, 0L));
73 expectEquals(-1, compare64(-1L, 1L));
74 expectEquals(-1, compare64(0L, 1L));
75
76 expectEquals(0, compare64(Long.MIN_VALUE, Long.MIN_VALUE));
77 expectEquals(0, compare64(-1L, -1L));
78 expectEquals(0, compare64(0L, 0L));
79 expectEquals(0, compare64(1L, 1L));
80 expectEquals(0, compare64(Long.MAX_VALUE, Long.MAX_VALUE));
81
82 expectEquals(1, compare64(0L, -1L));
83 expectEquals(1, compare64(1L, -1L));
84 expectEquals(1, compare64(1L, 0L));
85 expectEquals(1, compare64(Long.MAX_VALUE, Long.MIN_VALUE));
86 expectEquals(1, compare64(Long.MAX_VALUE, -1L));
87 expectEquals(1, compare64(Long.MAX_VALUE, 0L));
88 expectEquals(1, compare64(Long.MAX_VALUE, 1L));
89 expectEquals(1, compare64(Long.MAX_VALUE, Long.MAX_VALUE - 1L));
90
Aart Bika19616e2016-02-01 18:57:58 -080091 expectEquals(-1, compare64(0x111111117FFFFFFFL, 0x11111111FFFFFFFFL));
92 expectEquals(0, compare64(0x111111117FFFFFFFL, 0x111111117FFFFFFFL));
93 expectEquals(1, compare64(0x11111111FFFFFFFFL, 0x111111117FFFFFFFL));
94
Aart Bik6e74fa92016-01-25 16:51:32 -080095 for (long i = -11L; i <= 11L; i++) {
96 for (long j = -11L; j <= 11L; j++) {
97 int expected = 0;
98 if (i < j) expected = -1;
99 else if (i > j) expected = 1;
100 expectEquals(expected, compare64(i, j));
101 }
102 }
103
Aart Bika19616e2016-02-01 18:57:58 -0800104 for (long i = Long.MIN_VALUE; i <= Long.MIN_VALUE + 11L; i++) {
105 expectEquals(-1, compare64(i, 0));
106 }
107
108 for (long i = Long.MAX_VALUE; i >= Long.MAX_VALUE - 11L; i--) {
109 expectEquals(1, compare64(i, 0));
110 }
111
Aart Bik6e74fa92016-01-25 16:51:32 -0800112 System.out.println("passed");
113 }
114
115 private static void expectEquals(int expected, int result) {
116 if (expected != result) {
117 throw new Error("Expected: " + expected + ", found: " + result);
118 }
119 }
120}