2016-05-31 Roger Sayle <roger@nextmovesoftware.com> gcc/java: * builtins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount() and reverseBytes() methods in java.lang.Integer and friends. (initialize_builtins): Annotate math builtins with ECF_LEAF. Call define_builtin for the new popcount* and bswap* builtins. libjava: * testsuite/libjava.lang/BuiltinBitCount.java: New test case. * testsuite/libjava.lang/BuiltinReverseBytes.java: Likewise. From-SVN: r236919
52 lines
1.1 KiB
Java
52 lines
1.1 KiB
Java
class BuiltinBitCount
|
|
{
|
|
public static int popcount(int x)
|
|
{
|
|
return Integer.bitCount(x);
|
|
}
|
|
|
|
public static int popcountl(long x)
|
|
{
|
|
return Long.bitCount(x);
|
|
}
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
if (Integer.bitCount(0) != 0)
|
|
throw new Error();
|
|
if (Integer.bitCount(8) != 1)
|
|
throw new Error();
|
|
if (Integer.bitCount(123456) != 6)
|
|
throw new Error();
|
|
if (Integer.bitCount(-1) != 32)
|
|
throw new Error();
|
|
|
|
if (Long.bitCount(0) != 0)
|
|
throw new Error();
|
|
if (Long.bitCount(8) != 1)
|
|
throw new Error();
|
|
if (Long.bitCount(123456) != 6)
|
|
throw new Error();
|
|
if (Long.bitCount(-1) != 64)
|
|
throw new Error();
|
|
|
|
if (popcount(0) != 0)
|
|
throw new Error();
|
|
if (popcount(8) != 1)
|
|
throw new Error();
|
|
if (popcount(123456) != 6)
|
|
throw new Error();
|
|
if (popcount(-1) != 32)
|
|
throw new Error();
|
|
|
|
if (popcountl(0) != 0)
|
|
throw new Error();
|
|
if (popcountl(8) != 1)
|
|
throw new Error();
|
|
if (popcountl(123456) != 6)
|
|
throw new Error();
|
|
if (popcountl(-1) != 64)
|
|
throw new Error();
|
|
}
|
|
}
|