aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.lang/BuiltinBitCount.java
diff options
context:
space:
mode:
authorRoger Sayle <roger@nextmovesoftware.com>2016-05-31 11:30:56 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2016-05-31 11:30:56 +0000
commita1293f402a25801d03a58312b06b65c33702c726 (patch)
treee4795973441e52b0a0b748fb08728e4962eb277f /libjava/testsuite/libjava.lang/BuiltinBitCount.java
parent051154a1f6be0f597b7da235d6fe13463e7629be (diff)
downloadgcc-a1293f402a25801d03a58312b06b65c33702c726.zip
gcc-a1293f402a25801d03a58312b06b65c33702c726.tar.gz
gcc-a1293f402a25801d03a58312b06b65c33702c726.tar.bz2
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
Diffstat (limited to 'libjava/testsuite/libjava.lang/BuiltinBitCount.java')
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinBitCount.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.lang/BuiltinBitCount.java b/libjava/testsuite/libjava.lang/BuiltinBitCount.java
new file mode 100644
index 0000000..bcafd31
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/BuiltinBitCount.java
@@ -0,0 +1,51 @@
+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();
+ }
+}