Mercurial > hg > truffle
comparison test/compiler/6378821/Test6378821.java @ 643:c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
Summary: bitCount() should use POPC on SPARC processors where POPC is implemented directly in hardware.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Fri, 13 Mar 2009 11:35:17 -0700 |
parents | |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
642:660978a2a31a | 643:c771b7f43bbf |
---|---|
1 /* | |
2 * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. | |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 * CA 95054 USA or visit www.sun.com if you need additional information or | |
21 * have any questions. | |
22 */ | |
23 | |
24 /** | |
25 * @test | |
26 * @bug 6378821 | |
27 * @summary where available, bitCount() should use POPC on SPARC processors and AMD+10h | |
28 * | |
29 * @run main/othervm -Xcomp -XX:CompileOnly=Test6378821.fcomp Test6378821 | |
30 */ | |
31 | |
32 public class Test6378821 { | |
33 static final int[] ia = new int[] { 0x12345678 }; | |
34 static final long[] la = new long[] { 0x12345678abcdefL }; | |
35 | |
36 public static void main(String [] args) { | |
37 // Resolve the class and the method. | |
38 Integer.bitCount(1); | |
39 Long.bitCount(1); | |
40 | |
41 sub(ia[0]); | |
42 sub(la[0]); | |
43 sub(ia); | |
44 sub(la); | |
45 } | |
46 | |
47 static void check(int i, int expected, int result) { | |
48 if (result != expected) { | |
49 throw new InternalError("Wrong population count for " + i + ": " + result + " != " + expected); | |
50 } | |
51 } | |
52 | |
53 static void check(long l, int expected, int result) { | |
54 if (result != expected) { | |
55 throw new InternalError("Wrong population count for " + l + ": " + result + " != " + expected); | |
56 } | |
57 } | |
58 | |
59 static void sub(int i) { check(i, fint(i), fcomp(i) ); } | |
60 static void sub(int[] ia) { check(ia[0], fint(ia), fcomp(ia)); } | |
61 static void sub(long l) { check(l, fint(l), fcomp(l) ); } | |
62 static void sub(long[] la) { check(la[0], fint(la), fcomp(la)); } | |
63 | |
64 static int fint (int i) { return Integer.bitCount(i); } | |
65 static int fcomp(int i) { return Integer.bitCount(i); } | |
66 | |
67 static int fint (int[] ia) { return Integer.bitCount(ia[0]); } | |
68 static int fcomp(int[] ia) { return Integer.bitCount(ia[0]); } | |
69 | |
70 static int fint (long l) { return Long.bitCount(l); } | |
71 static int fcomp(long l) { return Long.bitCount(l); } | |
72 | |
73 static int fint (long[] la) { return Long.bitCount(la[0]); } | |
74 static int fcomp(long[] la) { return Long.bitCount(la[0]); } | |
75 } |