Mercurial > hg > graal-compiler
annotate graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCMacroAssembler.java @ 10792:7a8d6ba83a04
SPARC: fixes and more stuff works
author | twisti |
---|---|
date | Tue, 16 Jul 2013 17:41:21 -0700 |
parents | 31266ceb86ef |
children | e1fcdda22831 |
rev | line source |
---|---|
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
1 /* |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
4 * |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
8 * |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
14 * |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
18 * |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
21 * questions. |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
22 */ |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
23 package com.oracle.graal.asm.sparc; |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
24 |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
25 import static com.oracle.graal.asm.sparc.SPARCAssembler.CC.*; |
10459 | 26 import static com.oracle.graal.sparc.SPARC.*; |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
27 |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
28 import com.oracle.graal.api.code.*; |
10459 | 29 import com.oracle.graal.asm.*; |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
30 |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
31 public class SPARCMacroAssembler extends SPARCAssembler { |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
32 |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
33 /** |
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
34 * A sentinel value used as a place holder in an instruction stream for an address that will be |
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
35 * patched. |
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
36 */ |
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
37 private static final SPARCAddress Placeholder = new SPARCAddress(g0, 0); |
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
38 |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
39 public SPARCMacroAssembler(TargetDescription target, RegisterConfig registerConfig) { |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
40 super(target, registerConfig); |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
41 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
42 |
10459 | 43 @Override |
44 public void align(int modulus) { | |
45 if (codeBuffer.position() % modulus != 0) { | |
46 final int count = modulus - (codeBuffer.position() % modulus); | |
47 for (int i = 0; i < count; i++) { | |
48 new Nop().emit(this); | |
49 } | |
50 } | |
51 } | |
52 | |
53 @Override | |
54 public void jmp(Label l) { | |
55 new Bpa(l).emit(this); | |
56 new Nop().emit(this); | |
57 } | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
58 |
10459 | 59 @Override |
60 protected final void patchJumpTarget(int branch, int branchTarget) { | |
61 final int disp = branchTarget - branch; | |
62 Fmt00c fmt = Fmt00c.read(this, branch); | |
63 fmt.setDisp19(disp); | |
64 fmt.write(this, branch); | |
65 } | |
66 | |
67 @Override | |
68 public AbstractAddress makeAddress(Register base, int displacement) { | |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
69 return new SPARCAddress(base, displacement); |
10459 | 70 } |
71 | |
72 @Override | |
73 public AbstractAddress getPlaceholder() { | |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10468
diff
changeset
|
74 return Placeholder; |
10459 | 75 } |
76 | |
77 public static class Bclr extends Andn { | |
78 | |
79 public Bclr(Register src, Register dst) { | |
80 super(dst, src, dst); | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
81 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
82 |
10459 | 83 public Bclr(int simm13, Register dst) { |
84 super(dst, simm13, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
85 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
86 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
87 |
10792 | 88 public static class Bpgeu extends Bpcc { |
89 | |
90 public Bpgeu(CC cc, int simm19) { | |
91 super(cc, simm19); | |
92 } | |
93 | |
94 public Bpgeu(CC cc, Label label) { | |
95 super(cc, label); | |
96 } | |
97 } | |
98 | |
10459 | 99 public static class Bset extends Or { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
100 |
10459 | 101 public Bset(Register src, Register dst) { |
102 super(dst, src, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
103 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
104 |
10459 | 105 public Bset(int simm13, Register dst) { |
106 super(dst, simm13, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
107 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
108 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
109 |
10459 | 110 public static class Btst extends Andcc { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
111 |
10459 | 112 public Btst(Register src1, Register src2) { |
113 super(src1, src2, g0); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
114 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
115 |
10459 | 116 public Btst(Register src1, int simm13) { |
117 super(src1, simm13, g0); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
118 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
119 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
120 |
10792 | 121 public static class Cas extends Casa { |
122 | |
123 public Cas(Register src1, Register src2, Register dst) { | |
124 super(src1, src2, dst, Asi.ASI_PRIMARY); | |
125 } | |
126 } | |
127 | |
128 public static class Casx extends Casxa { | |
129 | |
130 public Casx(Register src1, Register src2, Register dst) { | |
131 super(src1, src2, dst, Asi.ASI_PRIMARY); | |
132 } | |
133 } | |
134 | |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
135 public static class Clr extends Or { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
136 |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
137 public Clr(Register dst) { |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
138 super(g0, g0, dst); |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
139 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
140 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
141 |
10459 | 142 public static class Clrb extends Stb { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
143 |
10459 | 144 public Clrb(SPARCAddress addr) { |
145 super(g0, addr); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
146 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
147 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
148 |
10459 | 149 public static class Clrh extends Sth { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
150 |
10459 | 151 public Clrh(SPARCAddress addr) { |
152 super(g0, addr); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
153 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
154 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
155 |
10459 | 156 public static class Clrx extends Stx { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
157 |
10459 | 158 public Clrx(SPARCAddress addr) { |
159 super(g0, addr); | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
160 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
161 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
162 |
10459 | 163 public static class Clruw extends Srl { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
164 |
10459 | 165 public Clruw(Register src1, Register dst) { |
166 super(src1, g0, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
167 assert src1.encoding() != dst.encoding(); |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
168 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
169 |
10459 | 170 public Clruw(Register dst) { |
171 super(dst, g0, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
172 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
173 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
174 |
10459 | 175 public static class Cmp extends Subcc { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
176 |
10459 | 177 public Cmp(Register a, Register b) { |
178 super(a, b, g0); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
179 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
180 |
10459 | 181 public Cmp(Register a, int simm13) { |
182 super(a, simm13, g0); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
183 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
184 } |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
185 |
10459 | 186 public static class Dec extends Sub { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
187 |
10459 | 188 public Dec(Register dst) { |
189 super(dst, 1, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
190 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
191 |
10459 | 192 public Dec(int simm13, Register dst) { |
193 super(dst, simm13, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
194 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
195 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
196 |
10459 | 197 public static class Deccc extends Subcc { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
198 |
10459 | 199 public Deccc(Register dst) { |
200 super(dst, 1, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
201 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
202 |
10459 | 203 public Deccc(int simm13, Register dst) { |
204 super(dst, simm13, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
205 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
206 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
207 |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
208 @SuppressWarnings("unused") |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
209 public static class Inc { |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
210 |
10459 | 211 public Inc(Register dst) { |
212 new Add(dst, 1, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
213 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
214 |
10459 | 215 public Inc(int simm13, Register dst) { |
216 new Add(dst, simm13, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
217 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
218 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
219 |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
220 @SuppressWarnings("unused") |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
221 public static class Inccc { |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
222 |
10459 | 223 public Inccc(Register dst) { |
224 new Addcc(dst, 1, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
225 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
226 |
10459 | 227 public Inccc(int simm13, Register dst) { |
228 new Addcc(dst, simm13, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
229 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
230 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
231 |
10459 | 232 public static class Jmp extends Jmpl { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
233 |
10468 | 234 public Jmp(SPARCAddress address) { |
10459 | 235 super(address.getBase(), address.getDisplacement(), g0); |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
236 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
237 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
238 |
10459 | 239 public static class Neg extends Sub { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
240 |
10459 | 241 public Neg(Register src2, Register dst) { |
242 super(g0, src2, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
243 assert src2.encoding() != dst.encoding(); |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
244 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
245 |
10459 | 246 public Neg(Register dst) { |
247 super(g0, dst, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
248 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
249 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
250 |
10459 | 251 public static class Mov extends Or { |
9949
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
252 |
10459 | 253 public Mov(Register src1, Register dst) { |
254 super(g0, src1, dst); | |
9949
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
255 assert src1.encoding() != dst.encoding(); |
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
256 } |
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
257 |
10459 | 258 public Mov(int simm13, Register dst) { |
259 super(g0, simm13, dst); | |
260 } | |
261 } | |
262 | |
263 public static class Nop extends Sethi { | |
264 | |
265 public Nop() { | |
266 super(0, r0); | |
9949
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
267 } |
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
268 } |
41511d78546a
SPARC UA 2011 assembler changes, bit manipulation synthetics
Morris Meyer <morris.meyer@oracle.com>
parents:
9846
diff
changeset
|
269 |
10459 | 270 public static class Not extends Xnor { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
271 |
10459 | 272 public Not(Register src1, Register dst) { |
273 super(src1, g0, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
274 assert src1.encoding() != dst.encoding(); |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
275 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
276 |
10459 | 277 public Not(Register dst) { |
278 super(dst, g0, dst); | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
279 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
280 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
281 |
10459 | 282 public static class RestoreWindow extends Restore { |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
283 |
10459 | 284 public RestoreWindow() { |
285 super(g0, g0, g0); | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
286 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
287 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
288 |
10459 | 289 public static class Ret extends Jmpl { |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
290 |
10459 | 291 public Ret() { |
292 super(i7, 8, g0); | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
293 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
294 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
295 |
10459 | 296 public static class SaveWindow extends Save { |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
297 |
10459 | 298 public SaveWindow() { |
299 super(g0, g0, g0); | |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
300 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
301 } |
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
302 |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
303 public static class Setuw { |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
304 |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
305 private int value; |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
306 private Register dst; |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
307 |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
308 public Setuw(int value, Register dst) { |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
309 this.value = value; |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
310 this.dst = dst; |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
311 } |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
312 |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
313 public void emit(SPARCMacroAssembler masm) { |
10459 | 314 if (value == 0) { |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
315 new Clr(dst).emit(masm); |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
316 } else if (-4095 <= value && value <= 4096) { |
10459 | 317 new Or(g0, value, dst).emit(masm); |
318 } else if (value >= 0 && ((value & 0x3FFF) == 0)) { | |
319 new Sethi(hi22(value), dst).emit(masm); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
320 } else { |
10459 | 321 new Sethi(hi22(value), dst).emit(masm); |
322 new Or(dst, lo10(value), dst).emit(masm); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
323 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
324 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
325 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
326 |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
327 public static class Setx { |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
328 |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
329 private long value; |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
330 private Register dst; |
10792 | 331 private boolean forceRelocatable; |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
332 |
10792 | 333 public Setx(long value, Register dst, boolean forceRelocatable) { |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
334 this.value = value; |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
335 this.dst = dst; |
10792 | 336 this.forceRelocatable = forceRelocatable; |
337 } | |
338 | |
339 public Setx(long value, Register dst) { | |
340 this(value, dst, false); | |
10694
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
341 } |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
342 |
31266ceb86ef
SPARC: Can compile and run two or three methods of a bootstrap.
twisti
parents:
10686
diff
changeset
|
343 public void emit(SPARCMacroAssembler masm) { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
344 int hi = (int) (value >> 32); |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
345 int lo = (int) (value & ~0); |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
346 |
10792 | 347 // if (isSimm13(lo) && value == lo) { |
348 // new Or(g0, lo, dst).emit(masm); | |
349 // } else if (hi == 0) { | |
350 // new Sethi(lo, dst).emit(masm); // hardware version zero-extends to upper 32 | |
351 // if (lo10(lo) != 0) { | |
352 // new Or(dst, lo10(lo), dst).emit(masm); | |
353 // } | |
354 // } else if (hi == -1) { | |
355 // new Sethi(~lo, dst).emit(masm); // hardware version zero-extends to upper 32 | |
356 // new Xor(dst, ~lo10(~0), dst).emit(masm); | |
357 // new Add(dst, lo10(lo), dst).emit(masm); | |
358 // } else if (lo == 0) { | |
359 // if (isSimm13(hi)) { | |
360 // new Or(g0, hi, dst).emit(masm); | |
361 // } else { | |
362 // new Sethi(hi, dst).emit(masm); // hardware version zero-extends to upper 32 | |
363 // if (lo10(hi) != 0) { | |
364 // new Or(dst, lo10(hi), dst).emit(masm); | |
365 // } | |
366 // } | |
367 // new Sllx(dst, 32, dst).emit(masm); | |
368 | |
369 // This is the same logic as MacroAssembler::internal_set. | |
370 final int startPc = masm.codeBuffer.position(); | |
371 | |
372 if (hi == 0 && lo >= 0) { | |
373 new Sethi(lo, dst).emit(masm); | |
374 } else if (hi == -1) { | |
375 new Sethi(~lo, dst).emit(masm); | |
376 new Xor(dst, ~lo10(~0), dst).emit(masm); | |
377 } else { | |
378 int shiftcnt = 0; | |
379 new Sethi(hi, dst).emit(masm); | |
380 if ((hi & 0x3ff) != 0) { // Any bits? | |
381 new Or(dst, hi & 0x3ff, dst).emit(masm); // msb 32-bits are now in lsb 32 | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
382 } |
10792 | 383 if ((lo & 0xFFFFFC00) != 0) { // done? |
384 if (((lo >> 20) & 0xfff) != 0) { // Any bits set? | |
385 new Sllx(dst, 12, dst).emit(masm); // Make room for next 12 bits | |
386 new Or(dst, (lo >> 20) & 0xfff, dst).emit(masm); // Or in next 12 | |
387 shiftcnt = 0; // We already shifted | |
388 } else { | |
389 shiftcnt = 12; | |
390 } | |
391 if (((lo >> 10) & 0x3ff) != 0) { | |
392 new Sllx(dst, shiftcnt + 10, dst).emit(masm); // Make room for last 10 bits | |
393 new Or(dst, (lo >> 10) & 0x3ff, dst).emit(masm); // Or in next 10 | |
394 shiftcnt = 0; | |
395 } else { | |
396 shiftcnt = 10; | |
397 } | |
398 new Sllx(dst, shiftcnt + 10, dst).emit(masm); // Shift leaving disp field 0'd | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
399 } else { |
10792 | 400 new Sllx(dst, 32, dst).emit(masm); |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
401 } |
10792 | 402 } |
403 // Pad out the instruction sequence so it can be patched later. | |
404 if (forceRelocatable) { | |
405 while (masm.codeBuffer.position() < (startPc + (7 * 4))) { | |
406 new Nop().emit(masm); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
407 } |
10792 | 408 } |
409 if (lo10(lo) != 0 || forceRelocatable) { | |
410 new Add(dst, lo10(lo), dst).emit(masm); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
411 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
412 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
413 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
414 |
10459 | 415 public static class Signx extends Sra { |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
416 |
10459 | 417 public Signx(Register src1, Register dst) { |
418 super(src1, g0, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
419 assert src1.encoding() != dst.encoding(); |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
420 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
421 |
10459 | 422 public Signx(Register dst) { |
423 super(dst, g0, dst); | |
9845
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
424 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
425 } |
204e8f3209e9
SPARCMacroAssembler synthetic instructions and SPARCTestOp
Morris Meyer <morris.meyer@oracle.com>
parents:
9844
diff
changeset
|
426 |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
427 @SuppressWarnings("unused") |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
428 public static class Trap { |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
429 |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
430 public Trap(SPARCAssembler asm, int trap) { |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
431 assert trap >= 0 && trap <= 0x7f; |
10459 | 432 new Ta(asm, Icc, g0, trap); |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
433 } |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
434 } |
9844
2d1687e63484
SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents:
diff
changeset
|
435 } |