Mercurial > hg > graal-compiler
annotate graal/com.oracle.graal.asm.ptx/src/com/oracle/graal/asm/ptx/PTXAssembler.java @ 11901:61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
author | Morris Meyer <morris.meyer@oracle.com> |
---|---|
date | Sun, 06 Oct 2013 18:15:56 -0400 |
parents | 1f82cda83ced |
children | 67a1e27a8dbb b18d4089535d |
rev | line source |
---|---|
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
1 /* |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
4 * |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
7 * published by the Free Software Foundation. |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
8 * |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
13 * accompanied this code). |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
14 * |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
18 * |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
21 * questions. |
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
22 */ |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
23 package com.oracle.graal.asm.ptx; |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
24 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
25 import static com.oracle.graal.api.code.ValueUtil.*; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
26 |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
27 import com.oracle.graal.asm.Label; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
28 import com.oracle.graal.api.code.Register; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
29 import com.oracle.graal.api.code.RegisterConfig; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
30 import com.oracle.graal.api.code.TargetDescription; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
31 import com.oracle.graal.api.meta.Constant; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
32 import com.oracle.graal.api.meta.Kind; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
33 import com.oracle.graal.api.meta.Value; |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
34 import com.oracle.graal.nodes.calc.Condition; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
35 import com.oracle.graal.graph.GraalInternalError; |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
36 import com.oracle.graal.lir.LabelRef; |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
37 import com.oracle.graal.lir.Variable; |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
38 |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
39 public class PTXAssembler extends AbstractPTXAssembler { |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
40 |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
41 public PTXAssembler(TargetDescription target, @SuppressWarnings("unused") RegisterConfig registerConfig) { |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
42 super(target); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
43 } |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
44 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
45 public enum ConditionOperator { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
46 // @formatter:off |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
47 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
48 // Signed integer operators |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
49 S_EQ("eq"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
50 S_NE("ne"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
51 S_LT("lt"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
52 S_LE("le"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
53 S_GT("gt"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
54 S_GE("ge"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
55 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
56 // Unsigned integer operators |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
57 U_EQ("eq"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
58 U_NE("ne"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
59 U_LO("lo"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
60 U_LS("ls"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
61 U_HI("hi"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
62 U_HS("hs"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
63 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
64 // Bit-size integer operators |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
65 B_EQ("eq"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
66 B_NE("ne"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
67 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
68 // Floating-point operators |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
69 F_EQ("eq"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
70 F_NE("ne"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
71 F_LT("lt"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
72 F_LE("le"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
73 F_GT("gt"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
74 F_GE("ge"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
75 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
76 // Floating-point operators accepting NaN |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
77 F_EQU("equ"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
78 F_NEU("neu"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
79 F_LTU("ltu"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
80 F_LEU("leu"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
81 F_GTU("gtu"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
82 F_GEU("geu"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
83 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
84 // Floating-point operators testing for NaN |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
85 F_NUM("num"), |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
86 F_NAN("nan"); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
87 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
88 // @formatter:on |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
89 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
90 private final String operator; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
91 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
92 private ConditionOperator(String op) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
93 this.operator = op; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
94 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
95 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
96 public String getOperator() { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
97 return operator; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
98 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
99 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
100 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
101 public static class StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
102 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
103 protected Kind valueKind; |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
104 protected Variable dest; |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
105 protected Value source1; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
106 protected Value source2; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
107 private boolean logicInstruction = false; |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
108 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
109 public StandardFormat(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
110 setDestination(dst); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
111 setSource1(src1); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
112 setSource2(src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
113 setKind(dst.getKind()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
114 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
115 // testAdd2B fails this assertion |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
116 // assert valueKind == src1.getKind(); |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
117 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
118 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
119 public void setKind(Kind k) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
120 valueKind = k; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
121 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
122 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
123 public void setDestination(Variable var) { |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
124 assert var != null; |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
125 dest = var; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
126 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
127 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
128 public void setSource1(Value val) { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
129 assert val != null; |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
130 source1 = val; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
131 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
132 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
133 public void setSource2(Value val) { |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
134 assert val != null; |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
135 source2 = val; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
136 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
137 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
138 public void setLogicInstruction(boolean b) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
139 logicInstruction = b; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
140 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
141 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
142 public String typeForKind(Kind k) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
143 if (logicInstruction) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
144 switch (k.getTypeChar()) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
145 case 's': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
146 return "b16"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
147 case 'i': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
148 return "b32"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
149 case 'j': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
150 return "b64"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
151 default: |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
152 throw GraalInternalError.shouldNotReachHere(); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
153 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
154 } else { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
155 switch (k.getTypeChar()) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
156 case 'z': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
157 return "u8"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
158 case 'b': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
159 return "s8"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
160 case 's': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
161 return "s16"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
162 case 'c': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
163 return "u16"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
164 case 'i': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
165 return "s32"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
166 case 'f': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
167 return "f32"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
168 case 'j': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
169 return "s64"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
170 case 'd': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
171 return "f64"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
172 case 'a': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
173 return "u64"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
174 case '-': |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
175 return "u32"; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
176 default: |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
177 throw GraalInternalError.shouldNotReachHere(); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
178 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
179 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
180 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
181 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
182 public String emit() { |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
183 return (typeForKind(valueKind) + emitRegister(dest, true) + emitValue(source1, true) + emitValue(source2, false) + ";"); |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
184 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
185 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
186 public String emitValue(Value v, boolean comma) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
187 assert v != null; |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
188 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
189 if (isConstant(v)) { |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
190 return (emitConstant(v, comma)); |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
191 } else { |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
192 return (emitRegister((Variable) v, comma)); |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
193 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
194 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
195 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
196 public String emitRegister(Variable v, boolean comma) { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
197 return (" %r" + v.index + (comma ? "," : "")); |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
198 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
199 |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
200 public String emitConstant(Value v, boolean comma) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
201 Constant constant = (Constant) v; |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
202 String str = null; |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
203 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
204 switch (v.getKind().getTypeChar()) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
205 case 'i': |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
206 str = String.valueOf((int) constant.asLong()); |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
207 break; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
208 case 'f': |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
209 str = String.valueOf(constant.asFloat()); |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
210 break; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
211 case 'j': |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
212 str = String.valueOf(constant.asLong()); |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
213 break; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
214 case 'd': |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
215 str = String.valueOf(constant.asDouble()); |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
216 break; |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
217 default: |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
218 throw GraalInternalError.shouldNotReachHere(); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
219 } |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
220 if (comma) { |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
221 return (str + ","); |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
222 } else { |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
223 return str; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
224 } |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
225 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
226 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
227 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
228 public static class SingleOperandFormat { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
229 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
230 protected Variable dest; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
231 protected Value source; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
232 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
233 public SingleOperandFormat(Variable dst, Value src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
234 setDestination(dst); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
235 setSource(src); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
236 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
237 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
238 public void setDestination(Variable var) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
239 dest = var; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
240 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
241 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
242 public void setSource(Value var) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
243 source = var; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
244 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
245 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
246 public String typeForKind(Kind k) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
247 switch (k.getTypeChar()) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
248 case 'z': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
249 return "u8"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
250 case 'b': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
251 return "s8"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
252 case 's': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
253 return "s16"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
254 case 'c': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
255 return "u16"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
256 case 'i': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
257 return "s32"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
258 case 'f': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
259 return "f32"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
260 case 'j': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
261 return "s64"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
262 case 'd': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
263 return "f64"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
264 case 'a': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
265 return "u64"; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
266 default: |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
267 throw GraalInternalError.shouldNotReachHere(); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
268 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
269 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
270 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
271 public String emit() { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
272 return (typeForKind(dest.getKind()) + " " + emitVariable(dest) + ", " + emitValue(source) + ";"); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
273 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
274 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
275 public String emitValue(Value v) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
276 assert v != null; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
277 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
278 if (isConstant(v)) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
279 return (emitConstant(v)); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
280 } else { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
281 return (emitVariable((Variable) v)); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
282 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
283 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
284 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
285 public String emitConstant(Value v) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
286 Constant constant = (Constant) v; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
287 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
288 switch (v.getKind().getTypeChar()) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
289 case 'i': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
290 return (String.valueOf((int) constant.asLong())); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
291 case 'f': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
292 return (String.valueOf(constant.asFloat())); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
293 case 'j': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
294 return (String.valueOf(constant.asLong())); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
295 case 'd': |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
296 return (String.valueOf(constant.asDouble())); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
297 default: |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
298 throw GraalInternalError.shouldNotReachHere(); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
299 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
300 } |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
301 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
302 public String emitVariable(Variable v) { |
11822
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
303 String name = v.getName(); |
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
304 |
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
305 if (name == null) { |
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
306 return (" %r" + v.index); |
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
307 } else { |
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
308 return name; |
365d8f385fb5
PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11821
diff
changeset
|
309 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
310 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
311 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
312 |
11896
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
313 public static class BinarySingleOperandFormat extends SingleOperandFormat { |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
314 |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
315 public BinarySingleOperandFormat(Variable dst, Value src) { |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
316 super(dst, src); |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
317 } |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
318 |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
319 @Override |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
320 public String typeForKind(Kind k) { |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
321 switch (k.getTypeChar()) { |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
322 case 's': |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
323 return "b16"; |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
324 case 'i': |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
325 return "b32"; |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
326 case 'j': |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
327 return "b64"; |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
328 default: |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
329 throw GraalInternalError.shouldNotReachHere(); |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
330 } |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
331 } |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
332 } |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
333 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
334 public static class ConversionFormat extends SingleOperandFormat { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
335 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
336 public ConversionFormat(Variable dst, Value src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
337 super(dst, src); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
338 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
339 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
340 @Override |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
341 public String emit() { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
342 return (typeForKind(dest.getKind()) + "." + typeForKind(source.getKind()) + " " + |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
343 emitVariable(dest) + ", " + emitValue(source) + ";"); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
344 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
345 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
346 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
347 public static class LoadStoreFormat extends StandardFormat { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
348 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
349 protected PTXStateSpace space; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
350 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
351 public LoadStoreFormat(PTXStateSpace space, Variable dst, Value src1, Value src2) { |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
352 super(dst, src1, src2); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
353 setStateSpace(space); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
354 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
355 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
356 public void setStateSpace(PTXStateSpace ss) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
357 space = ss; |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
358 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
359 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
360 public String emitAddress(Value var, Value val) { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
361 assert var instanceof Variable; |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
362 assert val instanceof Constant; |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
363 Constant constant = (Constant) val; |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
364 return ("[" + emitRegister((Variable) var, false) + " + " + constant.asBoxedValue() + "]"); |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
365 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
366 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
367 @Override |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
368 public String emitRegister(Variable var, boolean comma) { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
369 /* if (space == Parameter) { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
370 return ("param" + var.index); |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
371 } else { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
372 return ("%r" + var.index); |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
373 } */ |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
374 return ("%r" + var.index); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
375 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
376 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
377 public String emit(boolean isLoad) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
378 if (isLoad) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
379 return (space.getStateName() + "." + typeForKind(valueKind) + " " + |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
380 emitRegister(dest, false) + ", " + emitAddress(source1, source2) + ";"); |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
381 } else { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
382 return (space.getStateName() + "." + typeForKind(valueKind) + " " + |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
383 emitAddress(source1, source2) + ", " + emitRegister(dest, false) + ";"); |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
384 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
385 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
386 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
387 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
388 public static class Add extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
389 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
390 public Add(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
391 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
392 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
393 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
394 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
395 asm.emitString("add." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
396 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
397 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
398 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
399 public static class And extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
400 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
401 public And(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
402 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
403 setLogicInstruction(true); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
404 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
405 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
406 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
407 asm.emitString("and." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
408 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
409 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
410 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
411 public static class Div extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
412 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
413 public Div(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
414 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
415 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
416 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
417 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
418 asm.emitString("div." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
419 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
420 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
421 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
422 public static class Mul extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
423 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
424 public Mul(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
425 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
426 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
427 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
428 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
429 asm.emitString("mul.lo." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
430 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
431 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
432 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
433 public static class Or extends StandardFormat { |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
434 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
435 public Or(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
436 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
437 setLogicInstruction(true); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
438 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
439 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
440 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
441 asm.emitString("or." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
442 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
443 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
444 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
445 public static class Rem extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
446 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
447 public Rem(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
448 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
449 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
450 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
451 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
452 asm.emitString("rem." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
453 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
454 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
455 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
456 public static class Shl extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
457 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
458 public Shl(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
459 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
460 setLogicInstruction(true); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
461 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
462 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
463 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
464 asm.emitString("shl." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
465 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
466 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
467 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
468 public static class Shr extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
469 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
470 public Shr(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
471 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
472 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
473 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
474 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
475 asm.emitString("shr." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
476 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
477 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
478 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
479 public static class Sub extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
480 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
481 public Sub(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
482 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
483 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
484 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
485 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
486 asm.emitString("sub." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
487 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
488 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
489 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
490 public static class Ushr extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
491 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
492 public Ushr(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
493 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
494 setKind(Kind.Illegal); // get around not having an Unsigned Kind |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
495 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
496 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
497 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
498 asm.emitString("shr." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
499 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
500 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
501 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
502 public static class Xor extends StandardFormat { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
503 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
504 public Xor(Variable dst, Value src1, Value src2) { |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
505 super(dst, src1, src2); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
506 setLogicInstruction(true); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
507 } |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
508 |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
509 public void emit(PTXAssembler asm) { |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
510 asm.emitString("xor." + super.emit()); |
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
511 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
512 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
513 |
11683
7aed6a236e0b
class-for-instruction PTXAssembler
Morris Meyer <morris.meyer@oracle.com>
parents:
11634
diff
changeset
|
514 // Checkstyle: stop method name check |
11699
03fe11f5f186
PTX Codegen: predicate register materialization and declaration; conditional branch generation; fix register declaration.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents:
11683
diff
changeset
|
515 public final void bra(String tgt, int pred) { |
11896
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
516 assert pred >= 0; |
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
517 |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
518 if (tgt.equals("?")) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
519 Thread.dumpStack(); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
520 } |
11896
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
521 emitString("@%p" + pred + " " + "bra" + " " + tgt + ";"); |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
522 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
523 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
524 public final void bra(String src) { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
525 emitString("bra " + src + ";"); |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
526 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
527 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
528 public final void bra_uni(String tgt) { |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
529 emitString("bra.uni" + " " + tgt + ";" + ""); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
530 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
531 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
532 public static class Cvt extends ConversionFormat { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
533 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
534 public Cvt(Variable dst, Variable src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
535 super(dst, src); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
536 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
537 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
538 public void emit(PTXAssembler asm) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
539 asm.emitString("cvt." + super.emit()); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
540 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
541 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
542 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
543 public static class Mov extends SingleOperandFormat { |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
544 |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
545 private int predicateRegisterNumber = -1; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
546 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
547 public Mov(Variable dst, Value src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
548 super(dst, src); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
549 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
550 |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
551 public Mov(Variable dst, Value src, int predicate) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
552 super(dst, src); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
553 this.predicateRegisterNumber = predicate; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
554 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
555 /* |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
556 public Mov(Variable dst, AbstractAddress src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
557 throw GraalInternalError.unimplemented("AbstractAddress Mov"); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
558 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
559 */ |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
560 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
561 public void emit(PTXAssembler asm) { |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
562 if (predicateRegisterNumber >= 0) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
563 asm.emitString("@%p" + String.valueOf(predicateRegisterNumber) |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
564 + " mov." + super.emit()); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
565 } else { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
566 asm.emitString("mov." + super.emit()); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
567 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
568 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
569 } |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
570 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
571 public static class Neg extends SingleOperandFormat { |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
572 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
573 public Neg(Variable dst, Variable src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
574 super(dst, src); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
575 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
576 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
577 public void emit(PTXAssembler asm) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
578 asm.emitString("neg." + super.emit()); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
579 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
580 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
581 |
11896
280f97f13d54
Fixes to PTX control flow logic
Morris Meyer <morris.meyer@oracle.com>
parents:
11894
diff
changeset
|
582 public static class Not extends BinarySingleOperandFormat { |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
583 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
584 public Not(Variable dst, Variable src) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
585 super(dst, src); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
586 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
587 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
588 public void emit(PTXAssembler asm) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
589 asm.emitString("not." + super.emit()); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
590 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
591 } |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
592 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
593 public static class Ld extends LoadStoreFormat { |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
594 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
595 public Ld(PTXStateSpace space, Variable dst, Variable src1, Value src2) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
596 super(space, dst, src1, src2); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
597 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
598 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
599 public void emit(PTXAssembler asm) { |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
600 asm.emitString("ld." + super.emit(true)); |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
601 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
602 } |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
603 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
604 public static class St extends LoadStoreFormat { |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
605 |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
606 public St(PTXStateSpace space, Variable dst, Variable src1, Value src2) { |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
607 super(space, dst, src1, src2); |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
608 } |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
609 |
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
610 public void emit(PTXAssembler asm) { |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
611 asm.emitString("st." + super.emit(false)); |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
612 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
613 } |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
614 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
615 public final void exit() { |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
616 emitString("exit;" + " " + ""); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
617 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
618 |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
619 public static class Global { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
620 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
621 private Kind kind; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
622 private String name; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
623 private LabelRef[] targets; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
624 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
625 public Global(Value val, String name, LabelRef[] targets) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
626 this.kind = val.getKind(); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
627 this.name = name; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
628 this.targets = targets; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
629 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
630 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
631 private static String valueForKind(Kind k) { |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
632 switch (k.getTypeChar()) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
633 case 'i': |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
634 return "s32"; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
635 case 'j': |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
636 return "s64"; |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
637 default: |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
638 throw GraalInternalError.shouldNotReachHere(); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
639 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
640 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
641 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
642 private static String emitTargets(PTXAssembler asm, LabelRef[] refs) { |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
643 StringBuffer sb = new StringBuffer(); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
644 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
645 for (int i = 0; i < refs.length; i++) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
646 sb.append(asm.nameOf(refs[i].label())); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
647 if (i < (refs.length -1)) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
648 sb.append(", "); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
649 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
650 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
651 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
652 return sb.toString(); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
653 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
654 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
655 public void emit(PTXAssembler asm) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
656 asm.emitString(".global ." + valueForKind(kind) + |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
657 " " + name + "[" + targets.length + "] = " + |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
658 "{ " + emitTargets(asm, targets) + " };"); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
659 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
660 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
661 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
662 public static class Param extends SingleOperandFormat { |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
663 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
664 private boolean lastParameter; |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
665 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
666 public Param(Variable d, boolean lastParam) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
667 super(d, null); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
668 setLastParameter(lastParam); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
669 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
670 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
671 public void setLastParameter(boolean value) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
672 lastParameter = value; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
673 } |
11485
49bb1bc983c6
Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents:
10513
diff
changeset
|
674 |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
675 public String emitParameter(Variable v) { |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
676 return (" %r" + v.index); |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
677 } |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
678 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
679 public void emit(PTXAssembler asm) { |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
680 asm.emitString(".param ." + paramForKind(dest.getKind()) + emitParameter(dest) + (lastParameter ? "" : ",")); |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
681 } |
11894
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
682 |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
683 public String paramForKind(Kind k) { |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
684 switch (k.getTypeChar()) { |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
685 case 'z': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
686 case 'f': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
687 return "s32"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
688 case 'b': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
689 return "s8"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
690 case 's': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
691 return "s16"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
692 case 'c': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
693 return "u16"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
694 case 'i': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
695 return "s32"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
696 case 'j': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
697 return "s64"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
698 case 'd': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
699 return "f64"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
700 case 'a': |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
701 return "u64"; |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
702 default: |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
703 throw GraalInternalError.shouldNotReachHere(); |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
704 } |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
705 } |
c7abc8411011
Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents:
11822
diff
changeset
|
706 |
11485
49bb1bc983c6
Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents:
10513
diff
changeset
|
707 } |
49bb1bc983c6
Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents:
10513
diff
changeset
|
708 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
709 public final void popc_b32(Register d, Register a) { |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
710 emitString("popc.b32" + " " + "%r" + d.encoding() + ", %r" + a.encoding() + ";" + ""); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
711 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
712 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
713 public final void popc_b64(Register d, Register a) { |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
714 emitString("popc.b64" + " " + "%r" + d.encoding() + ", %r" + a.encoding() + ";" + ""); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
715 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
716 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
717 public final void ret() { |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
718 emitString("ret;" + " " + ""); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
719 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
720 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
721 public final void ret_uni() { |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
722 emitString("ret.uni;" + " " + ""); |
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
723 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
724 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
725 public enum BooleanOperator { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
726 AND("and"), |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
727 OR("or"), |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
728 XOR("xor"); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
729 |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
730 private final String output; |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
731 |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
732 private BooleanOperator(String out) { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
733 this.output = out; |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
734 } |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
735 |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
736 public String getOperator() { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
737 return output + "."; |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
738 } |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
739 } |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
740 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
741 public static class Setp { |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
742 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
743 |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
744 private BooleanOperator booleanOperator; |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
745 private ConditionOperator operator; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
746 private Value first, second; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
747 private Kind kind; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
748 private int predicate; |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
749 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
750 public Setp(Condition condition, |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
751 Value first, Value second, |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
752 int predicateRegisterNumber) { |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
753 setFirst(first); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
754 setSecond(second); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
755 setPredicate(predicateRegisterNumber); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
756 setKind(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
757 setConditionOperator(operatorForConditon(condition)); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
758 } |
8995
585cc62fcdc5
PTX enhancements - arithmetic, control, float, integer math, control and basic switch
Morris Meyer <morris.meyer@oracle.com>
parents:
8170
diff
changeset
|
759 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
760 public Setp(Condition condition, BooleanOperator operator, |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
761 Value first, Value second, |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
762 int predicateRegisterNumber) { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
763 setFirst(first); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
764 setSecond(second); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
765 setPredicate(predicateRegisterNumber); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
766 setKind(); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
767 setConditionOperator(operatorForConditon(condition)); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
768 setBooleanOperator(operator); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
769 } |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
770 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
771 public void setFirst(Value v) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
772 first = v; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
773 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
774 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
775 public void setSecond(Value v) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
776 second = v; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
777 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
778 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
779 public void setPredicate(int p) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
780 predicate = p; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
781 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
782 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
783 public void setConditionOperator(ConditionOperator co) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
784 operator = co; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
785 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
786 |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
787 public void setBooleanOperator(BooleanOperator bo) { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
788 booleanOperator = bo; |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
789 } |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
790 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
791 private ConditionOperator operatorForConditon(Condition condition) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
792 char typeChar = kind.getTypeChar(); |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
793 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
794 switch (typeChar) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
795 case 'z': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
796 case 'c': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
797 case 'a': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
798 // unsigned |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
799 switch (condition) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
800 case EQ: return ConditionOperator.U_EQ; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
801 case NE: return ConditionOperator.U_NE; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
802 case LT: return ConditionOperator.U_LO; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
803 case LE: return ConditionOperator.U_LS; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
804 case GT: return ConditionOperator.U_HI; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
805 case GE: return ConditionOperator.U_HS; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
806 default: |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
807 throw GraalInternalError.shouldNotReachHere(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
808 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
809 case 'b': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
810 case 's': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
811 case 'i': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
812 case 'j': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
813 // signed |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
814 switch (condition) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
815 case EQ: return ConditionOperator.S_EQ; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
816 case NE: return ConditionOperator.S_NE; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
817 case LT: return ConditionOperator.S_LT; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
818 case LE: return ConditionOperator.S_LE; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
819 case GT: return ConditionOperator.S_GT; |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
820 case GE: |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
821 case AE: |
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
822 return ConditionOperator.S_GE; |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
823 default: |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
824 throw GraalInternalError.shouldNotReachHere(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
825 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
826 case 'f': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
827 case 'd': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
828 // floating point - do these need to accept NaN?? |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
829 switch (condition) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
830 case EQ: return ConditionOperator.F_EQ; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
831 case NE: return ConditionOperator.F_NE; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
832 case LT: return ConditionOperator.F_LT; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
833 case LE: return ConditionOperator.F_LE; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
834 case GT: return ConditionOperator.F_GT; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
835 case GE: return ConditionOperator.F_GE; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
836 default: |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
837 throw GraalInternalError.shouldNotReachHere(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
838 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
839 default: |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
840 throw GraalInternalError.shouldNotReachHere(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
841 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
842 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
843 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
844 public void setKind() { |
11775
b04b94b71649
Finished PTX assembler and Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11736
diff
changeset
|
845 // assert isConstant(first) && isConstant(second) == false; |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
846 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
847 if (isConstant(first)) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
848 kind = second.getKind(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
849 } else { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
850 kind = first.getKind(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
851 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
852 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
853 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
854 public String emitValue(Value v) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
855 assert v != null; |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
856 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
857 if (isConstant(v)) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
858 return (", " + emitConstant(v)); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
859 } else { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
860 return (", " + emitVariable((Variable) v)); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
861 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
862 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
863 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
864 public String typeForKind(Kind k) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
865 switch (k.getTypeChar()) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
866 case 'z': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
867 return "u8"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
868 case 'b': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
869 return "s8"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
870 case 's': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
871 return "s16"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
872 case 'c': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
873 return "u16"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
874 case 'i': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
875 return "s32"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
876 case 'f': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
877 return "f32"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
878 case 'j': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
879 return "s64"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
880 case 'd': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
881 return "f64"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
882 case 'a': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
883 return "u64"; |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
884 default: |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
885 throw GraalInternalError.shouldNotReachHere(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
886 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
887 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
888 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
889 public String emitConstant(Value v) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
890 Constant constant = (Constant) v; |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
891 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
892 switch (v.getKind().getTypeChar()) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
893 case 'i': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
894 return (String.valueOf((int) constant.asLong())); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
895 case 'f': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
896 return (String.valueOf(constant.asFloat())); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
897 case 'j': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
898 return (String.valueOf(constant.asLong())); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
899 case 'd': |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
900 return (String.valueOf(constant.asDouble())); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
901 default: |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
902 throw GraalInternalError.shouldNotReachHere(); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
903 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
904 } |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
905 |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
906 public String emitVariable(Variable v) { |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
907 return ("%r" + v.index); |
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
908 } |
7805
0e58445d54df
Integration fixes.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7804
diff
changeset
|
909 |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
910 public void emit(PTXAssembler asm) { |
11901
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
911 |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
912 if (booleanOperator != null) { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
913 asm.emitString("setp." + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
914 operator.getOperator() + "." + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
915 booleanOperator.getOperator() + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
916 typeForKind(kind) + " %p" + predicate + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
917 emitValue(first) + emitValue(second) + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
918 ", %r;"); // Predicates need to be objects |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
919 |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
920 } else { |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
921 asm.emitString("setp." + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
922 operator.getOperator() + "." + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
923 typeForKind(kind) + " %p" + predicate + |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
924 emitValue(first) + emitValue(second) + ";"); |
61767ccd4600
PTX boolean return value, emitIntegerTestMove, warnings
Morris Meyer <morris.meyer@oracle.com>
parents:
11900
diff
changeset
|
925 } |
11736
63ca7ec7440f
PTX assembler load, store and parameter refactoring
Morris Meyer <morris.meyer@oracle.com>
parents:
11731
diff
changeset
|
926 } |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
927 } |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7805
diff
changeset
|
928 @Override |
8170
537f03d2bdf7
Removed unused parameter from AbstractAssembler.makeAddress().
Roland Schatz <roland.schatz@oracle.com>
parents:
8168
diff
changeset
|
929 public PTXAddress makeAddress(Register base, int displacement) { |
11731
d8f291981d75
PTX assembler Register -> Variable conversion
Morris Meyer <morris.meyer@oracle.com>
parents:
11699
diff
changeset
|
930 throw GraalInternalError.shouldNotReachHere(); |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7805
diff
changeset
|
931 } |
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7805
diff
changeset
|
932 |
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7805
diff
changeset
|
933 @Override |
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7805
diff
changeset
|
934 public PTXAddress getPlaceholder() { |
11821
d8659ad83fcc
PTX single-threaded array store, Warp annotation
Morris Meyer <morris.meyer@oracle.com>
parents:
11775
diff
changeset
|
935 return null; |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7805
diff
changeset
|
936 } |
11900
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
937 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
938 @Override |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
939 public void jmp(Label l) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
940 String str = nameOf(l); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
941 if (l.equals("?")) { |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
942 Thread.dumpStack(); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
943 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
944 bra(str); |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
945 } |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
946 |
1f82cda83ced
PTX conditional move, switch, if-else
Morris Meyer <morris.meyer@oracle.com>
parents:
11896
diff
changeset
|
947 |
7804
447f9ba1962b
Experimental PTX backend. Contribution by Christian Thalinger.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
948 } |