8sa1-gcc/libjava/testsuite/libjava.lang/BuiltinBitCount.java
Roger Sayle a1293f402a builtins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount() and reverseBytes()...
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
2016-05-31 11:30:56 +00:00

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();
}
}