diff options
author | Roger Sayle <roger@nextmovesoftware.com> | 2016-05-31 11:30:56 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2016-05-31 11:30:56 +0000 |
commit | a1293f402a25801d03a58312b06b65c33702c726 (patch) | |
tree | e4795973441e52b0a0b748fb08728e4962eb277f /libjava/testsuite/libjava.lang/BuiltinBitCount.java | |
parent | 051154a1f6be0f597b7da235d6fe13463e7629be (diff) | |
download | gcc-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.java | 51 |
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(); + } +} |