annotate graal/com.oracle.graal.sparc/src/com/oracle/graal/sparc/SPARC.java @ 10854:e1fcdda22831

SPARC: can compile some stubs now but they don't work yet
author twisti
date Mon, 22 Jul 2013 22:26:49 -0700
parents 73122b5edf6a
children ea308a63760b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
1 /*
9816
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
2 * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
4 *
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
8 *
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
13 * accompanied this code).
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
14 *
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
18 *
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
21 * questions.
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
22 */
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
23 package com.oracle.graal.sparc;
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
24
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
25 import static com.oracle.graal.api.code.MemoryBarriers.*;
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
26
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
27 import java.nio.*;
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
28
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
29 import com.oracle.graal.api.code.*;
9425
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
30 import com.oracle.graal.api.code.Register.RegisterCategory;
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
31 import com.oracle.graal.api.meta.*;
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
32
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
33 /**
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
34 * Represents the SPARC architecture.
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
35 */
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
36 public class SPARC extends Architecture {
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
37
9816
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
38 // @formatter:off
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
39
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
40 public static final RegisterCategory CPU = new RegisterCategory("CPU");
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
41 public static final RegisterCategory FPU = new RegisterCategory("FPU");
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
42
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
43 // General purpose registers
10854
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
44 public static final Register r0 = new Register(0, 0, "g0", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
45 public static final Register r1 = new Register(1, 1, "g1", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
46 public static final Register r2 = new Register(2, 2, "g2", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
47 public static final Register r3 = new Register(3, 3, "g3", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
48 public static final Register r4 = new Register(4, 4, "g4", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
49 public static final Register r5 = new Register(5, 5, "g5", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
50 public static final Register r6 = new Register(6, 6, "g6", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
51 public static final Register r7 = new Register(7, 7, "g7", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
52 public static final Register r8 = new Register(8, 8, "o0", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
53 public static final Register r9 = new Register(9, 9, "o1", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
54 public static final Register r10 = new Register(10, 10, "o2", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
55 public static final Register r11 = new Register(11, 11, "o3", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
56 public static final Register r12 = new Register(12, 12, "o4", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
57 public static final Register r13 = new Register(13, 13, "o5", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
58 public static final Register r14 = new Register(14, 14, "o6", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
59 public static final Register r15 = new Register(15, 15, "o7", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
60 public static final Register r16 = new Register(16, 16, "l0", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
61 public static final Register r17 = new Register(17, 17, "l1", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
62 public static final Register r18 = new Register(18, 18, "l2", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
63 public static final Register r19 = new Register(19, 19, "l3", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
64 public static final Register r20 = new Register(20, 20, "l4", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
65 public static final Register r21 = new Register(21, 21, "l5", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
66 public static final Register r22 = new Register(22, 22, "l6", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
67 public static final Register r23 = new Register(23, 23, "l7", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
68 public static final Register r24 = new Register(24, 24, "i0", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
69 public static final Register r25 = new Register(25, 25, "i1", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
70 public static final Register r26 = new Register(26, 26, "i2", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
71 public static final Register r27 = new Register(27, 27, "i3", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
72 public static final Register r28 = new Register(28, 28, "i4", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
73 public static final Register r29 = new Register(29, 29, "i5", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
74 public static final Register r30 = new Register(30, 30, "i6", CPU);
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10686
diff changeset
75 public static final Register r31 = new Register(31, 31, "i7", CPU);
9816
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
76
9844
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
77 public static final Register g0 = r0;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
78 public static final Register g1 = r1;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
79 public static final Register g2 = r2;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
80 public static final Register g3 = r3;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
81 public static final Register g4 = r4;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
82 public static final Register g5 = r5;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
83 public static final Register g6 = r6;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
84 public static final Register g7 = r7;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
85
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
86 public static final Register o0 = r8;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
87 public static final Register o1 = r9;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
88 public static final Register o2 = r10;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
89 public static final Register o3 = r11;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
90 public static final Register o4 = r12;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
91 public static final Register o5 = r13;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
92 public static final Register o6 = r14;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
93 public static final Register o7 = r15;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
94
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
95 public static final Register l0 = r16;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
96 public static final Register l1 = r17;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
97 public static final Register l2 = r18;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
98 public static final Register l3 = r19;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
99 public static final Register l4 = r20;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
100 public static final Register l5 = r21;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
101 public static final Register l6 = r22;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
102 public static final Register l7 = r23;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
103
9844
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
104 public static final Register i0 = r24;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
105 public static final Register i1 = r25;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
106 public static final Register i2 = r26;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
107 public static final Register i3 = r27;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
108 public static final Register i4 = r28;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
109 public static final Register i5 = r29;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
110 public static final Register i6 = r30;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
111 public static final Register i7 = r31;
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
112
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
113 public static final Register fp = i6;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
114 public static final Register sp = o6;
9844
2d1687e63484 SPARCMacroAssembler and synthetic instructions
Morris Meyer <morris.meyer@oracle.com>
parents: 9816
diff changeset
115
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
116 public static final Register[] cpuRegisters = {
9816
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
117 r0, r1, r2, r3, r4, r5, r6, r7,
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
118 r8, r9, r10, r11, r12, r13, r14, r15,
9816
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
119 r16, r17, r18, r19, r20, r21, r22, r23,
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
120 r24, r25, r26, r27, r28, r29, r30, r31
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
121 };
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
122
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
123 // Floating point registers
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
124 public static final Register f0 = new Register(32, 0, "f0", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
125 public static final Register f1 = new Register(33, 1, "f1", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
126 public static final Register f2 = new Register(34, 2, "f2", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
127 public static final Register f3 = new Register(35, 3, "f3", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
128 public static final Register f4 = new Register(36, 4, "f4", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
129 public static final Register f5 = new Register(37, 5, "f5", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
130 public static final Register f6 = new Register(38, 6, "f6", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
131 public static final Register f7 = new Register(39, 7, "f7", FPU);
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
132
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
133 public static final Register[] allRegisters = {
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
134 // CPU
9816
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
135 r0, r1, r2, r3, r4, r5, r6, r7,
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
136 r8, r9, r10, r11, r12, r13, r14, r15,
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
137 r16, r17, r18, r19, r20, r21, r22, r23,
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
138 r24, r25, r26, r27, r28, r29, r30, r31,
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
139 // FPU
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
140 f0, f1, f2, f3, f4, f5, f6, f7,
4e9854086532 Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents: 9695
diff changeset
141 };
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
142
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
143 // @formatter:on
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
144
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
145 public SPARC() {
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
146 // The return address doesn't have an extra slot in the frame so we pass 0 for the return
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
147 // address size.
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
148 super("SPARC", 8, ByteOrder.BIG_ENDIAN, allRegisters, LOAD_STORE | STORE_STORE, 1, r31.encoding + 1, 0);
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
149 }
9425
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
150
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
151 @Override
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
152 public boolean canStoreValue(RegisterCategory category, PlatformKind platformKind) {
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
153 if (!(platformKind instanceof Kind)) {
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
154 return false;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
155 }
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
156
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
157 Kind kind = (Kind) platformKind;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
158 if (category == CPU) {
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
159 switch (kind) {
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
160 case Boolean:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
161 case Byte:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
162 case Char:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
163 case Short:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
164 case Int:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
165 case Long:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
166 case Object:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
167 return true;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
168 }
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
169 } else if (category == FPU) {
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
170 switch (kind) {
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
171 case Float:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
172 case Double:
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
173 return true;
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
174 }
f78079947084 some basic SPARC arithmetic works
twisti
parents: 9844
diff changeset
175 }
9425
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
176 return false;
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
177 }
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
178
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
179 @Override
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
180 public PlatformKind getLargestStorableKind(RegisterCategory category) {
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
181 if (category == CPU) {
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
182 return Kind.Long;
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
183 } else if (category == FPU) {
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
184 return Kind.Double;
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
185 } else {
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
186 return Kind.Illegal;
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
187 }
9425
3ec29630cfb4 Use register categories instead of register flags.
Roland Schatz <roland.schatz@oracle.com>
parents: 7740
diff changeset
188 }
7740
5f8101629080 Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
189 }