/* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public class Main { public static void main(String[] args) { $noinline$testReverseInt(); $noinline$testReverseLong(); $noinline$testReverseBytesInt(); $noinline$testReverseBytesLong(); $noinline$testReverseBytesShort(); $noinline$testBitCountInt(); $noinline$testBitCountLong(); $noinline$testDivideUnsignedInt(); $noinline$testDivideUnsignedLong(); $noinline$testHighestOneBitInt(); $noinline$testHighestOneBitLong(); $noinline$testLowestOneBitInt(); $noinline$testLowestOneBitLong(); $noinline$testLeadingZerosInt(); $noinline$testLeadingZerosLong(); $noinline$testTrailingZerosInt(); $noinline$testTrailingZerosLong(); } /// CHECK-START: void Main.$noinline$testReverseInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerReverse /// CHECK-START: void Main.$noinline$testReverseInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerReverse private static void $noinline$testReverseInt() { $noinline$assertIntEquals(-2, Integer.reverse(Integer.MAX_VALUE)); $noinline$assertIntEquals(1, Integer.reverse(Integer.MIN_VALUE)); $noinline$assertIntEquals(0, Integer.reverse(0)); // 0101... to 1010.... $noinline$assertIntEquals(0x55555555, Integer.reverse(0xAAAAAAAA)); // 1010.... to 0101... $noinline$assertIntEquals(0xAAAAAAAA, Integer.reverse(0x55555555)); $noinline$testReverseInt_powerOfTwo(); } /// CHECK-START: void Main.$noinline$testReverseInt_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerReverse /// CHECK-START: void Main.$noinline$testReverseInt_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerReverse private static void $noinline$testReverseInt_powerOfTwo() { $noinline$assertIntEquals(1 << 31, Integer.reverse(1 << 0)); $noinline$assertIntEquals(1 << 30, Integer.reverse(1 << 1)); $noinline$assertIntEquals(1 << 29, Integer.reverse(1 << 2)); $noinline$assertIntEquals(1 << 28, Integer.reverse(1 << 3)); $noinline$assertIntEquals(1 << 27, Integer.reverse(1 << 4)); $noinline$assertIntEquals(1 << 26, Integer.reverse(1 << 5)); $noinline$assertIntEquals(1 << 25, Integer.reverse(1 << 6)); $noinline$assertIntEquals(1 << 24, Integer.reverse(1 << 7)); $noinline$assertIntEquals(1 << 23, Integer.reverse(1 << 8)); $noinline$assertIntEquals(1 << 22, Integer.reverse(1 << 9)); $noinline$assertIntEquals(1 << 21, Integer.reverse(1 << 10)); $noinline$assertIntEquals(1 << 20, Integer.reverse(1 << 11)); $noinline$assertIntEquals(1 << 19, Integer.reverse(1 << 12)); $noinline$assertIntEquals(1 << 18, Integer.reverse(1 << 13)); $noinline$assertIntEquals(1 << 17, Integer.reverse(1 << 14)); $noinline$assertIntEquals(1 << 16, Integer.reverse(1 << 15)); $noinline$assertIntEquals(1 << 15, Integer.reverse(1 << 16)); $noinline$assertIntEquals(1 << 14, Integer.reverse(1 << 17)); $noinline$assertIntEquals(1 << 13, Integer.reverse(1 << 18)); $noinline$assertIntEquals(1 << 12, Integer.reverse(1 << 19)); $noinline$assertIntEquals(1 << 11, Integer.reverse(1 << 20)); $noinline$assertIntEquals(1 << 10, Integer.reverse(1 << 21)); $noinline$assertIntEquals(1 << 9, Integer.reverse(1 << 22)); $noinline$assertIntEquals(1 << 8, Integer.reverse(1 << 23)); $noinline$assertIntEquals(1 << 7, Integer.reverse(1 << 24)); $noinline$assertIntEquals(1 << 6, Integer.reverse(1 << 25)); $noinline$assertIntEquals(1 << 5, Integer.reverse(1 << 26)); $noinline$assertIntEquals(1 << 4, Integer.reverse(1 << 27)); $noinline$assertIntEquals(1 << 3, Integer.reverse(1 << 28)); $noinline$assertIntEquals(1 << 2, Integer.reverse(1 << 29)); $noinline$assertIntEquals(1 << 1, Integer.reverse(1 << 30)); $noinline$assertIntEquals(1 << 0, Integer.reverse(1 << 31)); } /// CHECK-START: void Main.$noinline$testReverseLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongReverse /// CHECK-START: void Main.$noinline$testReverseLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongReverse private static void $noinline$testReverseLong() { $noinline$assertLongEquals(-2L, Long.reverse(Long.MAX_VALUE)); $noinline$assertLongEquals(1L, Long.reverse(Long.MIN_VALUE)); $noinline$assertLongEquals(0L, Long.reverse(0L)); // 0101... to 1010.... $noinline$assertLongEquals(0x5555555555555555L, Long.reverse(0xAAAAAAAAAAAAAAAAL)); // 1010.... to 0101... $noinline$assertLongEquals(0xAAAAAAAAAAAAAAAAL, Long.reverse(0x5555555555555555L)); $noinline$testReverseLongFirst32_powerOfTwo(); $noinline$testReverseLongLast32_powerOfTwo(); } /// CHECK-START: void Main.$noinline$testReverseLongFirst32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongReverse /// CHECK-START: void Main.$noinline$testReverseLongFirst32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongReverse private static void $noinline$testReverseLongFirst32_powerOfTwo() { $noinline$assertLongEquals(1L << 63, Long.reverse(1L << 0)); $noinline$assertLongEquals(1L << 62, Long.reverse(1L << 1)); $noinline$assertLongEquals(1L << 61, Long.reverse(1L << 2)); $noinline$assertLongEquals(1L << 60, Long.reverse(1L << 3)); $noinline$assertLongEquals(1L << 59, Long.reverse(1L << 4)); $noinline$assertLongEquals(1L << 58, Long.reverse(1L << 5)); $noinline$assertLongEquals(1L << 57, Long.reverse(1L << 6)); $noinline$assertLongEquals(1L << 56, Long.reverse(1L << 7)); $noinline$assertLongEquals(1L << 55, Long.reverse(1L << 8)); $noinline$assertLongEquals(1L << 54, Long.reverse(1L << 9)); $noinline$assertLongEquals(1L << 53, Long.reverse(1L << 10)); $noinline$assertLongEquals(1L << 52, Long.reverse(1L << 11)); $noinline$assertLongEquals(1L << 51, Long.reverse(1L << 12)); $noinline$assertLongEquals(1L << 50, Long.reverse(1L << 13)); $noinline$assertLongEquals(1L << 49, Long.reverse(1L << 14)); $noinline$assertLongEquals(1L << 48, Long.reverse(1L << 15)); $noinline$assertLongEquals(1L << 47, Long.reverse(1L << 16)); $noinline$assertLongEquals(1L << 46, Long.reverse(1L << 17)); $noinline$assertLongEquals(1L << 45, Long.reverse(1L << 18)); $noinline$assertLongEquals(1L << 44, Long.reverse(1L << 19)); $noinline$assertLongEquals(1L << 43, Long.reverse(1L << 20)); $noinline$assertLongEquals(1L << 42, Long.reverse(1L << 21)); $noinline$assertLongEquals(1L << 41, Long.reverse(1L << 22)); $noinline$assertLongEquals(1L << 40, Long.reverse(1L << 23)); $noinline$assertLongEquals(1L << 39, Long.reverse(1L << 24)); $noinline$assertLongEquals(1L << 38, Long.reverse(1L << 25)); $noinline$assertLongEquals(1L << 37, Long.reverse(1L << 26)); $noinline$assertLongEquals(1L << 36, Long.reverse(1L << 27)); $noinline$assertLongEquals(1L << 35, Long.reverse(1L << 28)); $noinline$assertLongEquals(1L << 34, Long.reverse(1L << 29)); $noinline$assertLongEquals(1L << 33, Long.reverse(1L << 30)); $noinline$assertLongEquals(1L << 32, Long.reverse(1L << 31)); } /// CHECK-START: void Main.$noinline$testReverseLongLast32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongReverse /// CHECK-START: void Main.$noinline$testReverseLongLast32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongReverse private static void $noinline$testReverseLongLast32_powerOfTwo() { $noinline$assertLongEquals(1L << 31, Long.reverse(1L << 32)); $noinline$assertLongEquals(1L << 30, Long.reverse(1L << 33)); $noinline$assertLongEquals(1L << 29, Long.reverse(1L << 34)); $noinline$assertLongEquals(1L << 28, Long.reverse(1L << 35)); $noinline$assertLongEquals(1L << 27, Long.reverse(1L << 36)); $noinline$assertLongEquals(1L << 26, Long.reverse(1L << 37)); $noinline$assertLongEquals(1L << 25, Long.reverse(1L << 38)); $noinline$assertLongEquals(1L << 24, Long.reverse(1L << 39)); $noinline$assertLongEquals(1L << 23, Long.reverse(1L << 40)); $noinline$assertLongEquals(1L << 22, Long.reverse(1L << 41)); $noinline$assertLongEquals(1L << 21, Long.reverse(1L << 42)); $noinline$assertLongEquals(1L << 20, Long.reverse(1L << 43)); $noinline$assertLongEquals(1L << 19, Long.reverse(1L << 44)); $noinline$assertLongEquals(1L << 18, Long.reverse(1L << 45)); $noinline$assertLongEquals(1L << 17, Long.reverse(1L << 46)); $noinline$assertLongEquals(1L << 16, Long.reverse(1L << 47)); $noinline$assertLongEquals(1L << 15, Long.reverse(1L << 48)); $noinline$assertLongEquals(1L << 14, Long.reverse(1L << 49)); $noinline$assertLongEquals(1L << 13, Long.reverse(1L << 50)); $noinline$assertLongEquals(1L << 12, Long.reverse(1L << 51)); $noinline$assertLongEquals(1L << 11, Long.reverse(1L << 52)); $noinline$assertLongEquals(1L << 10, Long.reverse(1L << 53)); $noinline$assertLongEquals(1L << 9, Long.reverse(1L << 54)); $noinline$assertLongEquals(1L << 8, Long.reverse(1L << 55)); $noinline$assertLongEquals(1L << 7, Long.reverse(1L << 56)); $noinline$assertLongEquals(1L << 6, Long.reverse(1L << 57)); $noinline$assertLongEquals(1L << 5, Long.reverse(1L << 58)); $noinline$assertLongEquals(1L << 4, Long.reverse(1L << 59)); $noinline$assertLongEquals(1L << 3, Long.reverse(1L << 60)); $noinline$assertLongEquals(1L << 2, Long.reverse(1L << 61)); $noinline$assertLongEquals(1L << 1, Long.reverse(1L << 62)); $noinline$assertLongEquals(1L << 0, Long.reverse(1L << 63)); } /// CHECK-START: void Main.$noinline$testReverseBytesInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerReverseBytes private static void $noinline$testReverseBytesInt() { $noinline$assertIntEquals(-129, Integer.reverseBytes(Integer.MAX_VALUE)); $noinline$assertIntEquals(128, Integer.reverseBytes(Integer.MIN_VALUE)); $noinline$assertIntEquals(0, Integer.reverseBytes(0)); // 0101... to 0101.... $noinline$assertIntEquals(0x55555555, Integer.reverseBytes(0x55555555)); // 1010.... to 1010... $noinline$assertIntEquals(0xAAAAAAAA, Integer.reverseBytes(0xAAAAAAAA)); // Going up/down the hex digits. $noinline$assertIntEquals(0x01234567, Integer.reverseBytes(0x67452301)); $noinline$assertIntEquals(0x89ABCDEF, Integer.reverseBytes(0xEFCDAB89)); $noinline$assertIntEquals(0xFEDCBA98, Integer.reverseBytes(0x98BADCFE)); $noinline$assertIntEquals(0x76543210, Integer.reverseBytes(0x10325476)); $noinline$testReverseBytesInt_powerOfTwo(); } /// CHECK-START: void Main.$noinline$testReverseBytesInt_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesInt_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerReverseBytes private static void $noinline$testReverseBytesInt_powerOfTwo() { $noinline$assertIntEquals(1 << 24, Integer.reverseBytes(1 << 0)); $noinline$assertIntEquals(1 << 25, Integer.reverseBytes(1 << 1)); $noinline$assertIntEquals(1 << 26, Integer.reverseBytes(1 << 2)); $noinline$assertIntEquals(1 << 27, Integer.reverseBytes(1 << 3)); $noinline$assertIntEquals(1 << 28, Integer.reverseBytes(1 << 4)); $noinline$assertIntEquals(1 << 29, Integer.reverseBytes(1 << 5)); $noinline$assertIntEquals(1 << 30, Integer.reverseBytes(1 << 6)); $noinline$assertIntEquals(1 << 31, Integer.reverseBytes(1 << 7)); $noinline$assertIntEquals(1 << 16, Integer.reverseBytes(1 << 8)); $noinline$assertIntEquals(1 << 17, Integer.reverseBytes(1 << 9)); $noinline$assertIntEquals(1 << 18, Integer.reverseBytes(1 << 10)); $noinline$assertIntEquals(1 << 19, Integer.reverseBytes(1 << 11)); $noinline$assertIntEquals(1 << 20, Integer.reverseBytes(1 << 12)); $noinline$assertIntEquals(1 << 21, Integer.reverseBytes(1 << 13)); $noinline$assertIntEquals(1 << 22, Integer.reverseBytes(1 << 14)); $noinline$assertIntEquals(1 << 23, Integer.reverseBytes(1 << 15)); $noinline$assertIntEquals(1 << 8, Integer.reverseBytes(1 << 16)); $noinline$assertIntEquals(1 << 9, Integer.reverseBytes(1 << 17)); $noinline$assertIntEquals(1 << 10, Integer.reverseBytes(1 << 18)); $noinline$assertIntEquals(1 << 11, Integer.reverseBytes(1 << 19)); $noinline$assertIntEquals(1 << 12, Integer.reverseBytes(1 << 20)); $noinline$assertIntEquals(1 << 13, Integer.reverseBytes(1 << 21)); $noinline$assertIntEquals(1 << 14, Integer.reverseBytes(1 << 22)); $noinline$assertIntEquals(1 << 15, Integer.reverseBytes(1 << 23)); $noinline$assertIntEquals(1 << 0, Integer.reverseBytes(1 << 24)); $noinline$assertIntEquals(1 << 1, Integer.reverseBytes(1 << 25)); $noinline$assertIntEquals(1 << 2, Integer.reverseBytes(1 << 26)); $noinline$assertIntEquals(1 << 3, Integer.reverseBytes(1 << 27)); $noinline$assertIntEquals(1 << 4, Integer.reverseBytes(1 << 28)); $noinline$assertIntEquals(1 << 5, Integer.reverseBytes(1 << 29)); $noinline$assertIntEquals(1 << 6, Integer.reverseBytes(1 << 30)); $noinline$assertIntEquals(1 << 7, Integer.reverseBytes(1 << 31)); } /// CHECK-START: void Main.$noinline$testReverseBytesLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongReverseBytes private static void $noinline$testReverseBytesLong() { $noinline$assertLongEquals(-129L, Long.reverseBytes(Long.MAX_VALUE)); $noinline$assertLongEquals(128L, Long.reverseBytes(Long.MIN_VALUE)); $noinline$assertLongEquals(0L, Long.reverseBytes(0L)); // 0101... to 0101.... $noinline$assertLongEquals(0x5555555555555555L, Long.reverseBytes(0x5555555555555555L)); // 1010.... to 1010... $noinline$assertLongEquals(0xAAAAAAAAAAAAAAAAL, Long.reverseBytes(0xAAAAAAAAAAAAAAAAL)); // Going up/down the hex digits. $noinline$assertLongEquals(0x0123456789ABCDEFL, Long.reverseBytes(0xEFCDAB8967452301L)); $noinline$assertLongEquals(0xFEDCBA9876543210L, Long.reverseBytes(0x1032547698BADCFEL)); $noinline$testReverseBytesLongFirst32_powerOfTwo(); $noinline$testReverseBytesLongLast32_powerOfTwo(); } /// CHECK-START: void Main.$noinline$testReverseBytesLongFirst32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesLongFirst32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongReverseBytes private static void $noinline$testReverseBytesLongFirst32_powerOfTwo() { $noinline$assertLongEquals(1L << 56, Long.reverseBytes(1L << 0)); $noinline$assertLongEquals(1L << 57, Long.reverseBytes(1L << 1)); $noinline$assertLongEquals(1L << 58, Long.reverseBytes(1L << 2)); $noinline$assertLongEquals(1L << 59, Long.reverseBytes(1L << 3)); $noinline$assertLongEquals(1L << 60, Long.reverseBytes(1L << 4)); $noinline$assertLongEquals(1L << 61, Long.reverseBytes(1L << 5)); $noinline$assertLongEquals(1L << 62, Long.reverseBytes(1L << 6)); $noinline$assertLongEquals(1L << 63, Long.reverseBytes(1L << 7)); $noinline$assertLongEquals(1L << 48, Long.reverseBytes(1L << 8)); $noinline$assertLongEquals(1L << 49, Long.reverseBytes(1L << 9)); $noinline$assertLongEquals(1L << 50, Long.reverseBytes(1L << 10)); $noinline$assertLongEquals(1L << 51, Long.reverseBytes(1L << 11)); $noinline$assertLongEquals(1L << 52, Long.reverseBytes(1L << 12)); $noinline$assertLongEquals(1L << 53, Long.reverseBytes(1L << 13)); $noinline$assertLongEquals(1L << 54, Long.reverseBytes(1L << 14)); $noinline$assertLongEquals(1L << 55, Long.reverseBytes(1L << 15)); $noinline$assertLongEquals(1L << 40, Long.reverseBytes(1L << 16)); $noinline$assertLongEquals(1L << 41, Long.reverseBytes(1L << 17)); $noinline$assertLongEquals(1L << 42, Long.reverseBytes(1L << 18)); $noinline$assertLongEquals(1L << 43, Long.reverseBytes(1L << 19)); $noinline$assertLongEquals(1L << 44, Long.reverseBytes(1L << 20)); $noinline$assertLongEquals(1L << 45, Long.reverseBytes(1L << 21)); $noinline$assertLongEquals(1L << 46, Long.reverseBytes(1L << 22)); $noinline$assertLongEquals(1L << 47, Long.reverseBytes(1L << 23)); $noinline$assertLongEquals(1L << 32, Long.reverseBytes(1L << 24)); $noinline$assertLongEquals(1L << 33, Long.reverseBytes(1L << 25)); $noinline$assertLongEquals(1L << 34, Long.reverseBytes(1L << 26)); $noinline$assertLongEquals(1L << 35, Long.reverseBytes(1L << 27)); $noinline$assertLongEquals(1L << 36, Long.reverseBytes(1L << 28)); $noinline$assertLongEquals(1L << 37, Long.reverseBytes(1L << 29)); $noinline$assertLongEquals(1L << 38, Long.reverseBytes(1L << 30)); $noinline$assertLongEquals(1L << 39, Long.reverseBytes(1L << 31)); } /// CHECK-START: void Main.$noinline$testReverseBytesLongLast32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesLongLast32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongReverseBytes private static void $noinline$testReverseBytesLongLast32_powerOfTwo() { $noinline$assertLongEquals(1L << 24, Long.reverseBytes(1L << 32)); $noinline$assertLongEquals(1L << 25, Long.reverseBytes(1L << 33)); $noinline$assertLongEquals(1L << 26, Long.reverseBytes(1L << 34)); $noinline$assertLongEquals(1L << 27, Long.reverseBytes(1L << 35)); $noinline$assertLongEquals(1L << 28, Long.reverseBytes(1L << 36)); $noinline$assertLongEquals(1L << 29, Long.reverseBytes(1L << 37)); $noinline$assertLongEquals(1L << 30, Long.reverseBytes(1L << 38)); $noinline$assertLongEquals(1L << 31, Long.reverseBytes(1L << 39)); $noinline$assertLongEquals(1L << 16, Long.reverseBytes(1L << 40)); $noinline$assertLongEquals(1L << 17, Long.reverseBytes(1L << 41)); $noinline$assertLongEquals(1L << 18, Long.reverseBytes(1L << 42)); $noinline$assertLongEquals(1L << 19, Long.reverseBytes(1L << 43)); $noinline$assertLongEquals(1L << 20, Long.reverseBytes(1L << 44)); $noinline$assertLongEquals(1L << 21, Long.reverseBytes(1L << 45)); $noinline$assertLongEquals(1L << 22, Long.reverseBytes(1L << 46)); $noinline$assertLongEquals(1L << 23, Long.reverseBytes(1L << 47)); $noinline$assertLongEquals(1L << 8, Long.reverseBytes(1L << 48)); $noinline$assertLongEquals(1L << 9, Long.reverseBytes(1L << 49)); $noinline$assertLongEquals(1L << 10, Long.reverseBytes(1L << 50)); $noinline$assertLongEquals(1L << 11, Long.reverseBytes(1L << 51)); $noinline$assertLongEquals(1L << 12, Long.reverseBytes(1L << 52)); $noinline$assertLongEquals(1L << 13, Long.reverseBytes(1L << 53)); $noinline$assertLongEquals(1L << 14, Long.reverseBytes(1L << 54)); $noinline$assertLongEquals(1L << 15, Long.reverseBytes(1L << 55)); $noinline$assertLongEquals(1L << 0, Long.reverseBytes(1L << 56)); $noinline$assertLongEquals(1L << 1, Long.reverseBytes(1L << 57)); $noinline$assertLongEquals(1L << 2, Long.reverseBytes(1L << 58)); $noinline$assertLongEquals(1L << 3, Long.reverseBytes(1L << 59)); $noinline$assertLongEquals(1L << 4, Long.reverseBytes(1L << 60)); $noinline$assertLongEquals(1L << 5, Long.reverseBytes(1L << 61)); $noinline$assertLongEquals(1L << 6, Long.reverseBytes(1L << 62)); $noinline$assertLongEquals(1L << 7, Long.reverseBytes(1L << 63)); } /// CHECK-START: void Main.$noinline$testReverseBytesShort() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:ShortReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesShort() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:ShortReverseBytes private static void $noinline$testReverseBytesShort() { $noinline$assertShortEquals((short) (-129), Short.reverseBytes(Short.MAX_VALUE)); $noinline$assertShortEquals((short) (128), Short.reverseBytes(Short.MIN_VALUE)); $noinline$assertShortEquals((short) (0), Short.reverseBytes((short) 0)); // 0101... to 0101.... $noinline$assertShortEquals((short) (0x5555), Short.reverseBytes((short) 0x5555)); // 1010.... to 1010... $noinline$assertShortEquals((short) (0xAAAA), Short.reverseBytes((short) 0xAAAA)); // Going up/down the hex digits. $noinline$assertShortEquals((short) (0x0123), Short.reverseBytes((short) 0x2301)); $noinline$assertShortEquals((short) (0x4567), Short.reverseBytes((short) 0x6745)); $noinline$assertShortEquals((short) (0x89AB), Short.reverseBytes((short) 0xAB89)); $noinline$assertShortEquals((short) (0xCDEF), Short.reverseBytes((short) 0xEFCD)); $noinline$assertShortEquals((short) (0xFEDC), Short.reverseBytes((short) 0xDCFE)); $noinline$assertShortEquals((short) (0xBA98), Short.reverseBytes((short) 0x98BA)); $noinline$assertShortEquals((short) (0x7654), Short.reverseBytes((short) 0x5476)); $noinline$assertShortEquals((short) (0x3210), Short.reverseBytes((short) 0x1032)); $noinline$testReverseBytesShort_powerOfTwo(); } /// CHECK-START: void Main.$noinline$testReverseBytesShort_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:ShortReverseBytes /// CHECK-START: void Main.$noinline$testReverseBytesShort_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:ShortReverseBytes private static void $noinline$testReverseBytesShort_powerOfTwo() { $noinline$assertShortEquals((short) (1 << 8), Short.reverseBytes((short) (1 << 0))); $noinline$assertShortEquals((short) (1 << 9), Short.reverseBytes((short) (1 << 1))); $noinline$assertShortEquals((short) (1 << 10), Short.reverseBytes((short) (1 << 2))); $noinline$assertShortEquals((short) (1 << 11), Short.reverseBytes((short) (1 << 3))); $noinline$assertShortEquals((short) (1 << 12), Short.reverseBytes((short) (1 << 4))); $noinline$assertShortEquals((short) (1 << 13), Short.reverseBytes((short) (1 << 5))); $noinline$assertShortEquals((short) (1 << 14), Short.reverseBytes((short) (1 << 6))); $noinline$assertShortEquals((short) (1 << 15), Short.reverseBytes((short) (1 << 7))); $noinline$assertShortEquals((short) (1 << 0), Short.reverseBytes((short) (1 << 8))); $noinline$assertShortEquals((short) (1 << 1), Short.reverseBytes((short) (1 << 9))); $noinline$assertShortEquals((short) (1 << 2), Short.reverseBytes((short) (1 << 10))); $noinline$assertShortEquals((short) (1 << 3), Short.reverseBytes((short) (1 << 11))); $noinline$assertShortEquals((short) (1 << 4), Short.reverseBytes((short) (1 << 12))); $noinline$assertShortEquals((short) (1 << 5), Short.reverseBytes((short) (1 << 13))); $noinline$assertShortEquals((short) (1 << 6), Short.reverseBytes((short) (1 << 14))); $noinline$assertShortEquals((short) (1 << 7), Short.reverseBytes((short) (1 << 15))); } /// CHECK-START: void Main.$noinline$testBitCountInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerBitCount /// CHECK-START: void Main.$noinline$testBitCountInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerBitCount private static void $noinline$testBitCountInt() { $noinline$assertIntEquals(31, Integer.bitCount(Integer.MAX_VALUE)); $noinline$assertIntEquals(1, Integer.bitCount(Integer.MIN_VALUE)); // 0101... and 1010... $noinline$assertIntEquals(16, Integer.bitCount(0x55555555)); $noinline$assertIntEquals(16, Integer.bitCount(0xAAAAAAAA)); // 0000... and 1111... $noinline$assertIntEquals(0, Integer.bitCount(0)); $noinline$assertIntEquals(32, Integer.bitCount(0xFFFFFFFF)); $noinline$testBitCountInt_powerOfTwo(); $noinline$testBitCountInt_powerOfTwoMinusOne(); } /// CHECK-START: void Main.$noinline$testBitCountInt_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerBitCount /// CHECK-START: void Main.$noinline$testBitCountInt_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerBitCount private static void $noinline$testBitCountInt_powerOfTwo() { $noinline$assertIntEquals(1, Integer.bitCount(1 << 0)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 1)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 2)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 3)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 4)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 5)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 6)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 7)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 8)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 9)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 10)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 11)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 12)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 13)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 14)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 15)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 16)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 17)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 18)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 19)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 20)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 21)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 22)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 23)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 24)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 25)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 26)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 27)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 28)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 29)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 30)); $noinline$assertIntEquals(1, Integer.bitCount(1 << 31)); } /// CHECK-START: void Main.$noinline$testBitCountInt_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerBitCount /// CHECK-START: void Main.$noinline$testBitCountInt_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerBitCount private static void $noinline$testBitCountInt_powerOfTwoMinusOne() { // We start on `(1 << 2) - 1` (i.e. `3`) as the other values are already being tested. $noinline$assertIntEquals(2, Integer.bitCount((1 << 2) - 1)); $noinline$assertIntEquals(3, Integer.bitCount((1 << 3) - 1)); $noinline$assertIntEquals(4, Integer.bitCount((1 << 4) - 1)); $noinline$assertIntEquals(5, Integer.bitCount((1 << 5) - 1)); $noinline$assertIntEquals(6, Integer.bitCount((1 << 6) - 1)); $noinline$assertIntEquals(7, Integer.bitCount((1 << 7) - 1)); $noinline$assertIntEquals(8, Integer.bitCount((1 << 8) - 1)); $noinline$assertIntEquals(9, Integer.bitCount((1 << 9) - 1)); $noinline$assertIntEquals(10, Integer.bitCount((1 << 10) - 1)); $noinline$assertIntEquals(11, Integer.bitCount((1 << 11) - 1)); $noinline$assertIntEquals(12, Integer.bitCount((1 << 12) - 1)); $noinline$assertIntEquals(13, Integer.bitCount((1 << 13) - 1)); $noinline$assertIntEquals(14, Integer.bitCount((1 << 14) - 1)); $noinline$assertIntEquals(15, Integer.bitCount((1 << 15) - 1)); $noinline$assertIntEquals(16, Integer.bitCount((1 << 16) - 1)); $noinline$assertIntEquals(17, Integer.bitCount((1 << 17) - 1)); $noinline$assertIntEquals(18, Integer.bitCount((1 << 18) - 1)); $noinline$assertIntEquals(19, Integer.bitCount((1 << 19) - 1)); $noinline$assertIntEquals(20, Integer.bitCount((1 << 20) - 1)); $noinline$assertIntEquals(21, Integer.bitCount((1 << 21) - 1)); $noinline$assertIntEquals(22, Integer.bitCount((1 << 22) - 1)); $noinline$assertIntEquals(23, Integer.bitCount((1 << 23) - 1)); $noinline$assertIntEquals(24, Integer.bitCount((1 << 24) - 1)); $noinline$assertIntEquals(25, Integer.bitCount((1 << 25) - 1)); $noinline$assertIntEquals(26, Integer.bitCount((1 << 26) - 1)); $noinline$assertIntEquals(27, Integer.bitCount((1 << 27) - 1)); $noinline$assertIntEquals(28, Integer.bitCount((1 << 28) - 1)); $noinline$assertIntEquals(29, Integer.bitCount((1 << 29) - 1)); $noinline$assertIntEquals(30, Integer.bitCount((1 << 30) - 1)); $noinline$assertIntEquals(31, Integer.bitCount((1 << 31) - 1)); } /// CHECK-START: void Main.$noinline$testBitCountLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongBitCount /// CHECK-START: void Main.$noinline$testBitCountLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongBitCount private static void $noinline$testBitCountLong() { $noinline$assertLongEquals(63L, Long.bitCount(Long.MAX_VALUE)); $noinline$assertLongEquals(1L, Long.bitCount(Long.MIN_VALUE)); // 0101... and 1010... $noinline$assertLongEquals(32L, Long.bitCount(0x5555555555555555L)); $noinline$assertLongEquals(32L, Long.bitCount(0xAAAAAAAAAAAAAAAAL)); // 0000... and 1111... $noinline$assertLongEquals(0L, Long.bitCount(0L)); $noinline$assertLongEquals(64L, Long.bitCount(0xFFFFFFFFFFFFFFFFL)); $noinline$testBitCountLongFirst32_powerOfTwo(); $noinline$testBitCountLongLast32_powerOfTwo(); $noinline$testBitCountLongFirst32_powerOfTwoMinusOne(); $noinline$testBitCountLongLast32_powerOfTwoMinusOne(); } /// CHECK-START: void Main.$noinline$testBitCountLongFirst32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongBitCount /// CHECK-START: void Main.$noinline$testBitCountLongFirst32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongBitCount private static void $noinline$testBitCountLongFirst32_powerOfTwo() { $noinline$assertLongEquals(1L, Long.bitCount(1L << 0L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 1L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 2L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 3L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 4L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 5L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 6L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 7L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 8L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 9L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 10L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 11L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 12L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 13L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 14L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 15L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 16L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 17L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 18L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 19L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 20L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 21L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 22L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 23L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 24L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 25L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 26L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 27L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 28L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 29L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 30L)); } /// CHECK-START: void Main.$noinline$testBitCountLongLast32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongBitCount /// CHECK-START: void Main.$noinline$testBitCountLongLast32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongBitCount private static void $noinline$testBitCountLongLast32_powerOfTwo() { $noinline$assertLongEquals(1L, Long.bitCount(1L << 31L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 32L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 33L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 34L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 35L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 36L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 37L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 38L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 39L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 40L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 41L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 42L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 43L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 44L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 45L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 46L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 47L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 48L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 49L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 50L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 51L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 52L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 53L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 54L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 55L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 56L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 57L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 58L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 59L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 60L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 61L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 62L)); $noinline$assertLongEquals(1L, Long.bitCount(1L << 63L)); } /// CHECK-START: void Main.$noinline$testBitCountLongFirst32_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongBitCount /// CHECK-START: void Main.$noinline$testBitCountLongFirst32_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongBitCount private static void $noinline$testBitCountLongFirst32_powerOfTwoMinusOne() { // We start on `(1L << 2) - 1` (i.e. `3L`) as the other values are already being tested. $noinline$assertLongEquals(2L, Long.bitCount((1L << 2) - 1L)); $noinline$assertLongEquals(3L, Long.bitCount((1L << 3) - 1L)); $noinline$assertLongEquals(4L, Long.bitCount((1L << 4) - 1L)); $noinline$assertLongEquals(5L, Long.bitCount((1L << 5) - 1L)); $noinline$assertLongEquals(6L, Long.bitCount((1L << 6) - 1L)); $noinline$assertLongEquals(7L, Long.bitCount((1L << 7) - 1L)); $noinline$assertLongEquals(8L, Long.bitCount((1L << 8) - 1L)); $noinline$assertLongEquals(9L, Long.bitCount((1L << 9) - 1L)); $noinline$assertLongEquals(10L, Long.bitCount((1L << 10) - 1L)); $noinline$assertLongEquals(11L, Long.bitCount((1L << 11) - 1L)); $noinline$assertLongEquals(12L, Long.bitCount((1L << 12) - 1L)); $noinline$assertLongEquals(13L, Long.bitCount((1L << 13) - 1L)); $noinline$assertLongEquals(14L, Long.bitCount((1L << 14) - 1L)); $noinline$assertLongEquals(15L, Long.bitCount((1L << 15) - 1L)); $noinline$assertLongEquals(16L, Long.bitCount((1L << 16) - 1L)); $noinline$assertLongEquals(17L, Long.bitCount((1L << 17) - 1L)); $noinline$assertLongEquals(18L, Long.bitCount((1L << 18) - 1L)); $noinline$assertLongEquals(19L, Long.bitCount((1L << 19) - 1L)); $noinline$assertLongEquals(20L, Long.bitCount((1L << 20) - 1L)); $noinline$assertLongEquals(21L, Long.bitCount((1L << 21) - 1L)); $noinline$assertLongEquals(22L, Long.bitCount((1L << 22) - 1L)); $noinline$assertLongEquals(23L, Long.bitCount((1L << 23) - 1L)); $noinline$assertLongEquals(24L, Long.bitCount((1L << 24) - 1L)); $noinline$assertLongEquals(25L, Long.bitCount((1L << 25) - 1L)); $noinline$assertLongEquals(26L, Long.bitCount((1L << 26) - 1L)); $noinline$assertLongEquals(27L, Long.bitCount((1L << 27) - 1L)); $noinline$assertLongEquals(28L, Long.bitCount((1L << 28) - 1L)); $noinline$assertLongEquals(29L, Long.bitCount((1L << 29) - 1L)); $noinline$assertLongEquals(30L, Long.bitCount((1L << 30) - 1L)); } /// CHECK-START: void Main.$noinline$testBitCountLongLast32_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongBitCount /// CHECK-START: void Main.$noinline$testBitCountLongLast32_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongBitCount private static void $noinline$testBitCountLongLast32_powerOfTwoMinusOne() { $noinline$assertLongEquals(31L, Long.bitCount((1L << 31) - 1L)); $noinline$assertLongEquals(32L, Long.bitCount((1L << 32) - 1L)); $noinline$assertLongEquals(33L, Long.bitCount((1L << 33) - 1L)); $noinline$assertLongEquals(34L, Long.bitCount((1L << 34) - 1L)); $noinline$assertLongEquals(35L, Long.bitCount((1L << 35) - 1L)); $noinline$assertLongEquals(36L, Long.bitCount((1L << 36) - 1L)); $noinline$assertLongEquals(37L, Long.bitCount((1L << 37) - 1L)); $noinline$assertLongEquals(38L, Long.bitCount((1L << 38) - 1L)); $noinline$assertLongEquals(39L, Long.bitCount((1L << 39) - 1L)); $noinline$assertLongEquals(40L, Long.bitCount((1L << 40) - 1L)); $noinline$assertLongEquals(41L, Long.bitCount((1L << 41) - 1L)); $noinline$assertLongEquals(42L, Long.bitCount((1L << 42) - 1L)); $noinline$assertLongEquals(43L, Long.bitCount((1L << 43) - 1L)); $noinline$assertLongEquals(44L, Long.bitCount((1L << 44) - 1L)); $noinline$assertLongEquals(45L, Long.bitCount((1L << 45) - 1L)); $noinline$assertLongEquals(46L, Long.bitCount((1L << 46) - 1L)); $noinline$assertLongEquals(47L, Long.bitCount((1L << 47) - 1L)); $noinline$assertLongEquals(48L, Long.bitCount((1L << 48) - 1L)); $noinline$assertLongEquals(49L, Long.bitCount((1L << 49) - 1L)); $noinline$assertLongEquals(50L, Long.bitCount((1L << 50) - 1L)); $noinline$assertLongEquals(51L, Long.bitCount((1L << 51) - 1L)); $noinline$assertLongEquals(52L, Long.bitCount((1L << 52) - 1L)); $noinline$assertLongEquals(53L, Long.bitCount((1L << 53) - 1L)); $noinline$assertLongEquals(54L, Long.bitCount((1L << 54) - 1L)); $noinline$assertLongEquals(55L, Long.bitCount((1L << 55) - 1L)); $noinline$assertLongEquals(56L, Long.bitCount((1L << 56) - 1L)); $noinline$assertLongEquals(57L, Long.bitCount((1L << 57) - 1L)); $noinline$assertLongEquals(58L, Long.bitCount((1L << 58) - 1L)); $noinline$assertLongEquals(59L, Long.bitCount((1L << 59) - 1L)); $noinline$assertLongEquals(60L, Long.bitCount((1L << 60) - 1L)); $noinline$assertLongEquals(61L, Long.bitCount((1L << 61) - 1L)); $noinline$assertLongEquals(62L, Long.bitCount((1L << 62) - 1L)); $noinline$assertLongEquals(63L, Long.bitCount((1L << 63) - 1L)); } /// CHECK-START: void Main.$noinline$testDivideUnsignedInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerDivideUnsigned /// CHECK-START: void Main.$noinline$testDivideUnsignedInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerDivideUnsigned private static void $noinline$testDivideUnsignedInt() { // Positive/Positive division is as normal. $noinline$assertIntEquals(5, Integer.divideUnsigned(10, 2)); $noinline$assertIntEquals(0, Integer.divideUnsigned(2, 10)); $noinline$assertIntEquals(1, Integer.divideUnsigned(42, 42)); // Positive/Negative is 0, as negative numbers are bigger (if taking a look as unsigned). $noinline$assertIntEquals(0, Integer.divideUnsigned(10, -2)); $noinline$assertIntEquals(0, Integer.divideUnsigned(2, -10)); $noinline$assertIntEquals(0, Integer.divideUnsigned(42, -42)); $noinline$assertIntEquals(0, Integer.divideUnsigned(Integer.MAX_VALUE, -1)); // Negative/Positive $noinline$assertIntEquals(2147483643, Integer.divideUnsigned(-10, 2)); $noinline$assertIntEquals(429496729, Integer.divideUnsigned(-2, 10)); $noinline$assertIntEquals(102261125, Integer.divideUnsigned(-42, 42)); $noinline$assertIntEquals(1, Integer.divideUnsigned(Integer.MIN_VALUE, Integer.MAX_VALUE)); $noinline$assertIntEquals(-1, Integer.divideUnsigned(-1, 1)); // Negative/Negative $noinline$assertIntEquals(0, Integer.divideUnsigned(-2, -1)); $noinline$assertIntEquals(1, Integer.divideUnsigned(-1, -2)); $noinline$assertIntEquals(0, Integer.divideUnsigned(-10, -2)); $noinline$assertIntEquals(1, Integer.divideUnsigned(-2, -10)); // Special cases where we don't constant fold the intrinsic $noinline$testDivideUnsignedInt_divideByZero(); } /// CHECK-START: void Main.$noinline$testDivideUnsignedInt_divideByZero() constant_folding (before) /// CHECK: InvokeStaticOrDirect intrinsic:IntegerDivideUnsigned /// CHECK: InvokeStaticOrDirect intrinsic:IntegerDivideUnsigned /// CHECK-START: void Main.$noinline$testDivideUnsignedInt_divideByZero() constant_folding (after) /// CHECK: InvokeStaticOrDirect intrinsic:IntegerDivideUnsigned /// CHECK: InvokeStaticOrDirect intrinsic:IntegerDivideUnsigned private static void $noinline$testDivideUnsignedInt_divideByZero() { try { $noinline$assertIntEquals(0, Integer.divideUnsigned(1, 0)); throw new Error("Tried to divide 1 and 0 but didn't get an exception"); } catch (ArithmeticException expected) { } try { $noinline$assertIntEquals(0, Integer.divideUnsigned(-1, 0)); throw new Error("Tried to divide -1 and 0 but didn't get an exception"); } catch (ArithmeticException expected) { } } /// CHECK-START: void Main.$noinline$testDivideUnsignedLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongDivideUnsigned /// CHECK-START: void Main.$noinline$testDivideUnsignedLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongDivideUnsigned private static void $noinline$testDivideUnsignedLong() { // Positive/Positive division is as normal. $noinline$assertLongEquals(5L, Long.divideUnsigned(10L, 2L)); $noinline$assertLongEquals(0L, Long.divideUnsigned(2L, 10L)); $noinline$assertLongEquals(1L, Long.divideUnsigned(42L, 42L)); // Positive/Negative is 0, as negative numbers are bigger (if taking a look as unsigned). $noinline$assertLongEquals(0L, Long.divideUnsigned(10L, -2L)); $noinline$assertLongEquals(0L, Long.divideUnsigned(2L, -10L)); $noinline$assertLongEquals(0L, Long.divideUnsigned(42L, -42L)); $noinline$assertLongEquals(0L, Long.divideUnsigned(Long.MAX_VALUE, -1L)); // Negative/Positive $noinline$assertLongEquals(9223372036854775803L, Long.divideUnsigned(-10L, 2L)); $noinline$assertLongEquals(1844674407370955161L, Long.divideUnsigned(-2L, 10L)); $noinline$assertLongEquals(439208192231179799L, Long.divideUnsigned(-42L, 42L)); $noinline$assertLongEquals(1L, Long.divideUnsigned(Long.MIN_VALUE, Long.MAX_VALUE)); $noinline$assertLongEquals(-1L, Long.divideUnsigned(-1L, 1L)); // Negative/Negative $noinline$assertLongEquals(0L, Long.divideUnsigned(-2L, -1L)); $noinline$assertLongEquals(1L, Long.divideUnsigned(-1L, -2L)); $noinline$assertLongEquals(0L, Long.divideUnsigned(-10L, -2L)); $noinline$assertLongEquals(1L, Long.divideUnsigned(-2L, -10L)); // Special cases where we don't constant fold the intrinsic $noinline$testDivideUnsignedLong_divideByZero(); } /// CHECK-START: void Main.$noinline$testDivideUnsignedLong_divideByZero() constant_folding (before) /// CHECK: InvokeStaticOrDirect intrinsic:LongDivideUnsigned /// CHECK: InvokeStaticOrDirect intrinsic:LongDivideUnsigned /// CHECK-START: void Main.$noinline$testDivideUnsignedLong_divideByZero() constant_folding (after) /// CHECK: InvokeStaticOrDirect intrinsic:LongDivideUnsigned /// CHECK: InvokeStaticOrDirect intrinsic:LongDivideUnsigned private static void $noinline$testDivideUnsignedLong_divideByZero() { try { $noinline$assertLongEquals(0L, Long.divideUnsigned(1L, 0L)); throw new Error("Tried to divide 1 and 0 but didn't get an exception"); } catch (ArithmeticException expected) { } try { $noinline$assertLongEquals(0L, Long.divideUnsigned(-1L, 0L)); throw new Error("Tried to divide -1 and 0 but didn't get an exception"); } catch (ArithmeticException expected) { } } /// CHECK-START: void Main.$noinline$testHighestOneBitInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerHighestOneBit private static void $noinline$testHighestOneBitInt() { $noinline$assertIntEquals(1 << 30, Integer.highestOneBit(Integer.MAX_VALUE)); $noinline$assertIntEquals(1 << 31, Integer.highestOneBit(Integer.MIN_VALUE)); $noinline$testHighestOneBitInt_powerOfTwo(); $noinline$testHighestOneBitInt_powerOfTwoMinusOne(); } /// CHECK-START: void Main.$noinline$testHighestOneBitInt_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitInt_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerHighestOneBit private static void $noinline$testHighestOneBitInt_powerOfTwo() { $noinline$assertIntEquals(0, Integer.highestOneBit(0)); $noinline$assertIntEquals(1 << 0, Integer.highestOneBit(1 << 0)); $noinline$assertIntEquals(1 << 1, Integer.highestOneBit(1 << 1)); $noinline$assertIntEquals(1 << 2, Integer.highestOneBit(1 << 2)); $noinline$assertIntEquals(1 << 3, Integer.highestOneBit(1 << 3)); $noinline$assertIntEquals(1 << 4, Integer.highestOneBit(1 << 4)); $noinline$assertIntEquals(1 << 5, Integer.highestOneBit(1 << 5)); $noinline$assertIntEquals(1 << 6, Integer.highestOneBit(1 << 6)); $noinline$assertIntEquals(1 << 7, Integer.highestOneBit(1 << 7)); $noinline$assertIntEquals(1 << 8, Integer.highestOneBit(1 << 8)); $noinline$assertIntEquals(1 << 9, Integer.highestOneBit(1 << 9)); $noinline$assertIntEquals(1 << 10, Integer.highestOneBit(1 << 10)); $noinline$assertIntEquals(1 << 11, Integer.highestOneBit(1 << 11)); $noinline$assertIntEquals(1 << 12, Integer.highestOneBit(1 << 12)); $noinline$assertIntEquals(1 << 13, Integer.highestOneBit(1 << 13)); $noinline$assertIntEquals(1 << 14, Integer.highestOneBit(1 << 14)); $noinline$assertIntEquals(1 << 15, Integer.highestOneBit(1 << 15)); $noinline$assertIntEquals(1 << 16, Integer.highestOneBit(1 << 16)); $noinline$assertIntEquals(1 << 17, Integer.highestOneBit(1 << 17)); $noinline$assertIntEquals(1 << 18, Integer.highestOneBit(1 << 18)); $noinline$assertIntEquals(1 << 19, Integer.highestOneBit(1 << 19)); $noinline$assertIntEquals(1 << 20, Integer.highestOneBit(1 << 20)); $noinline$assertIntEquals(1 << 21, Integer.highestOneBit(1 << 21)); $noinline$assertIntEquals(1 << 22, Integer.highestOneBit(1 << 22)); $noinline$assertIntEquals(1 << 23, Integer.highestOneBit(1 << 23)); $noinline$assertIntEquals(1 << 24, Integer.highestOneBit(1 << 24)); $noinline$assertIntEquals(1 << 25, Integer.highestOneBit(1 << 25)); $noinline$assertIntEquals(1 << 26, Integer.highestOneBit(1 << 26)); $noinline$assertIntEquals(1 << 27, Integer.highestOneBit(1 << 27)); $noinline$assertIntEquals(1 << 28, Integer.highestOneBit(1 << 28)); $noinline$assertIntEquals(1 << 29, Integer.highestOneBit(1 << 29)); $noinline$assertIntEquals(1 << 30, Integer.highestOneBit(1 << 30)); $noinline$assertIntEquals(1 << 31, Integer.highestOneBit(1 << 31)); } /// CHECK-START: void Main.$noinline$testHighestOneBitInt_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitInt_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerHighestOneBit private static void $noinline$testHighestOneBitInt_powerOfTwoMinusOne() { // We start on `(1 << 2) - 1` (i.e. `3`) as the other values are already being tested. $noinline$assertIntEquals(1 << (2 - 1), Integer.highestOneBit((1 << 2) - 1)); $noinline$assertIntEquals(1 << (3 - 1), Integer.highestOneBit((1 << 3) - 1)); $noinline$assertIntEquals(1 << (4 - 1), Integer.highestOneBit((1 << 4) - 1)); $noinline$assertIntEquals(1 << (5 - 1), Integer.highestOneBit((1 << 5) - 1)); $noinline$assertIntEquals(1 << (6 - 1), Integer.highestOneBit((1 << 6) - 1)); $noinline$assertIntEquals(1 << (7 - 1), Integer.highestOneBit((1 << 7) - 1)); $noinline$assertIntEquals(1 << (8 - 1), Integer.highestOneBit((1 << 8) - 1)); $noinline$assertIntEquals(1 << (9 - 1), Integer.highestOneBit((1 << 9) - 1)); $noinline$assertIntEquals(1 << (10 - 1), Integer.highestOneBit((1 << 10) - 1)); $noinline$assertIntEquals(1 << (11 - 1), Integer.highestOneBit((1 << 11) - 1)); $noinline$assertIntEquals(1 << (12 - 1), Integer.highestOneBit((1 << 12) - 1)); $noinline$assertIntEquals(1 << (13 - 1), Integer.highestOneBit((1 << 13) - 1)); $noinline$assertIntEquals(1 << (14 - 1), Integer.highestOneBit((1 << 14) - 1)); $noinline$assertIntEquals(1 << (15 - 1), Integer.highestOneBit((1 << 15) - 1)); $noinline$assertIntEquals(1 << (16 - 1), Integer.highestOneBit((1 << 16) - 1)); $noinline$assertIntEquals(1 << (17 - 1), Integer.highestOneBit((1 << 17) - 1)); $noinline$assertIntEquals(1 << (18 - 1), Integer.highestOneBit((1 << 18) - 1)); $noinline$assertIntEquals(1 << (19 - 1), Integer.highestOneBit((1 << 19) - 1)); $noinline$assertIntEquals(1 << (20 - 1), Integer.highestOneBit((1 << 20) - 1)); $noinline$assertIntEquals(1 << (21 - 1), Integer.highestOneBit((1 << 21) - 1)); $noinline$assertIntEquals(1 << (22 - 1), Integer.highestOneBit((1 << 22) - 1)); $noinline$assertIntEquals(1 << (23 - 1), Integer.highestOneBit((1 << 23) - 1)); $noinline$assertIntEquals(1 << (24 - 1), Integer.highestOneBit((1 << 24) - 1)); $noinline$assertIntEquals(1 << (25 - 1), Integer.highestOneBit((1 << 25) - 1)); $noinline$assertIntEquals(1 << (26 - 1), Integer.highestOneBit((1 << 26) - 1)); $noinline$assertIntEquals(1 << (27 - 1), Integer.highestOneBit((1 << 27) - 1)); $noinline$assertIntEquals(1 << (28 - 1), Integer.highestOneBit((1 << 28) - 1)); $noinline$assertIntEquals(1 << (29 - 1), Integer.highestOneBit((1 << 29) - 1)); $noinline$assertIntEquals(1 << (30 - 1), Integer.highestOneBit((1 << 30) - 1)); $noinline$assertIntEquals(1 << (31 - 1), Integer.highestOneBit((1 << 31) - 1)); } /// CHECK-START: void Main.$noinline$testHighestOneBitLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongHighestOneBit private static void $noinline$testHighestOneBitLong() { $noinline$assertLongEquals(1L << 62, Long.highestOneBit(Long.MAX_VALUE)); $noinline$assertLongEquals(1L << 63, Long.highestOneBit(Long.MIN_VALUE)); // We need to do two smaller methods because otherwise we don't compile it due to our // heuristics. $noinline$testHighestOneBitLongFirst32_powerOfTwo(); $noinline$testHighestOneBitLongLast32_powerOfTwo(); $noinline$testHighestOneBitLongFirst32_powerOfTwoMinusOne(); $noinline$testHighestOneBitLongLast32_powerOfTwoMinusOne(); } /// CHECK-START: void Main.$noinline$testHighestOneBitLongFirst32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitLongFirst32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongHighestOneBit private static void $noinline$testHighestOneBitLongFirst32_powerOfTwo() { $noinline$assertLongEquals(0, Long.highestOneBit(0L)); $noinline$assertLongEquals(1L << 0L, Long.highestOneBit(1L << 0L)); $noinline$assertLongEquals(1L << 1L, Long.highestOneBit(1L << 1L)); $noinline$assertLongEquals(1L << 2L, Long.highestOneBit(1L << 2L)); $noinline$assertLongEquals(1L << 3L, Long.highestOneBit(1L << 3L)); $noinline$assertLongEquals(1L << 4L, Long.highestOneBit(1L << 4L)); $noinline$assertLongEquals(1L << 5L, Long.highestOneBit(1L << 5L)); $noinline$assertLongEquals(1L << 6L, Long.highestOneBit(1L << 6L)); $noinline$assertLongEquals(1L << 7L, Long.highestOneBit(1L << 7L)); $noinline$assertLongEquals(1L << 8L, Long.highestOneBit(1L << 8L)); $noinline$assertLongEquals(1L << 9L, Long.highestOneBit(1L << 9L)); $noinline$assertLongEquals(1L << 10L, Long.highestOneBit(1L << 10L)); $noinline$assertLongEquals(1L << 11L, Long.highestOneBit(1L << 11L)); $noinline$assertLongEquals(1L << 12L, Long.highestOneBit(1L << 12L)); $noinline$assertLongEquals(1L << 13L, Long.highestOneBit(1L << 13L)); $noinline$assertLongEquals(1L << 14L, Long.highestOneBit(1L << 14L)); $noinline$assertLongEquals(1L << 15L, Long.highestOneBit(1L << 15L)); $noinline$assertLongEquals(1L << 16L, Long.highestOneBit(1L << 16L)); $noinline$assertLongEquals(1L << 17L, Long.highestOneBit(1L << 17L)); $noinline$assertLongEquals(1L << 18L, Long.highestOneBit(1L << 18L)); $noinline$assertLongEquals(1L << 19L, Long.highestOneBit(1L << 19L)); $noinline$assertLongEquals(1L << 20L, Long.highestOneBit(1L << 20L)); $noinline$assertLongEquals(1L << 21L, Long.highestOneBit(1L << 21L)); $noinline$assertLongEquals(1L << 22L, Long.highestOneBit(1L << 22L)); $noinline$assertLongEquals(1L << 23L, Long.highestOneBit(1L << 23L)); $noinline$assertLongEquals(1L << 24L, Long.highestOneBit(1L << 24L)); $noinline$assertLongEquals(1L << 25L, Long.highestOneBit(1L << 25L)); $noinline$assertLongEquals(1L << 26L, Long.highestOneBit(1L << 26L)); $noinline$assertLongEquals(1L << 27L, Long.highestOneBit(1L << 27L)); $noinline$assertLongEquals(1L << 28L, Long.highestOneBit(1L << 28L)); $noinline$assertLongEquals(1L << 29L, Long.highestOneBit(1L << 29L)); $noinline$assertLongEquals(1L << 30L, Long.highestOneBit(1L << 30L)); } /// CHECK-START: void Main.$noinline$testHighestOneBitLongLast32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitLongLast32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongHighestOneBit private static void $noinline$testHighestOneBitLongLast32_powerOfTwo() { $noinline$assertLongEquals(1L << 31L, Long.highestOneBit(1L << 31L)); $noinline$assertLongEquals(1L << 32L, Long.highestOneBit(1L << 32L)); $noinline$assertLongEquals(1L << 33L, Long.highestOneBit(1L << 33L)); $noinline$assertLongEquals(1L << 34L, Long.highestOneBit(1L << 34L)); $noinline$assertLongEquals(1L << 35L, Long.highestOneBit(1L << 35L)); $noinline$assertLongEquals(1L << 36L, Long.highestOneBit(1L << 36L)); $noinline$assertLongEquals(1L << 37L, Long.highestOneBit(1L << 37L)); $noinline$assertLongEquals(1L << 38L, Long.highestOneBit(1L << 38L)); $noinline$assertLongEquals(1L << 39L, Long.highestOneBit(1L << 39L)); $noinline$assertLongEquals(1L << 40L, Long.highestOneBit(1L << 40L)); $noinline$assertLongEquals(1L << 41L, Long.highestOneBit(1L << 41L)); $noinline$assertLongEquals(1L << 42L, Long.highestOneBit(1L << 42L)); $noinline$assertLongEquals(1L << 43L, Long.highestOneBit(1L << 43L)); $noinline$assertLongEquals(1L << 44L, Long.highestOneBit(1L << 44L)); $noinline$assertLongEquals(1L << 45L, Long.highestOneBit(1L << 45L)); $noinline$assertLongEquals(1L << 46L, Long.highestOneBit(1L << 46L)); $noinline$assertLongEquals(1L << 47L, Long.highestOneBit(1L << 47L)); $noinline$assertLongEquals(1L << 48L, Long.highestOneBit(1L << 48L)); $noinline$assertLongEquals(1L << 49L, Long.highestOneBit(1L << 49L)); $noinline$assertLongEquals(1L << 50L, Long.highestOneBit(1L << 50L)); $noinline$assertLongEquals(1L << 51L, Long.highestOneBit(1L << 51L)); $noinline$assertLongEquals(1L << 52L, Long.highestOneBit(1L << 52L)); $noinline$assertLongEquals(1L << 53L, Long.highestOneBit(1L << 53L)); $noinline$assertLongEquals(1L << 54L, Long.highestOneBit(1L << 54L)); $noinline$assertLongEquals(1L << 55L, Long.highestOneBit(1L << 55L)); $noinline$assertLongEquals(1L << 56L, Long.highestOneBit(1L << 56L)); $noinline$assertLongEquals(1L << 57L, Long.highestOneBit(1L << 57L)); $noinline$assertLongEquals(1L << 58L, Long.highestOneBit(1L << 58L)); $noinline$assertLongEquals(1L << 59L, Long.highestOneBit(1L << 59L)); $noinline$assertLongEquals(1L << 60L, Long.highestOneBit(1L << 60L)); $noinline$assertLongEquals(1L << 61L, Long.highestOneBit(1L << 61L)); $noinline$assertLongEquals(1L << 62L, Long.highestOneBit(1L << 62L)); $noinline$assertLongEquals(1L << 63L, Long.highestOneBit(1L << 63L)); } /// CHECK-START: void Main.$noinline$testHighestOneBitLongFirst32_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitLongFirst32_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongHighestOneBit private static void $noinline$testHighestOneBitLongFirst32_powerOfTwoMinusOne() { // We start on `(1L << 2) - 1` (i.e. `3L`) as the other values are already being tested. $noinline$assertLongEquals(1L << (2 - 1), Long.highestOneBit((1L << 2) - 1L)); $noinline$assertLongEquals(1L << (3 - 1), Long.highestOneBit((1L << 3) - 1L)); $noinline$assertLongEquals(1L << (4 - 1), Long.highestOneBit((1L << 4) - 1L)); $noinline$assertLongEquals(1L << (5 - 1), Long.highestOneBit((1L << 5) - 1L)); $noinline$assertLongEquals(1L << (6 - 1), Long.highestOneBit((1L << 6) - 1L)); $noinline$assertLongEquals(1L << (7 - 1), Long.highestOneBit((1L << 7) - 1L)); $noinline$assertLongEquals(1L << (8 - 1), Long.highestOneBit((1L << 8) - 1L)); $noinline$assertLongEquals(1L << (9 - 1), Long.highestOneBit((1L << 9) - 1L)); $noinline$assertLongEquals(1L << (10 - 1), Long.highestOneBit((1L << 10) - 1L)); $noinline$assertLongEquals(1L << (11 - 1), Long.highestOneBit((1L << 11) - 1L)); $noinline$assertLongEquals(1L << (12 - 1), Long.highestOneBit((1L << 12) - 1L)); $noinline$assertLongEquals(1L << (13 - 1), Long.highestOneBit((1L << 13) - 1L)); $noinline$assertLongEquals(1L << (14 - 1), Long.highestOneBit((1L << 14) - 1L)); $noinline$assertLongEquals(1L << (15 - 1), Long.highestOneBit((1L << 15) - 1L)); $noinline$assertLongEquals(1L << (16 - 1), Long.highestOneBit((1L << 16) - 1L)); $noinline$assertLongEquals(1L << (17 - 1), Long.highestOneBit((1L << 17) - 1L)); $noinline$assertLongEquals(1L << (18 - 1), Long.highestOneBit((1L << 18) - 1L)); $noinline$assertLongEquals(1L << (19 - 1), Long.highestOneBit((1L << 19) - 1L)); $noinline$assertLongEquals(1L << (20 - 1), Long.highestOneBit((1L << 20) - 1L)); $noinline$assertLongEquals(1L << (21 - 1), Long.highestOneBit((1L << 21) - 1L)); $noinline$assertLongEquals(1L << (22 - 1), Long.highestOneBit((1L << 22) - 1L)); $noinline$assertLongEquals(1L << (23 - 1), Long.highestOneBit((1L << 23) - 1L)); $noinline$assertLongEquals(1L << (24 - 1), Long.highestOneBit((1L << 24) - 1L)); $noinline$assertLongEquals(1L << (25 - 1), Long.highestOneBit((1L << 25) - 1L)); $noinline$assertLongEquals(1L << (26 - 1), Long.highestOneBit((1L << 26) - 1L)); $noinline$assertLongEquals(1L << (27 - 1), Long.highestOneBit((1L << 27) - 1L)); $noinline$assertLongEquals(1L << (28 - 1), Long.highestOneBit((1L << 28) - 1L)); $noinline$assertLongEquals(1L << (29 - 1), Long.highestOneBit((1L << 29) - 1L)); $noinline$assertLongEquals(1L << (30 - 1), Long.highestOneBit((1L << 30) - 1L)); } /// CHECK-START: void Main.$noinline$testHighestOneBitLongLast32_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongHighestOneBit /// CHECK-START: void Main.$noinline$testHighestOneBitLongLast32_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongHighestOneBit private static void $noinline$testHighestOneBitLongLast32_powerOfTwoMinusOne() { $noinline$assertLongEquals(1L << (31 - 1), Long.highestOneBit((1L << 31) - 1L)); $noinline$assertLongEquals(1L << (32 - 1), Long.highestOneBit((1L << 32) - 1L)); $noinline$assertLongEquals(1L << (33 - 1), Long.highestOneBit((1L << 33) - 1L)); $noinline$assertLongEquals(1L << (34 - 1), Long.highestOneBit((1L << 34) - 1L)); $noinline$assertLongEquals(1L << (35 - 1), Long.highestOneBit((1L << 35) - 1L)); $noinline$assertLongEquals(1L << (36 - 1), Long.highestOneBit((1L << 36) - 1L)); $noinline$assertLongEquals(1L << (37 - 1), Long.highestOneBit((1L << 37) - 1L)); $noinline$assertLongEquals(1L << (38 - 1), Long.highestOneBit((1L << 38) - 1L)); $noinline$assertLongEquals(1L << (39 - 1), Long.highestOneBit((1L << 39) - 1L)); $noinline$assertLongEquals(1L << (40 - 1), Long.highestOneBit((1L << 40) - 1L)); $noinline$assertLongEquals(1L << (41 - 1), Long.highestOneBit((1L << 41) - 1L)); $noinline$assertLongEquals(1L << (42 - 1), Long.highestOneBit((1L << 42) - 1L)); $noinline$assertLongEquals(1L << (43 - 1), Long.highestOneBit((1L << 43) - 1L)); $noinline$assertLongEquals(1L << (44 - 1), Long.highestOneBit((1L << 44) - 1L)); $noinline$assertLongEquals(1L << (45 - 1), Long.highestOneBit((1L << 45) - 1L)); $noinline$assertLongEquals(1L << (46 - 1), Long.highestOneBit((1L << 46) - 1L)); $noinline$assertLongEquals(1L << (47 - 1), Long.highestOneBit((1L << 47) - 1L)); $noinline$assertLongEquals(1L << (48 - 1), Long.highestOneBit((1L << 48) - 1L)); $noinline$assertLongEquals(1L << (49 - 1), Long.highestOneBit((1L << 49) - 1L)); $noinline$assertLongEquals(1L << (50 - 1), Long.highestOneBit((1L << 50) - 1L)); $noinline$assertLongEquals(1L << (51 - 1), Long.highestOneBit((1L << 51) - 1L)); $noinline$assertLongEquals(1L << (52 - 1), Long.highestOneBit((1L << 52) - 1L)); $noinline$assertLongEquals(1L << (53 - 1), Long.highestOneBit((1L << 53) - 1L)); $noinline$assertLongEquals(1L << (54 - 1), Long.highestOneBit((1L << 54) - 1L)); $noinline$assertLongEquals(1L << (55 - 1), Long.highestOneBit((1L << 55) - 1L)); $noinline$assertLongEquals(1L << (56 - 1), Long.highestOneBit((1L << 56) - 1L)); $noinline$assertLongEquals(1L << (57 - 1), Long.highestOneBit((1L << 57) - 1L)); $noinline$assertLongEquals(1L << (58 - 1), Long.highestOneBit((1L << 58) - 1L)); $noinline$assertLongEquals(1L << (59 - 1), Long.highestOneBit((1L << 59) - 1L)); $noinline$assertLongEquals(1L << (60 - 1), Long.highestOneBit((1L << 60) - 1L)); $noinline$assertLongEquals(1L << (61 - 1), Long.highestOneBit((1L << 61) - 1L)); $noinline$assertLongEquals(1L << (62 - 1), Long.highestOneBit((1L << 62) - 1L)); $noinline$assertLongEquals(1L << (63 - 1), Long.highestOneBit((1L << 63) - 1L)); } /// CHECK-START: void Main.$noinline$testLowestOneBitInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerLowestOneBit private static void $noinline$testLowestOneBitInt() { $noinline$assertIntEquals(1, Integer.lowestOneBit(Integer.MAX_VALUE)); $noinline$assertIntEquals(1 << 31, Integer.lowestOneBit(Integer.MIN_VALUE)); $noinline$testHighestOneBitInt_powerOfTwo(); $noinline$testHighestOneBitInt_powerOfTwoMinusOne(); } /// CHECK-START: void Main.$noinline$testLowestOneBitInt_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitInt_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerLowestOneBit private static void $noinline$testLowestOneBitInt_powerOfTwo() { $noinline$assertIntEquals(0, Integer.lowestOneBit(0)); $noinline$assertIntEquals(1 << 0, Integer.lowestOneBit(1 << 0)); $noinline$assertIntEquals(1 << 1, Integer.lowestOneBit(1 << 1)); $noinline$assertIntEquals(1 << 2, Integer.lowestOneBit(1 << 2)); $noinline$assertIntEquals(1 << 3, Integer.lowestOneBit(1 << 3)); $noinline$assertIntEquals(1 << 4, Integer.lowestOneBit(1 << 4)); $noinline$assertIntEquals(1 << 5, Integer.lowestOneBit(1 << 5)); $noinline$assertIntEquals(1 << 6, Integer.lowestOneBit(1 << 6)); $noinline$assertIntEquals(1 << 7, Integer.lowestOneBit(1 << 7)); $noinline$assertIntEquals(1 << 8, Integer.lowestOneBit(1 << 8)); $noinline$assertIntEquals(1 << 9, Integer.lowestOneBit(1 << 9)); $noinline$assertIntEquals(1 << 10, Integer.lowestOneBit(1 << 10)); $noinline$assertIntEquals(1 << 11, Integer.lowestOneBit(1 << 11)); $noinline$assertIntEquals(1 << 12, Integer.lowestOneBit(1 << 12)); $noinline$assertIntEquals(1 << 13, Integer.lowestOneBit(1 << 13)); $noinline$assertIntEquals(1 << 14, Integer.lowestOneBit(1 << 14)); $noinline$assertIntEquals(1 << 15, Integer.lowestOneBit(1 << 15)); $noinline$assertIntEquals(1 << 16, Integer.lowestOneBit(1 << 16)); $noinline$assertIntEquals(1 << 17, Integer.lowestOneBit(1 << 17)); $noinline$assertIntEquals(1 << 18, Integer.lowestOneBit(1 << 18)); $noinline$assertIntEquals(1 << 19, Integer.lowestOneBit(1 << 19)); $noinline$assertIntEquals(1 << 20, Integer.lowestOneBit(1 << 20)); $noinline$assertIntEquals(1 << 21, Integer.lowestOneBit(1 << 21)); $noinline$assertIntEquals(1 << 22, Integer.lowestOneBit(1 << 22)); $noinline$assertIntEquals(1 << 23, Integer.lowestOneBit(1 << 23)); $noinline$assertIntEquals(1 << 24, Integer.lowestOneBit(1 << 24)); $noinline$assertIntEquals(1 << 25, Integer.lowestOneBit(1 << 25)); $noinline$assertIntEquals(1 << 26, Integer.lowestOneBit(1 << 26)); $noinline$assertIntEquals(1 << 27, Integer.lowestOneBit(1 << 27)); $noinline$assertIntEquals(1 << 28, Integer.lowestOneBit(1 << 28)); $noinline$assertIntEquals(1 << 29, Integer.lowestOneBit(1 << 29)); $noinline$assertIntEquals(1 << 30, Integer.lowestOneBit(1 << 30)); $noinline$assertIntEquals(1 << 31, Integer.lowestOneBit(1 << 31)); } /// CHECK-START: void Main.$noinline$testLowestOneBitInt_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitInt_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerLowestOneBit private static void $noinline$testLowestOneBitInt_powerOfTwoMinusOne() { // We start on `(1 << 2) - 1` (i.e. `3`) as the other values are already being tested. $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 2) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 3) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 4) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 5) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 6) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 7) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 8) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 9) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 10) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 11) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 12) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 13) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 14) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 15) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 16) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 17) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 18) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 19) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 20) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 21) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 22) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 23) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 24) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 25) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 26) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 27) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 28) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 29) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 30) - 1)); $noinline$assertIntEquals(1, Integer.lowestOneBit((1 << 31) - 1)); } /// CHECK-START: void Main.$noinline$testLowestOneBitLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongLowestOneBit private static void $noinline$testLowestOneBitLong() { $noinline$assertLongEquals(1L, Long.lowestOneBit(Long.MAX_VALUE)); $noinline$assertLongEquals(1L << 63, Long.lowestOneBit(Long.MIN_VALUE)); // We need to do two smaller methods because otherwise we don't compile it due to our // heuristics. $noinline$testLowestOneBitLongFirst32_powerOfTwo(); $noinline$testLowestOneBitLongLast32_powerOfTwo(); $noinline$testLowestOneBitLongFirst32_powerOfTwoMinusOne(); $noinline$testLowestOneBitLongLast32_powerOfTwoMinusOne(); } /// CHECK-START: void Main.$noinline$testLowestOneBitLongFirst32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitLongFirst32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongLowestOneBit private static void $noinline$testLowestOneBitLongFirst32_powerOfTwo() { $noinline$assertLongEquals(0L, Long.lowestOneBit(0L)); $noinline$assertLongEquals(1L << 0L, Long.lowestOneBit(1L << 0L)); $noinline$assertLongEquals(1L << 1L, Long.lowestOneBit(1L << 1L)); $noinline$assertLongEquals(1L << 2L, Long.lowestOneBit(1L << 2L)); $noinline$assertLongEquals(1L << 3L, Long.lowestOneBit(1L << 3L)); $noinline$assertLongEquals(1L << 4L, Long.lowestOneBit(1L << 4L)); $noinline$assertLongEquals(1L << 5L, Long.lowestOneBit(1L << 5L)); $noinline$assertLongEquals(1L << 6L, Long.lowestOneBit(1L << 6L)); $noinline$assertLongEquals(1L << 7L, Long.lowestOneBit(1L << 7L)); $noinline$assertLongEquals(1L << 8L, Long.lowestOneBit(1L << 8L)); $noinline$assertLongEquals(1L << 9L, Long.lowestOneBit(1L << 9L)); $noinline$assertLongEquals(1L << 10L, Long.lowestOneBit(1L << 10L)); $noinline$assertLongEquals(1L << 11L, Long.lowestOneBit(1L << 11L)); $noinline$assertLongEquals(1L << 12L, Long.lowestOneBit(1L << 12L)); $noinline$assertLongEquals(1L << 13L, Long.lowestOneBit(1L << 13L)); $noinline$assertLongEquals(1L << 14L, Long.lowestOneBit(1L << 14L)); $noinline$assertLongEquals(1L << 15L, Long.lowestOneBit(1L << 15L)); $noinline$assertLongEquals(1L << 16L, Long.lowestOneBit(1L << 16L)); $noinline$assertLongEquals(1L << 17L, Long.lowestOneBit(1L << 17L)); $noinline$assertLongEquals(1L << 18L, Long.lowestOneBit(1L << 18L)); $noinline$assertLongEquals(1L << 19L, Long.lowestOneBit(1L << 19L)); $noinline$assertLongEquals(1L << 20L, Long.lowestOneBit(1L << 20L)); $noinline$assertLongEquals(1L << 21L, Long.lowestOneBit(1L << 21L)); $noinline$assertLongEquals(1L << 22L, Long.lowestOneBit(1L << 22L)); $noinline$assertLongEquals(1L << 23L, Long.lowestOneBit(1L << 23L)); $noinline$assertLongEquals(1L << 24L, Long.lowestOneBit(1L << 24L)); $noinline$assertLongEquals(1L << 25L, Long.lowestOneBit(1L << 25L)); $noinline$assertLongEquals(1L << 26L, Long.lowestOneBit(1L << 26L)); $noinline$assertLongEquals(1L << 27L, Long.lowestOneBit(1L << 27L)); $noinline$assertLongEquals(1L << 28L, Long.lowestOneBit(1L << 28L)); $noinline$assertLongEquals(1L << 29L, Long.lowestOneBit(1L << 29L)); $noinline$assertLongEquals(1L << 30L, Long.lowestOneBit(1L << 30L)); } /// CHECK-START: void Main.$noinline$testLowestOneBitLongLast32_powerOfTwo() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitLongLast32_powerOfTwo() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongLowestOneBit private static void $noinline$testLowestOneBitLongLast32_powerOfTwo() { $noinline$assertLongEquals(1L << 31L, Long.lowestOneBit(1L << 31L)); $noinline$assertLongEquals(1L << 32L, Long.lowestOneBit(1L << 32L)); $noinline$assertLongEquals(1L << 33L, Long.lowestOneBit(1L << 33L)); $noinline$assertLongEquals(1L << 34L, Long.lowestOneBit(1L << 34L)); $noinline$assertLongEquals(1L << 35L, Long.lowestOneBit(1L << 35L)); $noinline$assertLongEquals(1L << 36L, Long.lowestOneBit(1L << 36L)); $noinline$assertLongEquals(1L << 37L, Long.lowestOneBit(1L << 37L)); $noinline$assertLongEquals(1L << 38L, Long.lowestOneBit(1L << 38L)); $noinline$assertLongEquals(1L << 39L, Long.lowestOneBit(1L << 39L)); $noinline$assertLongEquals(1L << 40L, Long.lowestOneBit(1L << 40L)); $noinline$assertLongEquals(1L << 41L, Long.lowestOneBit(1L << 41L)); $noinline$assertLongEquals(1L << 42L, Long.lowestOneBit(1L << 42L)); $noinline$assertLongEquals(1L << 43L, Long.lowestOneBit(1L << 43L)); $noinline$assertLongEquals(1L << 44L, Long.lowestOneBit(1L << 44L)); $noinline$assertLongEquals(1L << 45L, Long.lowestOneBit(1L << 45L)); $noinline$assertLongEquals(1L << 46L, Long.lowestOneBit(1L << 46L)); $noinline$assertLongEquals(1L << 47L, Long.lowestOneBit(1L << 47L)); $noinline$assertLongEquals(1L << 48L, Long.lowestOneBit(1L << 48L)); $noinline$assertLongEquals(1L << 49L, Long.lowestOneBit(1L << 49L)); $noinline$assertLongEquals(1L << 50L, Long.lowestOneBit(1L << 50L)); $noinline$assertLongEquals(1L << 51L, Long.lowestOneBit(1L << 51L)); $noinline$assertLongEquals(1L << 52L, Long.lowestOneBit(1L << 52L)); $noinline$assertLongEquals(1L << 53L, Long.lowestOneBit(1L << 53L)); $noinline$assertLongEquals(1L << 54L, Long.lowestOneBit(1L << 54L)); $noinline$assertLongEquals(1L << 55L, Long.lowestOneBit(1L << 55L)); $noinline$assertLongEquals(1L << 56L, Long.lowestOneBit(1L << 56L)); $noinline$assertLongEquals(1L << 57L, Long.lowestOneBit(1L << 57L)); $noinline$assertLongEquals(1L << 58L, Long.lowestOneBit(1L << 58L)); $noinline$assertLongEquals(1L << 59L, Long.lowestOneBit(1L << 59L)); $noinline$assertLongEquals(1L << 60L, Long.lowestOneBit(1L << 60L)); $noinline$assertLongEquals(1L << 61L, Long.lowestOneBit(1L << 61L)); $noinline$assertLongEquals(1L << 62L, Long.lowestOneBit(1L << 62L)); $noinline$assertLongEquals(1L << 63L, Long.lowestOneBit(1L << 63L)); } /// CHECK-START: void Main.$noinline$testLowestOneBitLongFirst32_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitLongFirst32_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongLowestOneBit private static void $noinline$testLowestOneBitLongFirst32_powerOfTwoMinusOne() { // We start on `(1L << 2) - 1` (i.e. `3L`) as the other values are already being tested. $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 2) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 3) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 4) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 5) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 6) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 7) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 8) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 9) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 10) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 11) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 12) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 13) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 14) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 15) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 16) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 17) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 18) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 19) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 20) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 21) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 22) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 23) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 24) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 25) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 26) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 27) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 28) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 29) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 30) - 1L)); } /// CHECK-START: void Main.$noinline$testLowestOneBitLongLast32_powerOfTwoMinusOne() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongLowestOneBit /// CHECK-START: void Main.$noinline$testLowestOneBitLongLast32_powerOfTwoMinusOne() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongLowestOneBit private static void $noinline$testLowestOneBitLongLast32_powerOfTwoMinusOne() { $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 31) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 32) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 33) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 34) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 35) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 36) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 37) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 38) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 39) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 40) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 41) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 42) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 43) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 44) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 45) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 46) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 47) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 48) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 49) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 50) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 51) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 52) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 53) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 54) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 55) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 56) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 57) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 58) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 59) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 60) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 61) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 62) - 1L)); $noinline$assertLongEquals(1L, Long.lowestOneBit((1L << 63) - 1L)); } /// CHECK-START: void Main.$noinline$testLeadingZerosInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerNumberOfLeadingZeros /// CHECK-START: void Main.$noinline$testLeadingZerosInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerNumberOfLeadingZeros private static void $noinline$testLeadingZerosInt() { $noinline$assertIntEquals(1, Integer.numberOfLeadingZeros(Integer.MAX_VALUE)); $noinline$assertIntEquals(0, Integer.numberOfLeadingZeros(Integer.MIN_VALUE)); $noinline$assertIntEquals(32, Integer.numberOfLeadingZeros(0)); $noinline$assertIntEquals(31, Integer.numberOfLeadingZeros(1 << 0)); $noinline$assertIntEquals(30, Integer.numberOfLeadingZeros(1 << 1)); $noinline$assertIntEquals(29, Integer.numberOfLeadingZeros(1 << 2)); $noinline$assertIntEquals(28, Integer.numberOfLeadingZeros(1 << 3)); $noinline$assertIntEquals(27, Integer.numberOfLeadingZeros(1 << 4)); $noinline$assertIntEquals(26, Integer.numberOfLeadingZeros(1 << 5)); $noinline$assertIntEquals(25, Integer.numberOfLeadingZeros(1 << 6)); $noinline$assertIntEquals(24, Integer.numberOfLeadingZeros(1 << 7)); $noinline$assertIntEquals(23, Integer.numberOfLeadingZeros(1 << 8)); $noinline$assertIntEquals(22, Integer.numberOfLeadingZeros(1 << 9)); $noinline$assertIntEquals(21, Integer.numberOfLeadingZeros(1 << 10)); $noinline$assertIntEquals(20, Integer.numberOfLeadingZeros(1 << 11)); $noinline$assertIntEquals(19, Integer.numberOfLeadingZeros(1 << 12)); $noinline$assertIntEquals(18, Integer.numberOfLeadingZeros(1 << 13)); $noinline$assertIntEquals(17, Integer.numberOfLeadingZeros(1 << 14)); $noinline$assertIntEquals(16, Integer.numberOfLeadingZeros(1 << 15)); $noinline$assertIntEquals(15, Integer.numberOfLeadingZeros(1 << 16)); $noinline$assertIntEquals(14, Integer.numberOfLeadingZeros(1 << 17)); $noinline$assertIntEquals(13, Integer.numberOfLeadingZeros(1 << 18)); $noinline$assertIntEquals(12, Integer.numberOfLeadingZeros(1 << 19)); $noinline$assertIntEquals(11, Integer.numberOfLeadingZeros(1 << 20)); $noinline$assertIntEquals(10, Integer.numberOfLeadingZeros(1 << 21)); $noinline$assertIntEquals(9, Integer.numberOfLeadingZeros(1 << 22)); $noinline$assertIntEquals(8, Integer.numberOfLeadingZeros(1 << 23)); $noinline$assertIntEquals(7, Integer.numberOfLeadingZeros(1 << 24)); $noinline$assertIntEquals(6, Integer.numberOfLeadingZeros(1 << 25)); $noinline$assertIntEquals(5, Integer.numberOfLeadingZeros(1 << 26)); $noinline$assertIntEquals(4, Integer.numberOfLeadingZeros(1 << 27)); $noinline$assertIntEquals(3, Integer.numberOfLeadingZeros(1 << 28)); $noinline$assertIntEquals(2, Integer.numberOfLeadingZeros(1 << 29)); $noinline$assertIntEquals(1, Integer.numberOfLeadingZeros(1 << 30)); $noinline$assertIntEquals(0, Integer.numberOfLeadingZeros(1 << 31)); } /// CHECK-START: void Main.$noinline$testLeadingZerosLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongNumberOfLeadingZeros /// CHECK-START: void Main.$noinline$testLeadingZerosLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongNumberOfLeadingZeros private static void $noinline$testLeadingZerosLong() { $noinline$assertIntEquals(1, Long.numberOfLeadingZeros(Long.MAX_VALUE)); $noinline$assertIntEquals(0, Long.numberOfLeadingZeros(Long.MIN_VALUE)); // We need to do two smaller methods because otherwise we don't compile it due to our // heuristics. $noinline$testLeadingZerosLongFirst32(); $noinline$testLeadingZerosLongLast32(); } /// CHECK-START: void Main.$noinline$testLeadingZerosLongFirst32() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongNumberOfLeadingZeros /// CHECK-START: void Main.$noinline$testLeadingZerosLongFirst32() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongNumberOfLeadingZeros private static void $noinline$testLeadingZerosLongFirst32() { $noinline$assertIntEquals(64, Long.numberOfLeadingZeros(0L)); $noinline$assertIntEquals(63, Long.numberOfLeadingZeros(1L << 0L)); $noinline$assertIntEquals(62, Long.numberOfLeadingZeros(1L << 1L)); $noinline$assertIntEquals(61, Long.numberOfLeadingZeros(1L << 2L)); $noinline$assertIntEquals(60, Long.numberOfLeadingZeros(1L << 3L)); $noinline$assertIntEquals(59, Long.numberOfLeadingZeros(1L << 4L)); $noinline$assertIntEquals(58, Long.numberOfLeadingZeros(1L << 5L)); $noinline$assertIntEquals(57, Long.numberOfLeadingZeros(1L << 6L)); $noinline$assertIntEquals(56, Long.numberOfLeadingZeros(1L << 7L)); $noinline$assertIntEquals(55, Long.numberOfLeadingZeros(1L << 8L)); $noinline$assertIntEquals(54, Long.numberOfLeadingZeros(1L << 9L)); $noinline$assertIntEquals(53, Long.numberOfLeadingZeros(1L << 10L)); $noinline$assertIntEquals(52, Long.numberOfLeadingZeros(1L << 11L)); $noinline$assertIntEquals(51, Long.numberOfLeadingZeros(1L << 12L)); $noinline$assertIntEquals(50, Long.numberOfLeadingZeros(1L << 13L)); $noinline$assertIntEquals(49, Long.numberOfLeadingZeros(1L << 14L)); $noinline$assertIntEquals(48, Long.numberOfLeadingZeros(1L << 15L)); $noinline$assertIntEquals(47, Long.numberOfLeadingZeros(1L << 16L)); $noinline$assertIntEquals(46, Long.numberOfLeadingZeros(1L << 17L)); $noinline$assertIntEquals(45, Long.numberOfLeadingZeros(1L << 18L)); $noinline$assertIntEquals(44, Long.numberOfLeadingZeros(1L << 19L)); $noinline$assertIntEquals(43, Long.numberOfLeadingZeros(1L << 20L)); $noinline$assertIntEquals(42, Long.numberOfLeadingZeros(1L << 21L)); $noinline$assertIntEquals(41, Long.numberOfLeadingZeros(1L << 22L)); $noinline$assertIntEquals(40, Long.numberOfLeadingZeros(1L << 23L)); $noinline$assertIntEquals(39, Long.numberOfLeadingZeros(1L << 24L)); $noinline$assertIntEquals(38, Long.numberOfLeadingZeros(1L << 25L)); $noinline$assertIntEquals(37, Long.numberOfLeadingZeros(1L << 26L)); $noinline$assertIntEquals(36, Long.numberOfLeadingZeros(1L << 27L)); $noinline$assertIntEquals(35, Long.numberOfLeadingZeros(1L << 28L)); $noinline$assertIntEquals(34, Long.numberOfLeadingZeros(1L << 29L)); $noinline$assertIntEquals(33, Long.numberOfLeadingZeros(1L << 30L)); } /// CHECK-START: void Main.$noinline$testLeadingZerosLongLast32() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongNumberOfLeadingZeros /// CHECK-START: void Main.$noinline$testLeadingZerosLongLast32() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongNumberOfLeadingZeros private static void $noinline$testLeadingZerosLongLast32() { $noinline$assertIntEquals(32, Long.numberOfLeadingZeros(1L << 31L)); $noinline$assertIntEquals(31, Long.numberOfLeadingZeros(1L << 32L)); $noinline$assertIntEquals(30, Long.numberOfLeadingZeros(1L << 33L)); $noinline$assertIntEquals(29, Long.numberOfLeadingZeros(1L << 34L)); $noinline$assertIntEquals(28, Long.numberOfLeadingZeros(1L << 35L)); $noinline$assertIntEquals(27, Long.numberOfLeadingZeros(1L << 36L)); $noinline$assertIntEquals(26, Long.numberOfLeadingZeros(1L << 37L)); $noinline$assertIntEquals(25, Long.numberOfLeadingZeros(1L << 38L)); $noinline$assertIntEquals(24, Long.numberOfLeadingZeros(1L << 39L)); $noinline$assertIntEquals(23, Long.numberOfLeadingZeros(1L << 40L)); $noinline$assertIntEquals(22, Long.numberOfLeadingZeros(1L << 41L)); $noinline$assertIntEquals(21, Long.numberOfLeadingZeros(1L << 42L)); $noinline$assertIntEquals(20, Long.numberOfLeadingZeros(1L << 43L)); $noinline$assertIntEquals(19, Long.numberOfLeadingZeros(1L << 44L)); $noinline$assertIntEquals(18, Long.numberOfLeadingZeros(1L << 45L)); $noinline$assertIntEquals(17, Long.numberOfLeadingZeros(1L << 46L)); $noinline$assertIntEquals(16, Long.numberOfLeadingZeros(1L << 47L)); $noinline$assertIntEquals(15, Long.numberOfLeadingZeros(1L << 48L)); $noinline$assertIntEquals(14, Long.numberOfLeadingZeros(1L << 49L)); $noinline$assertIntEquals(13, Long.numberOfLeadingZeros(1L << 50L)); $noinline$assertIntEquals(12, Long.numberOfLeadingZeros(1L << 51L)); $noinline$assertIntEquals(11, Long.numberOfLeadingZeros(1L << 52L)); $noinline$assertIntEquals(10, Long.numberOfLeadingZeros(1L << 53L)); $noinline$assertIntEquals(9, Long.numberOfLeadingZeros(1L << 54L)); $noinline$assertIntEquals(8, Long.numberOfLeadingZeros(1L << 55L)); $noinline$assertIntEquals(7, Long.numberOfLeadingZeros(1L << 56L)); $noinline$assertIntEquals(6, Long.numberOfLeadingZeros(1L << 57L)); $noinline$assertIntEquals(5, Long.numberOfLeadingZeros(1L << 58L)); $noinline$assertIntEquals(4, Long.numberOfLeadingZeros(1L << 59L)); $noinline$assertIntEquals(3, Long.numberOfLeadingZeros(1L << 60L)); $noinline$assertIntEquals(2, Long.numberOfLeadingZeros(1L << 61L)); $noinline$assertIntEquals(1, Long.numberOfLeadingZeros(1L << 62L)); $noinline$assertIntEquals(0, Long.numberOfLeadingZeros(1L << 63L)); } /// CHECK-START: void Main.$noinline$testTrailingZerosInt() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:IntegerNumberOfTrailingZeros /// CHECK-START: void Main.$noinline$testTrailingZerosInt() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:IntegerNumberOfTrailingZeros private static void $noinline$testTrailingZerosInt() { $noinline$assertIntEquals(0, Integer.numberOfTrailingZeros(Integer.MAX_VALUE)); $noinline$assertIntEquals(31, Integer.numberOfTrailingZeros(Integer.MIN_VALUE)); $noinline$assertIntEquals(32, Integer.numberOfTrailingZeros(0)); $noinline$assertIntEquals(0, Integer.numberOfTrailingZeros(1 << 0)); $noinline$assertIntEquals(1, Integer.numberOfTrailingZeros(1 << 1)); $noinline$assertIntEquals(2, Integer.numberOfTrailingZeros(1 << 2)); $noinline$assertIntEquals(3, Integer.numberOfTrailingZeros(1 << 3)); $noinline$assertIntEquals(4, Integer.numberOfTrailingZeros(1 << 4)); $noinline$assertIntEquals(5, Integer.numberOfTrailingZeros(1 << 5)); $noinline$assertIntEquals(6, Integer.numberOfTrailingZeros(1 << 6)); $noinline$assertIntEquals(7, Integer.numberOfTrailingZeros(1 << 7)); $noinline$assertIntEquals(8, Integer.numberOfTrailingZeros(1 << 8)); $noinline$assertIntEquals(9, Integer.numberOfTrailingZeros(1 << 9)); $noinline$assertIntEquals(10, Integer.numberOfTrailingZeros(1 << 10)); $noinline$assertIntEquals(11, Integer.numberOfTrailingZeros(1 << 11)); $noinline$assertIntEquals(12, Integer.numberOfTrailingZeros(1 << 12)); $noinline$assertIntEquals(13, Integer.numberOfTrailingZeros(1 << 13)); $noinline$assertIntEquals(14, Integer.numberOfTrailingZeros(1 << 14)); $noinline$assertIntEquals(15, Integer.numberOfTrailingZeros(1 << 15)); $noinline$assertIntEquals(16, Integer.numberOfTrailingZeros(1 << 16)); $noinline$assertIntEquals(17, Integer.numberOfTrailingZeros(1 << 17)); $noinline$assertIntEquals(18, Integer.numberOfTrailingZeros(1 << 18)); $noinline$assertIntEquals(19, Integer.numberOfTrailingZeros(1 << 19)); $noinline$assertIntEquals(20, Integer.numberOfTrailingZeros(1 << 20)); $noinline$assertIntEquals(21, Integer.numberOfTrailingZeros(1 << 21)); $noinline$assertIntEquals(22, Integer.numberOfTrailingZeros(1 << 22)); $noinline$assertIntEquals(23, Integer.numberOfTrailingZeros(1 << 23)); $noinline$assertIntEquals(24, Integer.numberOfTrailingZeros(1 << 24)); $noinline$assertIntEquals(25, Integer.numberOfTrailingZeros(1 << 25)); $noinline$assertIntEquals(26, Integer.numberOfTrailingZeros(1 << 26)); $noinline$assertIntEquals(27, Integer.numberOfTrailingZeros(1 << 27)); $noinline$assertIntEquals(28, Integer.numberOfTrailingZeros(1 << 28)); $noinline$assertIntEquals(29, Integer.numberOfTrailingZeros(1 << 29)); $noinline$assertIntEquals(30, Integer.numberOfTrailingZeros(1 << 30)); $noinline$assertIntEquals(31, Integer.numberOfTrailingZeros(1 << 31)); } /// CHECK-START: void Main.$noinline$testTrailingZerosLong() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongNumberOfTrailingZeros /// CHECK-START: void Main.$noinline$testTrailingZerosLong() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongNumberOfTrailingZeros private static void $noinline$testTrailingZerosLong() { $noinline$assertIntEquals(0, Long.numberOfTrailingZeros(Long.MAX_VALUE)); $noinline$assertIntEquals(63, Long.numberOfTrailingZeros(Long.MIN_VALUE)); // We need to do two smaller methods because otherwise we don't compile it due to our // heuristics. $noinline$testTrailingZerosLongFirst32(); $noinline$testTrailingZerosLongLast32(); } /// CHECK-START: void Main.$noinline$testTrailingZerosLongFirst32() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongNumberOfTrailingZeros /// CHECK-START: void Main.$noinline$testTrailingZerosLongFirst32() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongNumberOfTrailingZeros private static void $noinline$testTrailingZerosLongFirst32() { $noinline$assertIntEquals(64, Long.numberOfTrailingZeros(0L)); $noinline$assertIntEquals(0, Long.numberOfTrailingZeros(1L << 0L)); $noinline$assertIntEquals(1, Long.numberOfTrailingZeros(1L << 1L)); $noinline$assertIntEquals(2, Long.numberOfTrailingZeros(1L << 2L)); $noinline$assertIntEquals(3, Long.numberOfTrailingZeros(1L << 3L)); $noinline$assertIntEquals(4, Long.numberOfTrailingZeros(1L << 4L)); $noinline$assertIntEquals(5, Long.numberOfTrailingZeros(1L << 5L)); $noinline$assertIntEquals(6, Long.numberOfTrailingZeros(1L << 6L)); $noinline$assertIntEquals(7, Long.numberOfTrailingZeros(1L << 7L)); $noinline$assertIntEquals(8, Long.numberOfTrailingZeros(1L << 8L)); $noinline$assertIntEquals(9, Long.numberOfTrailingZeros(1L << 9L)); $noinline$assertIntEquals(10, Long.numberOfTrailingZeros(1L << 10L)); $noinline$assertIntEquals(11, Long.numberOfTrailingZeros(1L << 11L)); $noinline$assertIntEquals(12, Long.numberOfTrailingZeros(1L << 12L)); $noinline$assertIntEquals(13, Long.numberOfTrailingZeros(1L << 13L)); $noinline$assertIntEquals(14, Long.numberOfTrailingZeros(1L << 14L)); $noinline$assertIntEquals(15, Long.numberOfTrailingZeros(1L << 15L)); $noinline$assertIntEquals(16, Long.numberOfTrailingZeros(1L << 16L)); $noinline$assertIntEquals(17, Long.numberOfTrailingZeros(1L << 17L)); $noinline$assertIntEquals(18, Long.numberOfTrailingZeros(1L << 18L)); $noinline$assertIntEquals(19, Long.numberOfTrailingZeros(1L << 19L)); $noinline$assertIntEquals(20, Long.numberOfTrailingZeros(1L << 20L)); $noinline$assertIntEquals(21, Long.numberOfTrailingZeros(1L << 21L)); $noinline$assertIntEquals(22, Long.numberOfTrailingZeros(1L << 22L)); $noinline$assertIntEquals(23, Long.numberOfTrailingZeros(1L << 23L)); $noinline$assertIntEquals(24, Long.numberOfTrailingZeros(1L << 24L)); $noinline$assertIntEquals(25, Long.numberOfTrailingZeros(1L << 25L)); $noinline$assertIntEquals(26, Long.numberOfTrailingZeros(1L << 26L)); $noinline$assertIntEquals(27, Long.numberOfTrailingZeros(1L << 27L)); $noinline$assertIntEquals(28, Long.numberOfTrailingZeros(1L << 28L)); $noinline$assertIntEquals(29, Long.numberOfTrailingZeros(1L << 29L)); $noinline$assertIntEquals(30, Long.numberOfTrailingZeros(1L << 30L)); $noinline$assertIntEquals(31, Long.numberOfTrailingZeros(1L << 31L)); } /// CHECK-START: void Main.$noinline$testTrailingZerosLongLast32() constant_folding (before) /// CHECK-DAG: InvokeStaticOrDirect intrinsic:LongNumberOfTrailingZeros /// CHECK-START: void Main.$noinline$testTrailingZerosLongLast32() constant_folding (after) /// CHECK-NOT: InvokeStaticOrDirect intrinsic:LongNumberOfTrailingZeros private static void $noinline$testTrailingZerosLongLast32() { $noinline$assertIntEquals(32, Long.numberOfTrailingZeros(1L << 32L)); $noinline$assertIntEquals(33, Long.numberOfTrailingZeros(1L << 33L)); $noinline$assertIntEquals(34, Long.numberOfTrailingZeros(1L << 34L)); $noinline$assertIntEquals(35, Long.numberOfTrailingZeros(1L << 35L)); $noinline$assertIntEquals(36, Long.numberOfTrailingZeros(1L << 36L)); $noinline$assertIntEquals(37, Long.numberOfTrailingZeros(1L << 37L)); $noinline$assertIntEquals(38, Long.numberOfTrailingZeros(1L << 38L)); $noinline$assertIntEquals(39, Long.numberOfTrailingZeros(1L << 39L)); $noinline$assertIntEquals(40, Long.numberOfTrailingZeros(1L << 40L)); $noinline$assertIntEquals(41, Long.numberOfTrailingZeros(1L << 41L)); $noinline$assertIntEquals(42, Long.numberOfTrailingZeros(1L << 42L)); $noinline$assertIntEquals(43, Long.numberOfTrailingZeros(1L << 43L)); $noinline$assertIntEquals(44, Long.numberOfTrailingZeros(1L << 44L)); $noinline$assertIntEquals(45, Long.numberOfTrailingZeros(1L << 45L)); $noinline$assertIntEquals(46, Long.numberOfTrailingZeros(1L << 46L)); $noinline$assertIntEquals(47, Long.numberOfTrailingZeros(1L << 47L)); $noinline$assertIntEquals(48, Long.numberOfTrailingZeros(1L << 48L)); $noinline$assertIntEquals(49, Long.numberOfTrailingZeros(1L << 49L)); $noinline$assertIntEquals(50, Long.numberOfTrailingZeros(1L << 50L)); $noinline$assertIntEquals(51, Long.numberOfTrailingZeros(1L << 51L)); $noinline$assertIntEquals(52, Long.numberOfTrailingZeros(1L << 52L)); $noinline$assertIntEquals(53, Long.numberOfTrailingZeros(1L << 53L)); $noinline$assertIntEquals(54, Long.numberOfTrailingZeros(1L << 54L)); $noinline$assertIntEquals(55, Long.numberOfTrailingZeros(1L << 55L)); $noinline$assertIntEquals(56, Long.numberOfTrailingZeros(1L << 56L)); $noinline$assertIntEquals(57, Long.numberOfTrailingZeros(1L << 57L)); $noinline$assertIntEquals(58, Long.numberOfTrailingZeros(1L << 58L)); $noinline$assertIntEquals(59, Long.numberOfTrailingZeros(1L << 59L)); $noinline$assertIntEquals(60, Long.numberOfTrailingZeros(1L << 60L)); $noinline$assertIntEquals(61, Long.numberOfTrailingZeros(1L << 61L)); $noinline$assertIntEquals(62, Long.numberOfTrailingZeros(1L << 62L)); $noinline$assertIntEquals(63, Long.numberOfTrailingZeros(1L << 63L)); } public static void $noinline$assertIntEquals(int expected, int result) { if (expected != result) { throw new Error("Expected: " + expected + ", found: " + result); } } public static void $noinline$assertLongEquals(long expected, long result) { if (expected != result) { throw new Error("Expected: " + expected + ", found: " + result); } } public static void $noinline$assertShortEquals(short expected, short result) { if (expected != result) { throw new Error("Expected: " + expected + ", found: " + result); } } }