Home | History | Annotate | Download | only in src
      1 /*
      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 
     17 public class Main {
     18 
     19   public static boolean doThrow = false;
     20 
     21   /// CHECK-START: void Main.$opt$noinline$testReplaceInputWithItself(int) intrinsics_recognition (after)
     22   /// CHECK-DAG:     <<ArgX:i\d+>>   ParameterValue
     23   /// CHECK-DAG:     <<Method:[ij]\d+>> CurrentMethod
     24   /// CHECK-DAG:     <<Zero:i\d+>>   IntConstant 0
     25   /// CHECK-DAG:     <<Cmp:i\d+>>    InvokeStaticOrDirect [<<ArgX>>,<<Zero>>,<<Method>>] intrinsic:IntegerCompare
     26   /// CHECK-DAG:                     GreaterThanOrEqual [<<Cmp>>,<<Zero>>]
     27 
     28   /// CHECK-START: void Main.$opt$noinline$testReplaceInputWithItself(int) instruction_simplifier (after)
     29   /// CHECK-DAG:     <<ArgX:i\d+>>   ParameterValue
     30   /// CHECK-DAG:     <<Zero:i\d+>>   IntConstant 0
     31   /// CHECK-DAG:                     GreaterThanOrEqual [<<ArgX>>,<<Zero>>]
     32 
     33   public static void $opt$noinline$testReplaceInputWithItself(int x) {
     34     if (doThrow) { throw new Error(); }
     35 
     36     // The instruction simplifier first replaces Integer.compare(x, 0) with Compare HIR
     37     // and then merges the Compare into the GreaterThanOrEqual. This is a regression
     38     // test that to check that it is allowed to replace the second input of the
     39     // GreaterThanOrEqual, i.e. <<Zero>>, with the very same instruction.
     40     if (Integer.compare(x, 0) < 0) {
     41       System.out.println("OOOPS");
     42     }
     43   }
     44 
     45   /// CHECK-START: int Main.compareBooleans(boolean, boolean) intrinsics_recognition (after)
     46   /// CHECK-DAG:     <<Method:[ij]\d+>> CurrentMethod
     47   /// CHECK-DAG:     <<Zero:i\d+>>   IntConstant 0
     48   /// CHECK-DAG:     <<One:i\d+>>    IntConstant 1
     49   /// CHECK-DAG:     <<PhiX:i\d+>>   Phi [<<One>>,<<Zero>>]
     50   /// CHECK-DAG:     <<PhiY:i\d+>>   Phi [<<One>>,<<Zero>>]
     51   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect [<<PhiX>>,<<PhiY>>,<<Method>>] intrinsic:IntegerCompare
     52   /// CHECK-DAG:                     Return [<<Result>>]
     53 
     54   /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier (after)
     55   /// CHECK-DAG:     <<Zero:i\d+>>   IntConstant 0
     56   /// CHECK-DAG:     <<One:i\d+>>    IntConstant 1
     57   /// CHECK-DAG:     <<PhiX:i\d+>>   Phi [<<One>>,<<Zero>>]
     58   /// CHECK-DAG:     <<PhiY:i\d+>>   Phi [<<One>>,<<Zero>>]
     59   /// CHECK-DAG:     <<Result:i\d+>> Compare [<<PhiX>>,<<PhiY>>]
     60   /// CHECK-DAG:                     Return [<<Result>>]
     61 
     62   /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier (after)
     63   /// CHECK-NOT:                     InvokeStaticOrDirect
     64 
     65   /// CHECK-START: int Main.compareBooleans(boolean, boolean) select_generator (after)
     66   /// CHECK:         <<ArgX:z\d+>>   ParameterValue
     67   /// CHECK:         <<ArgY:z\d+>>   ParameterValue
     68   /// CHECK-DAG:     <<Zero:i\d+>>   IntConstant 0
     69   /// CHECK-DAG:     <<One:i\d+>>    IntConstant 1
     70   /// CHECK-DAG:     <<SelX:i\d+>>   Select [<<Zero>>,<<One>>,<<ArgX>>]
     71   /// CHECK-DAG:     <<SelY:i\d+>>   Select [<<Zero>>,<<One>>,<<ArgY>>]
     72   /// CHECK-DAG:     <<Result:i\d+>> Compare [<<SelX>>,<<SelY>>]
     73   /// CHECK-DAG:                     Return [<<Result>>]
     74 
     75   /// CHECK-START: int Main.compareBooleans(boolean, boolean) select_generator (after)
     76   /// CHECK-NOT:                     Phi
     77 
     78   /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier_after_bce (after)
     79   /// CHECK:         <<ArgX:z\d+>>   ParameterValue
     80   /// CHECK:         <<ArgY:z\d+>>   ParameterValue
     81   /// CHECK-DAG:     <<Result:i\d+>> Compare [<<ArgX>>,<<ArgY>>]
     82   /// CHECK-DAG:                     Return [<<Result>>]
     83 
     84   /// CHECK-START: int Main.compareBooleans(boolean, boolean) instruction_simplifier_after_bce (after)
     85   /// CHECK-NOT:                     Select
     86 
     87   private static int compareBooleans(boolean x, boolean y) {
     88     return Integer.compare((x ? 1 : 0), (y ? 1 : 0));
     89   }
     90 
     91   /// CHECK-START: int Main.compareBytes(byte, byte) intrinsics_recognition (after)
     92   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
     93   /// CHECK-DAG:                     Return [<<Result>>]
     94 
     95   /// CHECK-START: int Main.compareBytes(byte, byte) instruction_simplifier (after)
     96   /// CHECK-DAG:     <<Result:i\d+>> Compare
     97   /// CHECK-DAG:                     Return [<<Result>>]
     98 
     99   /// CHECK-START: int Main.compareBytes(byte, byte) instruction_simplifier (after)
    100   /// CHECK-NOT:                     InvokeStaticOrDirect
    101 
    102   private static int compareBytes(byte x, byte y) {
    103     return Integer.compare(x, y);
    104   }
    105 
    106   /// CHECK-START: int Main.compareShorts(short, short) intrinsics_recognition (after)
    107   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    108   /// CHECK-DAG:                     Return [<<Result>>]
    109 
    110   /// CHECK-START: int Main.compareShorts(short, short) instruction_simplifier (after)
    111   /// CHECK-DAG:     <<Result:i\d+>> Compare
    112   /// CHECK-DAG:                     Return [<<Result>>]
    113 
    114   /// CHECK-START: int Main.compareShorts(short, short) instruction_simplifier (after)
    115   /// CHECK-NOT:                     InvokeStaticOrDirect
    116 
    117   private static int compareShorts(short x, short y) {
    118     return Integer.compare(x, y);
    119   }
    120 
    121   /// CHECK-START: int Main.compareChars(char, char) intrinsics_recognition (after)
    122   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    123   /// CHECK-DAG:                     Return [<<Result>>]
    124 
    125   /// CHECK-START: int Main.compareChars(char, char) instruction_simplifier (after)
    126   /// CHECK-DAG:     <<Result:i\d+>> Compare
    127   /// CHECK-DAG:                     Return [<<Result>>]
    128 
    129   /// CHECK-START: int Main.compareChars(char, char) instruction_simplifier (after)
    130   /// CHECK-NOT:                     InvokeStaticOrDirect
    131 
    132   private static int compareChars(char x, char y) {
    133     return Integer.compare(x, y);
    134   }
    135 
    136   /// CHECK-START: int Main.compareInts(int, int) intrinsics_recognition (after)
    137   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    138   /// CHECK-DAG:                     Return [<<Result>>]
    139 
    140   /// CHECK-START: int Main.compareInts(int, int) instruction_simplifier (after)
    141   /// CHECK-DAG:     <<Result:i\d+>> Compare
    142   /// CHECK-DAG:                     Return [<<Result>>]
    143 
    144   /// CHECK-START: int Main.compareInts(int, int) instruction_simplifier (after)
    145   /// CHECK-NOT:                     InvokeStaticOrDirect
    146 
    147   private static int compareInts(int x, int y) {
    148     return Integer.compare(x, y);
    149   }
    150 
    151   /// CHECK-START: int Main.compareLongs(long, long) intrinsics_recognition (after)
    152   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:LongCompare
    153   /// CHECK-DAG:                     Return [<<Result>>]
    154 
    155   /// CHECK-START: int Main.compareLongs(long, long) instruction_simplifier (after)
    156   /// CHECK-DAG:     <<Result:i\d+>> Compare
    157   /// CHECK-DAG:                     Return [<<Result>>]
    158 
    159   /// CHECK-START: int Main.compareLongs(long, long) instruction_simplifier (after)
    160   /// CHECK-NOT:                     InvokeStaticOrDirect
    161 
    162   private static int compareLongs(long x, long y) {
    163     return Long.compare(x, y);
    164   }
    165 
    166 
    167   /// CHECK-START: int Main.compareByteShort(byte, short) intrinsics_recognition (after)
    168   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    169   /// CHECK-DAG:                     Return [<<Result>>]
    170 
    171   /// CHECK-START: int Main.compareByteShort(byte, short) instruction_simplifier (after)
    172   /// CHECK-DAG:     <<Result:i\d+>> Compare
    173   /// CHECK-DAG:                     Return [<<Result>>]
    174 
    175   /// CHECK-START: int Main.compareByteShort(byte, short) instruction_simplifier (after)
    176   /// CHECK-NOT:                     InvokeStaticOrDirect
    177 
    178   public static int compareByteShort(byte x, short y) {
    179     return Integer.compare(x, y);
    180   }
    181 
    182   /// CHECK-START: int Main.compareByteChar(byte, char) intrinsics_recognition (after)
    183   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    184   /// CHECK-DAG:                     Return [<<Result>>]
    185 
    186   /// CHECK-START: int Main.compareByteChar(byte, char) instruction_simplifier (after)
    187   /// CHECK-DAG:     <<Result:i\d+>> Compare
    188   /// CHECK-DAG:                     Return [<<Result>>]
    189 
    190   /// CHECK-START: int Main.compareByteChar(byte, char) instruction_simplifier (after)
    191   /// CHECK-NOT:                     InvokeStaticOrDirect
    192 
    193   public static int compareByteChar(byte x, char y) {
    194     return Integer.compare(x, y);
    195   }
    196 
    197   /// CHECK-START: int Main.compareByteInt(byte, int) intrinsics_recognition (after)
    198   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    199   /// CHECK-DAG:                     Return [<<Result>>]
    200 
    201   /// CHECK-START: int Main.compareByteInt(byte, int) instruction_simplifier (after)
    202   /// CHECK-DAG:     <<Result:i\d+>> Compare
    203   /// CHECK-DAG:                     Return [<<Result>>]
    204 
    205   /// CHECK-START: int Main.compareByteInt(byte, int) instruction_simplifier (after)
    206   /// CHECK-NOT:                     InvokeStaticOrDirect
    207 
    208   public static int compareByteInt(byte x, int y) {
    209     return Integer.compare(x, y);
    210   }
    211 
    212 
    213   /// CHECK-START: int Main.compareShortByte(short, byte) intrinsics_recognition (after)
    214   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    215   /// CHECK-DAG:                     Return [<<Result>>]
    216 
    217   /// CHECK-START: int Main.compareShortByte(short, byte) instruction_simplifier (after)
    218   /// CHECK-DAG:     <<Result:i\d+>> Compare
    219   /// CHECK-DAG:                     Return [<<Result>>]
    220 
    221   /// CHECK-START: int Main.compareShortByte(short, byte) instruction_simplifier (after)
    222   /// CHECK-NOT:                     InvokeStaticOrDirect
    223 
    224   public static int compareShortByte(short x, byte y) {
    225     return Integer.compare(x, y);
    226   }
    227 
    228   /// CHECK-START: int Main.compareShortChar(short, char) intrinsics_recognition (after)
    229   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    230   /// CHECK-DAG:                     Return [<<Result>>]
    231 
    232   /// CHECK-START: int Main.compareShortChar(short, char) instruction_simplifier (after)
    233   /// CHECK-DAG:     <<Result:i\d+>> Compare
    234   /// CHECK-DAG:                     Return [<<Result>>]
    235 
    236   /// CHECK-START: int Main.compareShortChar(short, char) instruction_simplifier (after)
    237   /// CHECK-NOT:                     InvokeStaticOrDirect
    238 
    239   public static int compareShortChar(short x, char y) {
    240     return Integer.compare(x, y);
    241   }
    242 
    243   /// CHECK-START: int Main.compareShortInt(short, int) intrinsics_recognition (after)
    244   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    245   /// CHECK-DAG:                     Return [<<Result>>]
    246 
    247   /// CHECK-START: int Main.compareShortInt(short, int) instruction_simplifier (after)
    248   /// CHECK-DAG:     <<Result:i\d+>> Compare
    249   /// CHECK-DAG:                     Return [<<Result>>]
    250 
    251   /// CHECK-START: int Main.compareShortInt(short, int) instruction_simplifier (after)
    252   /// CHECK-NOT:                     InvokeStaticOrDirect
    253 
    254   public static int compareShortInt(short x, int y) {
    255     return Integer.compare(x, y);
    256   }
    257 
    258 
    259   /// CHECK-START: int Main.compareCharByte(char, byte) intrinsics_recognition (after)
    260   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    261   /// CHECK-DAG:                     Return [<<Result>>]
    262 
    263   /// CHECK-START: int Main.compareCharByte(char, byte) instruction_simplifier (after)
    264   /// CHECK-DAG:     <<Result:i\d+>> Compare
    265   /// CHECK-DAG:                     Return [<<Result>>]
    266 
    267   /// CHECK-START: int Main.compareCharByte(char, byte) instruction_simplifier (after)
    268   /// CHECK-NOT:                     InvokeStaticOrDirect
    269 
    270   public static int compareCharByte(char x, byte y) {
    271     return Integer.compare(x, y);
    272   }
    273 
    274   /// CHECK-START: int Main.compareCharShort(char, short) intrinsics_recognition (after)
    275   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    276   /// CHECK-DAG:                     Return [<<Result>>]
    277 
    278   /// CHECK-START: int Main.compareCharShort(char, short) instruction_simplifier (after)
    279   /// CHECK-DAG:     <<Result:i\d+>> Compare
    280   /// CHECK-DAG:                     Return [<<Result>>]
    281 
    282   /// CHECK-START: int Main.compareCharShort(char, short) instruction_simplifier (after)
    283   /// CHECK-NOT:                     InvokeStaticOrDirect
    284 
    285   public static int compareCharShort(char x, short y) {
    286     return Integer.compare(x, y);
    287   }
    288 
    289   /// CHECK-START: int Main.compareCharInt(char, int) intrinsics_recognition (after)
    290   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    291   /// CHECK-DAG:                     Return [<<Result>>]
    292 
    293   /// CHECK-START: int Main.compareCharInt(char, int) instruction_simplifier (after)
    294   /// CHECK-DAG:     <<Result:i\d+>> Compare
    295   /// CHECK-DAG:                     Return [<<Result>>]
    296 
    297   /// CHECK-START: int Main.compareCharInt(char, int) instruction_simplifier (after)
    298   /// CHECK-NOT:                     InvokeStaticOrDirect
    299 
    300   public static int compareCharInt(char x, int y) {
    301     return Integer.compare(x, y);
    302   }
    303 
    304 
    305   /// CHECK-START: int Main.compareIntByte(int, byte) intrinsics_recognition (after)
    306   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    307   /// CHECK-DAG:                     Return [<<Result>>]
    308 
    309   /// CHECK-START: int Main.compareIntByte(int, byte) instruction_simplifier (after)
    310   /// CHECK-DAG:     <<Result:i\d+>> Compare
    311   /// CHECK-DAG:                     Return [<<Result>>]
    312 
    313   /// CHECK-START: int Main.compareIntByte(int, byte) instruction_simplifier (after)
    314   /// CHECK-NOT:                     InvokeStaticOrDirect
    315 
    316   public static int compareIntByte(int x, byte y) {
    317     return Integer.compare(x, y);
    318   }
    319 
    320   /// CHECK-START: int Main.compareIntShort(int, short) intrinsics_recognition (after)
    321   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    322   /// CHECK-DAG:                     Return [<<Result>>]
    323 
    324   /// CHECK-START: int Main.compareIntShort(int, short) instruction_simplifier (after)
    325   /// CHECK-DAG:     <<Result:i\d+>> Compare
    326   /// CHECK-DAG:                     Return [<<Result>>]
    327 
    328   /// CHECK-START: int Main.compareIntShort(int, short) instruction_simplifier (after)
    329   /// CHECK-NOT:                     InvokeStaticOrDirect
    330 
    331   public static int compareIntShort(int x, short y) {
    332     return Integer.compare(x, y);
    333   }
    334 
    335   /// CHECK-START: int Main.compareIntChar(int, char) intrinsics_recognition (after)
    336   /// CHECK-DAG:     <<Result:i\d+>> InvokeStaticOrDirect intrinsic:IntegerCompare
    337   /// CHECK-DAG:                     Return [<<Result>>]
    338 
    339   /// CHECK-START: int Main.compareIntChar(int, char) instruction_simplifier (after)
    340   /// CHECK-DAG:     <<Result:i\d+>> Compare
    341   /// CHECK-DAG:                     Return [<<Result>>]
    342 
    343   /// CHECK-START: int Main.compareIntChar(int, char) instruction_simplifier (after)
    344   /// CHECK-NOT:                     InvokeStaticOrDirect
    345 
    346   public static int compareIntChar(int x, char y) {
    347     return Integer.compare(x, y);
    348   }
    349 
    350 
    351   public static void testCompareBooleans() {
    352     expectEquals(-1, compareBooleans(false, true));
    353 
    354     expectEquals(0, compareBooleans(false, false));
    355     expectEquals(0, compareBooleans(true, true));
    356 
    357     expectEquals(1, compareBooleans(true, false));
    358   }
    359 
    360   public static void testCompareBytes() {
    361     expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)(Byte.MIN_VALUE + 1)));
    362     expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)-1));
    363     expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)0));
    364     expectEquals(-1, compareBytes(Byte.MIN_VALUE, (byte)1));
    365     expectEquals(-1, compareBytes(Byte.MIN_VALUE, Byte.MAX_VALUE));
    366     expectEquals(-1, compareBytes((byte)-1, (byte)0));
    367     expectEquals(-1, compareBytes((byte)-1, (byte)1));
    368     expectEquals(-1, compareBytes((byte)0, (byte)1));
    369 
    370     expectEquals(0, compareBytes(Byte.MIN_VALUE, Byte.MIN_VALUE));
    371     expectEquals(0, compareBytes((byte)-1, (byte)-1));
    372     expectEquals(0, compareBytes((byte)0, (byte)0));
    373     expectEquals(0, compareBytes((byte)1, (byte)1));
    374     expectEquals(0, compareBytes(Byte.MAX_VALUE, Byte.MAX_VALUE));
    375 
    376     expectEquals(1, compareBytes((byte)0, (byte)-1));
    377     expectEquals(1, compareBytes((byte)1, (byte)-1));
    378     expectEquals(1, compareBytes((byte)1, (byte)0));
    379     expectEquals(1, compareBytes(Byte.MAX_VALUE, Byte.MIN_VALUE));
    380     expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)-1));
    381     expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)0));
    382     expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)1));
    383     expectEquals(1, compareBytes(Byte.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
    384 
    385     for (byte i = -11; i <= 11; i++) {
    386       for (byte j = -11; j <= 11; j++) {
    387         int expected = 0;
    388         if (i < j) expected = -1;
    389         else if (i > j) expected = 1;
    390         expectEquals(expected, compareBytes(i, j));
    391       }
    392     }
    393   }
    394 
    395   public static void testCompareShorts() {
    396     expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)(Short.MIN_VALUE + 1)));
    397     expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)-1));
    398     expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)0));
    399     expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)1));
    400     expectEquals(-1, compareShorts(Short.MIN_VALUE, (short)Short.MAX_VALUE));
    401     expectEquals(-1, compareShorts((short)-1, (short)0));
    402     expectEquals(-1, compareShorts((short)-1, (short)1));
    403     expectEquals(-1, compareShorts((short)0, (short)1));
    404 
    405     expectEquals(0, compareShorts(Short.MIN_VALUE, Short.MIN_VALUE));
    406     expectEquals(0, compareShorts((short)-1, (short)-1));
    407     expectEquals(0, compareShorts((short)0, (short)0));
    408     expectEquals(0, compareShorts((short)1, (short)1));
    409     expectEquals(0, compareShorts(Short.MAX_VALUE, Short.MAX_VALUE));
    410 
    411     expectEquals(1, compareShorts((short)0, (short)-1));
    412     expectEquals(1, compareShorts((short)1, (short)-1));
    413     expectEquals(1, compareShorts((short)1, (short)0));
    414     expectEquals(1, compareShorts(Short.MAX_VALUE, Short.MIN_VALUE));
    415     expectEquals(1, compareShorts(Short.MAX_VALUE, (short)-1));
    416     expectEquals(1, compareShorts(Short.MAX_VALUE, (short)0));
    417     expectEquals(1, compareShorts(Short.MAX_VALUE, (short)1));
    418     expectEquals(1, compareShorts(Short.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
    419 
    420     for (short i = -11; i <= 11; i++) {
    421       for (short j = -11; j <= 11; j++) {
    422         int expected = 0;
    423         if (i < j) expected = -1;
    424         else if (i > j) expected = 1;
    425         expectEquals(expected, compareShorts(i, j));
    426       }
    427     }
    428   }
    429 
    430   public static void testCompareChars() {
    431     expectEquals(-1, compareChars((char)0, Character.MAX_VALUE));
    432     expectEquals(-1, compareChars((char)0, (char)1));
    433 
    434     expectEquals(0, compareChars((char)0, (char)0));
    435     expectEquals(0, compareChars((char)1, (char)1));
    436     expectEquals(0, compareChars(Character.MAX_VALUE, Character.MAX_VALUE));
    437 
    438     expectEquals(1, compareChars((char)1, (char)0));
    439     expectEquals(1, compareChars(Character.MAX_VALUE, (char)0));
    440     expectEquals(1, compareChars(Character.MAX_VALUE, (char)1));
    441     expectEquals(1, compareChars(Character.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
    442 
    443     for (char i = 0; i <= 11; i++) {
    444       for (char j = 0; j <= 11; j++) {
    445         int expected = 0;
    446         if (i < j) expected = -1;
    447         else if (i > j) expected = 1;
    448         expectEquals(expected, compareChars(i, j));
    449       }
    450     }
    451   }
    452 
    453   public static void testCompareInts() {
    454     expectEquals(-1, compareInts(Integer.MIN_VALUE, Integer.MIN_VALUE + 1));
    455     expectEquals(-1, compareInts(Integer.MIN_VALUE, -1));
    456     expectEquals(-1, compareInts(Integer.MIN_VALUE, 0));
    457     expectEquals(-1, compareInts(Integer.MIN_VALUE, 1));
    458     expectEquals(-1, compareInts(Integer.MIN_VALUE, Integer.MAX_VALUE));
    459     expectEquals(-1, compareInts(-1, 0));
    460     expectEquals(-1, compareInts(-1, 1));
    461     expectEquals(-1, compareInts(0, 1));
    462 
    463     expectEquals(0, compareInts(Integer.MIN_VALUE, Integer.MIN_VALUE));
    464     expectEquals(0, compareInts(-1, -1));
    465     expectEquals(0, compareInts(0, 0));
    466     expectEquals(0, compareInts(1, 1));
    467     expectEquals(0, compareInts(Integer.MAX_VALUE, Integer.MAX_VALUE));
    468 
    469     expectEquals(1, compareInts(0, -1));
    470     expectEquals(1, compareInts(1, -1));
    471     expectEquals(1, compareInts(1, 0));
    472     expectEquals(1, compareInts(Integer.MAX_VALUE, Integer.MIN_VALUE));
    473     expectEquals(1, compareInts(Integer.MAX_VALUE, -1));
    474     expectEquals(1, compareInts(Integer.MAX_VALUE, 0));
    475     expectEquals(1, compareInts(Integer.MAX_VALUE, 1));
    476     expectEquals(1, compareInts(Integer.MAX_VALUE, Integer.MAX_VALUE - 1));
    477 
    478     for (int i = -11; i <= 11; i++) {
    479       for (int j = -11; j <= 11; j++) {
    480         int expected = 0;
    481         if (i < j) expected = -1;
    482         else if (i > j) expected = 1;
    483         expectEquals(expected, compareInts(i, j));
    484       }
    485     }
    486   }
    487 
    488   public static void testCompareLongs() {
    489     expectEquals(-1, compareLongs(Long.MIN_VALUE, Long.MIN_VALUE + 1L));
    490     expectEquals(-1, compareLongs(Long.MIN_VALUE, -1L));
    491     expectEquals(-1, compareLongs(Long.MIN_VALUE, 0L));
    492     expectEquals(-1, compareLongs(Long.MIN_VALUE, 1L));
    493     expectEquals(-1, compareLongs(Long.MIN_VALUE, Long.MAX_VALUE));
    494     expectEquals(-1, compareLongs(-1L, 0L));
    495     expectEquals(-1, compareLongs(-1L, 1L));
    496     expectEquals(-1, compareLongs(0L, 1L));
    497 
    498     expectEquals(0, compareLongs(Long.MIN_VALUE, Long.MIN_VALUE));
    499     expectEquals(0, compareLongs(-1L, -1L));
    500     expectEquals(0, compareLongs(0L, 0L));
    501     expectEquals(0, compareLongs(1L, 1L));
    502     expectEquals(0, compareLongs(Long.MAX_VALUE, Long.MAX_VALUE));
    503 
    504     expectEquals(1, compareLongs(0L, -1L));
    505     expectEquals(1, compareLongs(1L, -1L));
    506     expectEquals(1, compareLongs(1L, 0L));
    507     expectEquals(1, compareLongs(Long.MAX_VALUE, Long.MIN_VALUE));
    508     expectEquals(1, compareLongs(Long.MAX_VALUE, -1L));
    509     expectEquals(1, compareLongs(Long.MAX_VALUE, 0L));
    510     expectEquals(1, compareLongs(Long.MAX_VALUE, 1L));
    511     expectEquals(1, compareLongs(Long.MAX_VALUE, Long.MAX_VALUE - 1L));
    512 
    513     expectEquals(-1, compareLongs(0x111111117FFFFFFFL, 0x11111111FFFFFFFFL));
    514     expectEquals(0, compareLongs(0x111111117FFFFFFFL, 0x111111117FFFFFFFL));
    515     expectEquals(1, compareLongs(0x11111111FFFFFFFFL, 0x111111117FFFFFFFL));
    516 
    517     for (long i = -11L; i <= 11L; i++) {
    518       for (long j = -11L; j <= 11L; j++) {
    519         int expected = 0;
    520         if (i < j) expected = -1;
    521         else if (i > j) expected = 1;
    522         expectEquals(expected, compareLongs(i, j));
    523       }
    524     }
    525 
    526     for (long i = Long.MIN_VALUE; i <= Long.MIN_VALUE + 11L; i++) {
    527       expectEquals(-1, compareLongs(i, 0));
    528     }
    529 
    530     for (long i = Long.MAX_VALUE; i >= Long.MAX_VALUE - 11L; i--) {
    531       expectEquals(1, compareLongs(i, 0));
    532     }
    533   }
    534 
    535 
    536   public static void testCompareByteShort() {
    537     expectEquals(-1, compareByteShort(Byte.MIN_VALUE, (short)-1));
    538     expectEquals(-1, compareByteShort(Byte.MIN_VALUE, (short)0));
    539     expectEquals(-1, compareByteShort(Byte.MIN_VALUE, (short)1));
    540     expectEquals(-1, compareByteShort(Byte.MIN_VALUE, Short.MAX_VALUE));
    541     expectEquals(-1, compareByteShort((byte)-1, (short)0));
    542     expectEquals(-1, compareByteShort((byte)-1, (short)1));
    543     expectEquals(-1, compareByteShort((byte)0, (short)1));
    544     expectEquals(-1, compareByteShort(Byte.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
    545     expectEquals(-1, compareByteShort(Byte.MAX_VALUE, Short.MAX_VALUE));
    546 
    547     expectEquals(0, compareByteShort((byte)-1, (short)-1));
    548     expectEquals(0, compareByteShort((byte)0, (short)0));
    549     expectEquals(0, compareByteShort((byte)1, (short)1));
    550 
    551     expectEquals(1, compareByteShort(Byte.MIN_VALUE, Short.MIN_VALUE));
    552     expectEquals(1, compareByteShort(Byte.MIN_VALUE, (short)(Short.MIN_VALUE + 1)));
    553     expectEquals(1, compareByteShort((byte)0, (short)-1));
    554     expectEquals(1, compareByteShort((byte)1, (short)-1));
    555     expectEquals(1, compareByteShort((byte)1, (short)0));
    556     expectEquals(1, compareByteShort(Byte.MAX_VALUE, Short.MIN_VALUE));
    557     expectEquals(1, compareByteShort(Byte.MAX_VALUE, (short)-1));
    558     expectEquals(1, compareByteShort(Byte.MAX_VALUE, (short)0));
    559     expectEquals(1, compareByteShort(Byte.MAX_VALUE, (short)1));
    560 
    561     for (byte i = -11; i <= 11; i++) {
    562       for (short j = -11; j <= 11; j++) {
    563         int expected = 0;
    564         if (i < j) expected = -1;
    565         else if (i > j) expected = 1;
    566         expectEquals(expected, compareByteShort(i, j));
    567       }
    568     }
    569   }
    570 
    571   public static void testCompareByteChar() {
    572     expectEquals(-1, compareByteChar(Byte.MIN_VALUE, (char)0));
    573     expectEquals(-1, compareByteChar(Byte.MIN_VALUE, (char)1));
    574     expectEquals(-1, compareByteChar(Byte.MIN_VALUE, Character.MAX_VALUE));
    575     expectEquals(-1, compareByteChar((byte)-1, (char)0));
    576     expectEquals(-1, compareByteChar((byte)-1, (char)1));
    577     expectEquals(-1, compareByteChar((byte)0, (char)1));
    578     expectEquals(-1, compareByteChar(Byte.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
    579     expectEquals(-1, compareByteChar(Byte.MAX_VALUE, Character.MAX_VALUE));
    580 
    581     expectEquals(0, compareByteChar((byte)0, (char)0));
    582     expectEquals(0, compareByteChar((byte)1, (char)1));
    583 
    584     expectEquals(1, compareByteChar((byte)1, (char)0));
    585     expectEquals(1, compareByteChar(Byte.MAX_VALUE, (char)0));
    586     expectEquals(1, compareByteChar(Byte.MAX_VALUE, (char)1));
    587 
    588     for (byte i = -11; i <= 11; i++) {
    589       for (char j = 0; j <= 11; j++) {
    590         int expected = 0;
    591         if (i < j) expected = -1;
    592         else if (i > j) expected = 1;
    593         expectEquals(expected, compareByteChar(i, j));
    594       }
    595     }
    596   }
    597 
    598   public static void testCompareByteInt() {
    599     expectEquals(-1, compareByteInt(Byte.MIN_VALUE, -1));
    600     expectEquals(-1, compareByteInt(Byte.MIN_VALUE, 0));
    601     expectEquals(-1, compareByteInt(Byte.MIN_VALUE, 1));
    602     expectEquals(-1, compareByteInt(Byte.MIN_VALUE, Integer.MAX_VALUE));
    603     expectEquals(-1, compareByteInt((byte)-1, 0));
    604     expectEquals(-1, compareByteInt((byte)-1, 1));
    605     expectEquals(-1, compareByteInt((byte)0, 1));
    606     expectEquals(-1, compareByteInt(Byte.MAX_VALUE, Integer.MAX_VALUE - 1));
    607     expectEquals(-1, compareByteInt(Byte.MAX_VALUE, Integer.MAX_VALUE));
    608 
    609     expectEquals(0, compareByteInt((byte)-1, -1));
    610     expectEquals(0, compareByteInt((byte)0, 0));
    611     expectEquals(0, compareByteInt((byte)1, 1));
    612 
    613     expectEquals(1, compareByteInt(Byte.MIN_VALUE, Integer.MIN_VALUE));
    614     expectEquals(1, compareByteInt(Byte.MIN_VALUE, Integer.MIN_VALUE + 1));
    615     expectEquals(1, compareByteInt((byte)0, -1));
    616     expectEquals(1, compareByteInt((byte)1, -1));
    617     expectEquals(1, compareByteInt((byte)1, 0));
    618     expectEquals(1, compareByteInt(Byte.MAX_VALUE, Integer.MIN_VALUE));
    619     expectEquals(1, compareByteInt(Byte.MAX_VALUE, -1));
    620     expectEquals(1, compareByteInt(Byte.MAX_VALUE, 0));
    621     expectEquals(1, compareByteInt(Byte.MAX_VALUE, 1));
    622 
    623     for (byte i = -11; i <= 11; i++) {
    624       for (int j = -11; j <= 11; j++) {
    625         int expected = 0;
    626         if (i < j) expected = -1;
    627         else if (i > j) expected = 1;
    628         expectEquals(expected, compareByteInt(i, j));
    629       }
    630     }
    631   }
    632 
    633 
    634   public static void testCompareShortByte() {
    635     expectEquals(-1, compareShortByte(Short.MIN_VALUE, Byte.MIN_VALUE));
    636     expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)(Byte.MIN_VALUE + 1)));
    637     expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)-1));
    638     expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)0));
    639     expectEquals(-1, compareShortByte(Short.MIN_VALUE, (byte)1));
    640     expectEquals(-1, compareShortByte(Short.MIN_VALUE, Byte.MAX_VALUE));
    641     expectEquals(-1, compareShortByte((short)-1, (byte)0));
    642     expectEquals(-1, compareShortByte((short)-1, (byte)1));
    643     expectEquals(-1, compareShortByte((short)0, (byte)1));
    644 
    645     expectEquals(0, compareShortByte((short)-1, (byte)-1));
    646     expectEquals(0, compareShortByte((short)0, (byte)0));
    647     expectEquals(0, compareShortByte((short)1, (byte)1));
    648 
    649     expectEquals(1, compareShortByte((short)0, (byte)-1));
    650     expectEquals(1, compareShortByte((short)1, (byte)-1));
    651     expectEquals(1, compareShortByte((short)1, (byte)0));
    652     expectEquals(1, compareShortByte(Short.MAX_VALUE, Byte.MIN_VALUE));
    653     expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)-1));
    654     expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)0));
    655     expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)1));
    656     expectEquals(1, compareShortByte(Short.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
    657     expectEquals(1, compareShortByte(Short.MAX_VALUE, Byte.MAX_VALUE));
    658 
    659     for (short i = -11; i <= 11; i++) {
    660       for (byte j = -11; j <= 11; j++) {
    661         int expected = 0;
    662         if (i < j) expected = -1;
    663         else if (i > j) expected = 1;
    664         expectEquals(expected, compareShortByte(i, j));
    665       }
    666     }
    667   }
    668 
    669   public static void testCompareShortChar() {
    670     expectEquals(-1, compareShortChar(Short.MIN_VALUE, (char)0));
    671     expectEquals(-1, compareShortChar(Short.MIN_VALUE, (char)1));
    672     expectEquals(-1, compareShortChar(Short.MIN_VALUE, Character.MAX_VALUE));
    673     expectEquals(-1, compareShortChar((short)-1, (char)0));
    674     expectEquals(-1, compareShortChar((short)-1, (char)1));
    675     expectEquals(-1, compareShortChar((short)0, (char)1));
    676     expectEquals(-1, compareShortChar(Short.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
    677     expectEquals(-1, compareShortChar(Short.MAX_VALUE, Character.MAX_VALUE));
    678 
    679     expectEquals(0, compareShortChar((short)0, (char)0));
    680     expectEquals(0, compareShortChar((short)1, (char)1));
    681 
    682     expectEquals(1, compareShortChar((short)1, (char)0));
    683     expectEquals(1, compareShortChar(Short.MAX_VALUE, (char)0));
    684     expectEquals(1, compareShortChar(Short.MAX_VALUE, (char)1));
    685 
    686     for (short i = -11; i <= 11; i++) {
    687       for (char j = 0; j <= 11; j++) {
    688         int expected = 0;
    689         if (i < j) expected = -1;
    690         else if (i > j) expected = 1;
    691         expectEquals(expected, compareShortChar(i, j));
    692       }
    693     }
    694   }
    695 
    696   public static void testCompareShortInt() {
    697     expectEquals(-1, compareShortInt(Short.MIN_VALUE, -1));
    698     expectEquals(-1, compareShortInt(Short.MIN_VALUE, 0));
    699     expectEquals(-1, compareShortInt(Short.MIN_VALUE, 1));
    700     expectEquals(-1, compareShortInt(Short.MIN_VALUE, Integer.MAX_VALUE));
    701     expectEquals(-1, compareShortInt((short)-1, 0));
    702     expectEquals(-1, compareShortInt((short)-1, 1));
    703     expectEquals(-1, compareShortInt((short)0, 1));
    704     expectEquals(-1, compareShortInt(Short.MAX_VALUE, Integer.MAX_VALUE - 1));
    705     expectEquals(-1, compareShortInt(Short.MAX_VALUE, Integer.MAX_VALUE));
    706 
    707     expectEquals(0, compareShortInt((short)-1, -1));
    708     expectEquals(0, compareShortInt((short)0, 0));
    709     expectEquals(0, compareShortInt((short)1, 1));
    710 
    711     expectEquals(1, compareShortInt(Short.MIN_VALUE, Integer.MIN_VALUE));
    712     expectEquals(1, compareShortInt(Short.MIN_VALUE, Integer.MIN_VALUE + 1));
    713     expectEquals(1, compareShortInt((short)0, -1));
    714     expectEquals(1, compareShortInt((short)1, -1));
    715     expectEquals(1, compareShortInt((short)1, 0));
    716     expectEquals(1, compareShortInt(Short.MAX_VALUE, Integer.MIN_VALUE));
    717     expectEquals(1, compareShortInt(Short.MAX_VALUE, -1));
    718     expectEquals(1, compareShortInt(Short.MAX_VALUE, 0));
    719     expectEquals(1, compareShortInt(Short.MAX_VALUE, 1));
    720 
    721     for (short i = -11; i <= 11; i++) {
    722       for (int j = -11; j <= 11; j++) {
    723         int expected = 0;
    724         if (i < j) expected = -1;
    725         else if (i > j) expected = 1;
    726         expectEquals(expected, compareShortInt(i, j));
    727       }
    728     }
    729   }
    730 
    731 
    732   public static void testCompareCharByte() {
    733     expectEquals(-1, compareCharByte((char)0, (byte)1));
    734     expectEquals(-1, compareCharByte((char)0, Byte.MAX_VALUE));
    735 
    736     expectEquals(0, compareCharByte((char)0, (byte)0));
    737     expectEquals(0, compareCharByte((char)1, (byte)1));
    738 
    739     expectEquals(1, compareCharByte((char)0, Byte.MIN_VALUE));
    740     expectEquals(1, compareCharByte((char)0, (byte)(Byte.MIN_VALUE + 1)));
    741     expectEquals(1, compareCharByte((char)0, (byte)-1));
    742     expectEquals(1, compareCharByte((char)1, (byte)-1));
    743     expectEquals(1, compareCharByte((char)1, (byte)0));
    744     expectEquals(1, compareCharByte(Character.MAX_VALUE, Byte.MIN_VALUE));
    745     expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)-1));
    746     expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)0));
    747     expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)1));
    748     expectEquals(1, compareCharByte(Character.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
    749     expectEquals(1, compareCharByte(Character.MAX_VALUE, Byte.MAX_VALUE));
    750 
    751     for (char i = 0; i <= 11; i++) {
    752       for (byte j = -11; j <= 11; j++) {
    753         int expected = 0;
    754         if (i < j) expected = -1;
    755         else if (i > j) expected = 1;
    756         expectEquals(expected, compareCharByte(i, j));
    757       }
    758     }
    759   }
    760 
    761   public static void testCompareCharShort() {
    762     expectEquals(-1, compareCharShort((char)0, (short)1));
    763     expectEquals(-1, compareCharShort((char)0, Short.MAX_VALUE));
    764 
    765     expectEquals(0, compareCharShort((char)0, (short)0));
    766     expectEquals(0, compareCharShort((char)1, (short)1));
    767 
    768     expectEquals(1, compareCharShort((char)0, Short.MIN_VALUE));
    769     expectEquals(1, compareCharShort((char)0, (short)(Short.MIN_VALUE + 1)));
    770     expectEquals(1, compareCharShort((char)0, (short)-1));
    771     expectEquals(1, compareCharShort((char)1, (short)-1));
    772     expectEquals(1, compareCharShort((char)1, (short)0));
    773     expectEquals(1, compareCharShort(Character.MAX_VALUE, Short.MIN_VALUE));
    774     expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)-1));
    775     expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)0));
    776     expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)1));
    777     expectEquals(1, compareCharShort(Character.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
    778     expectEquals(1, compareCharShort(Character.MAX_VALUE, Short.MAX_VALUE));
    779 
    780     for (char i = 0; i <= 11; i++) {
    781       for (short j = -11; j <= 11; j++) {
    782         int expected = 0;
    783         if (i < j) expected = -1;
    784         else if (i > j) expected = 1;
    785         expectEquals(expected, compareCharShort(i, j));
    786       }
    787     }
    788   }
    789 
    790   public static void testCompareCharInt() {
    791     expectEquals(-1, compareCharInt((char)0, 1));
    792     expectEquals(-1, compareCharInt((char)0, Integer.MAX_VALUE));
    793     expectEquals(-1, compareCharInt(Character.MAX_VALUE, Integer.MAX_VALUE - 1));
    794     expectEquals(-1, compareCharInt(Character.MAX_VALUE, Integer.MAX_VALUE));
    795 
    796     expectEquals(0, compareCharInt((char)0, 0));
    797     expectEquals(0, compareCharInt((char)1, 1));
    798 
    799     expectEquals(1, compareCharInt((char)0, Integer.MIN_VALUE));
    800     expectEquals(1, compareCharInt((char)0, Integer.MIN_VALUE + 1));
    801     expectEquals(1, compareCharInt((char)0, -1));
    802     expectEquals(1, compareCharInt((char)1, -1));
    803     expectEquals(1, compareCharInt((char)1, 0));
    804     expectEquals(1, compareCharInt(Character.MAX_VALUE, Integer.MIN_VALUE));
    805     expectEquals(1, compareCharInt(Character.MAX_VALUE, -1));
    806     expectEquals(1, compareCharInt(Character.MAX_VALUE, 0));
    807     expectEquals(1, compareCharInt(Character.MAX_VALUE, 1));
    808 
    809     for (char i = 0; i <= 11; i++) {
    810       for (int j = -11; j <= 11; j++) {
    811         int expected = 0;
    812         if (i < j) expected = -1;
    813         else if (i > j) expected = 1;
    814         expectEquals(expected, compareCharInt(i, j));
    815       }
    816     }
    817   }
    818 
    819 
    820   public static void testCompareIntByte() {
    821     expectEquals(-1, compareIntByte(Integer.MIN_VALUE, Byte.MIN_VALUE));
    822     expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)(Byte.MIN_VALUE + 1)));
    823     expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)-1));
    824     expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)0));
    825     expectEquals(-1, compareIntByte(Integer.MIN_VALUE, (byte)1));
    826     expectEquals(-1, compareIntByte(Integer.MIN_VALUE, Byte.MAX_VALUE));
    827     expectEquals(-1, compareIntByte(-1, (byte)0));
    828     expectEquals(-1, compareIntByte(-1, (byte)1));
    829     expectEquals(-1, compareIntByte(0, (byte)1));
    830 
    831     expectEquals(0, compareIntByte(-1, (byte)-1));
    832     expectEquals(0, compareIntByte(0, (byte)0));
    833     expectEquals(0, compareIntByte(1, (byte)1));
    834 
    835     expectEquals(1, compareIntByte(0, (byte)-1));
    836     expectEquals(1, compareIntByte(1, (byte)-1));
    837     expectEquals(1, compareIntByte(1, (byte)0));
    838     expectEquals(1, compareIntByte(Integer.MAX_VALUE, Byte.MIN_VALUE));
    839     expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)-1));
    840     expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)0));
    841     expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)1));
    842     expectEquals(1, compareIntByte(Integer.MAX_VALUE, (byte)(Byte.MAX_VALUE - 1)));
    843     expectEquals(1, compareIntByte(Integer.MAX_VALUE, Byte.MAX_VALUE));
    844 
    845     for (int i = -11; i <= 11; i++) {
    846       for (byte j = -11; j <= 11; j++) {
    847         int expected = 0;
    848         if (i < j) expected = -1;
    849         else if (i > j) expected = 1;
    850         expectEquals(expected, compareIntByte(i, j));
    851       }
    852     }
    853   }
    854 
    855   public static void testCompareIntShort() {
    856     expectEquals(-1, compareIntShort(Integer.MIN_VALUE, Short.MIN_VALUE));
    857     expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)(Short.MIN_VALUE + 1)));
    858     expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)-1));
    859     expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)0));
    860     expectEquals(-1, compareIntShort(Integer.MIN_VALUE, (short)1));
    861     expectEquals(-1, compareIntShort(Integer.MIN_VALUE, Short.MAX_VALUE));
    862     expectEquals(-1, compareIntShort(-1, (short)0));
    863     expectEquals(-1, compareIntShort(-1, (short)1));
    864     expectEquals(-1, compareIntShort(0, (short)1));
    865 
    866     expectEquals(0, compareIntShort(-1, (short)-1));
    867     expectEquals(0, compareIntShort(0, (short)0));
    868     expectEquals(0, compareIntShort(1, (short)1));
    869 
    870     expectEquals(1, compareIntShort(0, (short)-1));
    871     expectEquals(1, compareIntShort(1, (short)-1));
    872     expectEquals(1, compareIntShort(1, (short)0));
    873     expectEquals(1, compareIntShort(Integer.MAX_VALUE, Short.MIN_VALUE));
    874     expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)-1));
    875     expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)0));
    876     expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)1));
    877     expectEquals(1, compareIntShort(Integer.MAX_VALUE, (short)(Short.MAX_VALUE - 1)));
    878     expectEquals(1, compareIntShort(Integer.MAX_VALUE, Short.MAX_VALUE));
    879 
    880     for (int i = -11; i <= 11; i++) {
    881       for (short j = -11; j <= 11; j++) {
    882         int expected = 0;
    883         if (i < j) expected = -1;
    884         else if (i > j) expected = 1;
    885         expectEquals(expected, compareIntShort(i, j));
    886       }
    887     }
    888   }
    889 
    890   public static void testCompareIntChar() {
    891     expectEquals(-1, compareIntChar(Integer.MIN_VALUE, (char)0));
    892     expectEquals(-1, compareIntChar(Integer.MIN_VALUE, (char)1));
    893     expectEquals(-1, compareIntChar(Integer.MIN_VALUE, Character.MAX_VALUE));
    894     expectEquals(-1, compareIntChar(-1, (char)0));
    895     expectEquals(-1, compareIntChar(-1, (char)1));
    896     expectEquals(-1, compareIntChar(0, (char)1));
    897 
    898     expectEquals(0, compareIntChar(0, (char)0));
    899     expectEquals(0, compareIntChar(1, (char)1));
    900 
    901     expectEquals(1, compareIntChar(1, (char)0));
    902     expectEquals(1, compareIntChar(Integer.MAX_VALUE, (char)0));
    903     expectEquals(1, compareIntChar(Integer.MAX_VALUE, (char)1));
    904     expectEquals(1, compareIntChar(Integer.MAX_VALUE, (char)(Character.MAX_VALUE - 1)));
    905     expectEquals(1, compareIntChar(Integer.MAX_VALUE, Character.MAX_VALUE));
    906 
    907     for (int i = -11; i <= 11; i++) {
    908       for (char j = 0; j <= 11; j++) {
    909         int expected = 0;
    910         if (i < j) expected = -1;
    911         else if (i > j) expected = 1;
    912         expectEquals(expected, compareIntChar(i, j));
    913       }
    914     }
    915   }
    916 
    917 
    918   public static void main(String args[]) {
    919     $opt$noinline$testReplaceInputWithItself(42);
    920 
    921     testCompareBooleans();
    922     testCompareBytes();
    923     testCompareShorts();
    924     testCompareChars();
    925     testCompareInts();
    926     testCompareLongs();
    927 
    928     testCompareByteShort();
    929     testCompareByteChar();
    930     testCompareByteInt();
    931 
    932     testCompareShortByte();
    933     testCompareShortChar();
    934     testCompareShortInt();
    935 
    936     testCompareCharByte();
    937     testCompareCharShort();
    938     testCompareCharInt();
    939 
    940     testCompareIntByte();
    941     testCompareIntShort();
    942     testCompareIntChar();
    943 
    944     System.out.println("passed");
    945   }
    946 
    947   private static void expectEquals(int expected, int result) {
    948     if (expected != result) {
    949       throw new Error("Expected: " + expected + ", found: " + result);
    950     }
    951   }
    952 }
    953