Mercurial > hg > graal-compiler
annotate graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java @ 21556:48c1ebd24120
renamed com.oracle.graal.api[meta|code] modules to com.oracle.jvmci.[meta|code] (JBS:GRAAL-53)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 27 May 2015 00:36:16 +0200 |
parents | cc3131ff7ce2 |
children | 0e095e2c24e2 |
rev | line source |
---|---|
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
1 /* |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
4 * |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
8 * |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
14 * |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
18 * |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
21 * questions. |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
22 */ |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
23 package com.oracle.graal.replacements.test; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
24 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
25 import org.junit.*; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
26 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
27 import com.oracle.graal.compiler.common.type.*; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
28 import com.oracle.graal.compiler.test.*; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
29 import com.oracle.graal.nodes.*; |
19306
a0a760b0fb5f
pulled method evolution dependencies out of Assumptions and directly into StructuredGraph
Doug Simon <doug.simon@oracle.com>
parents:
19250
diff
changeset
|
30 import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
31 import com.oracle.graal.phases.common.*; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
32 import com.oracle.graal.phases.common.inlining.*; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
33 import com.oracle.graal.phases.tiers.*; |
16591
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
34 import com.oracle.graal.replacements.nodes.*; |
21556
48c1ebd24120
renamed com.oracle.graal.api[meta|code] modules to com.oracle.jvmci.[meta|code] (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
20068
diff
changeset
|
35 import com.oracle.jvmci.meta.*; |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
36 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
37 public class BitOpNodesTest extends GraalCompilerTest { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
38 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
39 private static final int INT_CONSTANT_1 = 0x80100010; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
40 private static final int INT_CONSTANT_2 = 0x00011110; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
41 private static final int INT_CONSTANT_3 = 0x00000000; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
42 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
43 private static final long LONG_CONSTANT_1 = 0x8000000000100010L; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
44 private static final long LONG_CONSTANT_2 = 0x0000000000011110L; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
45 private static final long LONG_CONSTANT_3 = 0x0000000000000000L; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
46 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
47 public static long dummyField; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
48 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
49 /* |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
50 * Tests for BitCountNode canonicalizations. |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
51 */ |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
52 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
53 public static int bitCountIntConstantSnippet() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
54 return Integer.bitCount(INT_CONSTANT_1) + Integer.bitCount(INT_CONSTANT_2) + Integer.bitCount(INT_CONSTANT_3); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
55 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
56 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
57 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
58 public void testBitCountIntConstant() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
59 ValueNode result = parseAndInline("bitCountIntConstantSnippet"); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
60 Assert.assertEquals(7, result.asJavaConstant().asInt()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
61 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
62 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
63 public static int bitCountLongConstantSnippet() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
64 return Long.bitCount(LONG_CONSTANT_1) + Long.bitCount(LONG_CONSTANT_2) + Long.bitCount(LONG_CONSTANT_3); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
65 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
66 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
67 public static int bitCountIntSnippet(int v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
68 return Integer.bitCount(v & 0xFFFFFF | 0xFF); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
69 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
70 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
71 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
72 public void testBitCountInt() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
73 ValueNode result = parseAndInline("bitCountIntSnippet"); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
74 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 8, 24), result.stamp()); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
75 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
76 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
77 public static int bitCountIntEmptySnippet(int v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
78 return Integer.bitCount(v & 0xFFFFFF); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
79 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
80 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
81 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
82 public void testBitCountIntEmpty() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
83 ValueNode result = parseAndInline("bitCountIntEmptySnippet"); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
84 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 0, 24), result.stamp()); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
85 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
86 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
87 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
88 public void testBitCountLongConstant() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
89 ValueNode result = parseAndInline("bitCountLongConstantSnippet"); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
90 Assert.assertEquals(7, result.asJavaConstant().asInt()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
91 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
92 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
93 public static int bitCountLongSnippet(long v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
94 return Long.bitCount(v & 0xFFFFFFFFFFL | 0xFFL); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
95 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
96 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
97 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
98 public void testBitCountLong() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
99 ValueNode result = parseAndInline("bitCountLongSnippet"); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
100 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 8, 40), result.stamp()); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
101 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
102 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
103 public static int bitCountLongEmptySnippet(long v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
104 return Long.bitCount(v & 0xFFFFFFFFFFL); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
105 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
106 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
107 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
108 public void testBitCountLongEmpty() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
109 ValueNode result = parseAndInline("bitCountLongEmptySnippet"); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
110 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 0, 40), result.stamp()); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
111 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
112 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
113 /* |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
114 * Tests for BitScanForwardNode |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
115 */ |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
116 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
117 public static int scanForwardIntConstantSnippet() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
118 return Integer.numberOfTrailingZeros(INT_CONSTANT_1) + Integer.numberOfTrailingZeros(INT_CONSTANT_2) + Integer.numberOfTrailingZeros(INT_CONSTANT_3); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
119 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
120 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
121 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
122 public void testScanForwardIntConstant() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
123 ValueNode result = parseAndInline("scanForwardIntConstantSnippet"); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
124 Assert.assertEquals(40, result.asJavaConstant().asInt()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
125 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
126 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
127 public static int scanForwardIntSnippet(int v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
128 return Integer.numberOfTrailingZeros(v & 0xFFF0 | 0xFF00); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
129 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
130 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
131 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
132 public void testScanForwardInt() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
133 ValueNode result = parseAndInline("scanForwardIntSnippet"); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
134 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 4, 8), result.stamp()); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
135 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
136 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
137 public static int scanForwardLongConstantSnippet() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
138 return Long.numberOfTrailingZeros(LONG_CONSTANT_1) + Long.numberOfTrailingZeros(LONG_CONSTANT_2) + Long.numberOfTrailingZeros(LONG_CONSTANT_3); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
139 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
140 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
141 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
142 public void testScanForwardLongConstant() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
143 ValueNode result = parseAndInline("scanForwardLongConstantSnippet"); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
144 Assert.assertEquals(72, result.asJavaConstant().asInt()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
145 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
146 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
147 public static int scanForwardLongSnippet(long v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
148 return Long.numberOfTrailingZeros(v & 0xFFFF000000L | 0xFF00000000L); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
149 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
150 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
151 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
152 public void testScanForwardLong() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
153 ValueNode result = parseAndInline("scanForwardLongSnippet"); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
154 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 32), result.stamp()); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
155 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
156 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
157 public static int scanForwardLongEmptySnippet(long v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
158 int result = Long.numberOfTrailingZeros(v & 0xFFFF000000L); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
159 dummyField = result; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
160 return result; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
161 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
162 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
163 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
164 public void testScanForwardLongEmpty() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
165 ValueNode result = parseAndInline("scanForwardLongEmptySnippet"); |
18415
6dc4f0be9a70
Add support of lzcnt and tzcnt
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
18187
diff
changeset
|
166 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 64), result.stamp()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
167 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
168 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
169 /* |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
170 * Tests for BitScanReverseNode |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
171 */ |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
172 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
173 public static int scanReverseIntConstantSnippet() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
174 return Integer.numberOfLeadingZeros(INT_CONSTANT_1) + Integer.numberOfLeadingZeros(INT_CONSTANT_2) + Integer.numberOfLeadingZeros(INT_CONSTANT_3); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
175 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
176 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
177 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
178 public void testScanReverseIntConstant() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
179 ValueNode result = parseAndInline("scanReverseIntConstantSnippet"); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
180 Assert.assertEquals(47, result.asJavaConstant().asInt()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
181 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
182 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
183 public static int scanReverseIntSnippet(int v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
184 return Integer.numberOfLeadingZeros(v & 0xFFF0 | 0xFF0); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
185 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
186 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
187 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
188 public void testScanReverseInt() { |
16618
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
189 /* This test isn't valid unless the BitScanReverseNode intrinsic is used. */ |
16591
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
190 ValueNode result = parseAndInline("scanReverseIntSnippet", BitScanReverseNode.class); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
191 if (result != null) { |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
192 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 16, 20), result.stamp()); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
193 } |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
194 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
195 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
196 public static int scanReverseLongConstantSnippet() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
197 return Long.numberOfLeadingZeros(LONG_CONSTANT_1) + Long.numberOfLeadingZeros(LONG_CONSTANT_2) + Long.numberOfLeadingZeros(LONG_CONSTANT_3); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
198 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
199 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
200 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
201 public void testScanReverseLongConstant() { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
202 ValueNode result = parseAndInline("scanReverseLongConstantSnippet"); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
16714
diff
changeset
|
203 Assert.assertEquals(111, result.asJavaConstant().asInt()); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
204 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
205 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
206 public static int scanReverseLongSnippet(long v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
207 int result = Long.numberOfLeadingZeros(v & 0xFFF0); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
208 dummyField = result; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
209 return result; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
210 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
211 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
212 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
213 public void testScanReverseLong() { |
16618
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
214 /* This test isn't valid unless the BitScanReverseNode intrinsic is used. */ |
16591
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
215 ValueNode result = parseAndInline("scanReverseLongSnippet", BitScanReverseNode.class); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
216 if (result != null) { |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
217 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 48, 64), result.stamp()); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
218 } |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
219 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
220 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
221 public static int scanReverseLongEmptySnippet(long v) { |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
222 int result = Long.numberOfLeadingZeros(v & 0xFFFF000000L); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
223 dummyField = result; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
224 return result; |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
225 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
226 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
227 @Test |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
228 public void testScanReverseLongEmpty() { |
16618
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
229 /* This test isn't valid unless the BitScanReverseNode intrinsic is used. */ |
16591
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
230 ValueNode result = parseAndInline("scanReverseLongEmptySnippet", BitScanReverseNode.class); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
231 if (result != null) { |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
232 Assert.assertEquals(StampFactory.forInteger(Kind.Int, 24, 64), result.stamp()); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
233 } |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
234 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
235 |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
236 private ValueNode parseAndInline(String name) { |
16591
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
237 return parseAndInline(name, null); |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
238 } |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
239 |
16618
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
240 /** |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
241 * Parse and optimize {@code name}. If {@code expectedClass} is non-null and a node of that type |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
242 * isn't found simply return null. Otherwise return the node returned by the graph. |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
243 * |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
244 * @param name |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
245 * @param expectedClass |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
246 * @return the returned value or null if {@code expectedClass} is not found in the graph. |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
247 */ |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
248 private ValueNode parseAndInline(String name, Class<? extends ValueNode> expectedClass) { |
19306
a0a760b0fb5f
pulled method evolution dependencies out of Assumptions and directly into StructuredGraph
Doug Simon <doug.simon@oracle.com>
parents:
19250
diff
changeset
|
249 StructuredGraph graph = parseEager(name, AllowAssumptions.YES); |
20068
cc3131ff7ce2
Remove GraphCache option.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19716
diff
changeset
|
250 HighTierContext context = getDefaultHighTierContext(); |
19716
2fd45bb25118
Initial version of new dominator-based conditional elimination phase.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19410
diff
changeset
|
251 CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
252 canonicalizer.apply(graph, context); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
253 new InliningPhase(canonicalizer).apply(graph, context); |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
254 canonicalizer.apply(graph, context); |
19410
61d3cb8e1280
Add generic parameter to NodeClass. Change Graph#getNodes(Class) to Graph#getNodes(NodeClass).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19306
diff
changeset
|
255 Assert.assertEquals(1, graph.getNodes(ReturnNode.TYPE).count()); |
16618
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
256 if (expectedClass != null) { |
0b0726730fbd
add some comments to BitOpNodesTest.java
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16591
diff
changeset
|
257 if (graph.getNodes().filter(expectedClass).count() == 0) { |
16591
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
258 return null; |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
259 } |
86eee6794713
BitScanReverseNode stamp tests should only be used with BitScanReverseNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16163
diff
changeset
|
260 } |
19410
61d3cb8e1280
Add generic parameter to NodeClass. Change Graph#getNodes(Class) to Graph#getNodes(NodeClass).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19306
diff
changeset
|
261 return graph.getNodes(ReturnNode.TYPE).first().result(); |
16163
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
262 } |
d5e66f2adf8f
tests for bit operations
Lukas Stadler <lukas.stadler@oracle.com>
parents:
diff
changeset
|
263 } |