annotate jvmci/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotRegisterConfig.java @ 22679:4688478ecb7b

Make space in frame for native callee to spill outgoing parameters
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Tue, 13 Oct 2015 17:07:59 +0200
parents 1bbd4a7c274b
children c278790fa252
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
1 /*
22536
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
2 * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
4 *
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
7 * published by the Free Software Foundation.
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
8 *
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
13 * accompanied this code).
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
14 *
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
18 *
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
21 * questions.
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
22 */
22672
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
23 package jdk.vm.ci.hotspot.sparc;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
24
22672
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
25 import static jdk.vm.ci.sparc.SPARC.FPUd;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
26 import static jdk.vm.ci.sparc.SPARC.FPUs;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
27 import static jdk.vm.ci.sparc.SPARC.d0;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
28 import static jdk.vm.ci.sparc.SPARC.d2;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
29 import static jdk.vm.ci.sparc.SPARC.d32;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
30 import static jdk.vm.ci.sparc.SPARC.d34;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
31 import static jdk.vm.ci.sparc.SPARC.d36;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
32 import static jdk.vm.ci.sparc.SPARC.d38;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
33 import static jdk.vm.ci.sparc.SPARC.d4;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
34 import static jdk.vm.ci.sparc.SPARC.d40;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
35 import static jdk.vm.ci.sparc.SPARC.d42;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
36 import static jdk.vm.ci.sparc.SPARC.d44;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
37 import static jdk.vm.ci.sparc.SPARC.d46;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
38 import static jdk.vm.ci.sparc.SPARC.d48;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
39 import static jdk.vm.ci.sparc.SPARC.d50;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
40 import static jdk.vm.ci.sparc.SPARC.d52;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
41 import static jdk.vm.ci.sparc.SPARC.d54;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
42 import static jdk.vm.ci.sparc.SPARC.d56;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
43 import static jdk.vm.ci.sparc.SPARC.d58;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
44 import static jdk.vm.ci.sparc.SPARC.d6;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
45 import static jdk.vm.ci.sparc.SPARC.d60;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
46 import static jdk.vm.ci.sparc.SPARC.d62;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
47 import static jdk.vm.ci.sparc.SPARC.f0;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
48 import static jdk.vm.ci.sparc.SPARC.f1;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
49 import static jdk.vm.ci.sparc.SPARC.f10;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
50 import static jdk.vm.ci.sparc.SPARC.f11;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
51 import static jdk.vm.ci.sparc.SPARC.f12;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
52 import static jdk.vm.ci.sparc.SPARC.f13;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
53 import static jdk.vm.ci.sparc.SPARC.f14;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
54 import static jdk.vm.ci.sparc.SPARC.f15;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
55 import static jdk.vm.ci.sparc.SPARC.f16;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
56 import static jdk.vm.ci.sparc.SPARC.f17;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
57 import static jdk.vm.ci.sparc.SPARC.f18;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
58 import static jdk.vm.ci.sparc.SPARC.f19;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
59 import static jdk.vm.ci.sparc.SPARC.f2;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
60 import static jdk.vm.ci.sparc.SPARC.f20;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
61 import static jdk.vm.ci.sparc.SPARC.f21;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
62 import static jdk.vm.ci.sparc.SPARC.f22;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
63 import static jdk.vm.ci.sparc.SPARC.f23;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
64 import static jdk.vm.ci.sparc.SPARC.f24;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
65 import static jdk.vm.ci.sparc.SPARC.f25;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
66 import static jdk.vm.ci.sparc.SPARC.f26;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
67 import static jdk.vm.ci.sparc.SPARC.f27;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
68 import static jdk.vm.ci.sparc.SPARC.f28;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
69 import static jdk.vm.ci.sparc.SPARC.f29;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
70 import static jdk.vm.ci.sparc.SPARC.f3;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
71 import static jdk.vm.ci.sparc.SPARC.f30;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
72 import static jdk.vm.ci.sparc.SPARC.f31;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
73 import static jdk.vm.ci.sparc.SPARC.f4;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
74 import static jdk.vm.ci.sparc.SPARC.f5;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
75 import static jdk.vm.ci.sparc.SPARC.f6;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
76 import static jdk.vm.ci.sparc.SPARC.f7;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
77 import static jdk.vm.ci.sparc.SPARC.f8;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
78 import static jdk.vm.ci.sparc.SPARC.f9;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
79 import static jdk.vm.ci.sparc.SPARC.g1;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
80 import static jdk.vm.ci.sparc.SPARC.g2;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
81 import static jdk.vm.ci.sparc.SPARC.g3;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
82 import static jdk.vm.ci.sparc.SPARC.g4;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
83 import static jdk.vm.ci.sparc.SPARC.g5;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
84 import static jdk.vm.ci.sparc.SPARC.g6;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
85 import static jdk.vm.ci.sparc.SPARC.g7;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
86 import static jdk.vm.ci.sparc.SPARC.i0;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
87 import static jdk.vm.ci.sparc.SPARC.i1;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
88 import static jdk.vm.ci.sparc.SPARC.i2;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
89 import static jdk.vm.ci.sparc.SPARC.i3;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
90 import static jdk.vm.ci.sparc.SPARC.i4;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
91 import static jdk.vm.ci.sparc.SPARC.i5;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
92 import static jdk.vm.ci.sparc.SPARC.i6;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
93 import static jdk.vm.ci.sparc.SPARC.i7;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
94 import static jdk.vm.ci.sparc.SPARC.l0;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
95 import static jdk.vm.ci.sparc.SPARC.l1;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
96 import static jdk.vm.ci.sparc.SPARC.l2;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
97 import static jdk.vm.ci.sparc.SPARC.l3;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
98 import static jdk.vm.ci.sparc.SPARC.l4;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
99 import static jdk.vm.ci.sparc.SPARC.l5;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
100 import static jdk.vm.ci.sparc.SPARC.l6;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
101 import static jdk.vm.ci.sparc.SPARC.l7;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
102 import static jdk.vm.ci.sparc.SPARC.o0;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
103 import static jdk.vm.ci.sparc.SPARC.o1;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
104 import static jdk.vm.ci.sparc.SPARC.o2;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
105 import static jdk.vm.ci.sparc.SPARC.o3;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
106 import static jdk.vm.ci.sparc.SPARC.o4;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
107 import static jdk.vm.ci.sparc.SPARC.o5;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
108 import static jdk.vm.ci.sparc.SPARC.o7;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
109 import static jdk.vm.ci.sparc.SPARC.sp;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
110
22569
ec96f33a101d updated imports to be explicit and added checkstyle rule to forbid * imports
Doug Simon <doug.simon@oracle.com>
parents: 22557
diff changeset
111 import java.util.ArrayList;
ec96f33a101d updated imports to be explicit and added checkstyle rule to forbid * imports
Doug Simon <doug.simon@oracle.com>
parents: 22557
diff changeset
112 import java.util.Arrays;
ec96f33a101d updated imports to be explicit and added checkstyle rule to forbid * imports
Doug Simon <doug.simon@oracle.com>
parents: 22557
diff changeset
113
22672
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
114 import jdk.vm.ci.code.Architecture;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
115 import jdk.vm.ci.code.CallingConvention;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
116 import jdk.vm.ci.code.CallingConvention.Type;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
117 import jdk.vm.ci.code.Register;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
118 import jdk.vm.ci.code.RegisterAttributes;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
119 import jdk.vm.ci.code.RegisterConfig;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
120 import jdk.vm.ci.code.StackSlot;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
121 import jdk.vm.ci.code.TargetDescription;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
122 import jdk.vm.ci.common.JVMCIError;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
123 import jdk.vm.ci.hotspot.HotSpotVMConfig;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
124 import jdk.vm.ci.meta.AllocatableValue;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
125 import jdk.vm.ci.meta.JavaKind;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
126 import jdk.vm.ci.meta.JavaType;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
127 import jdk.vm.ci.meta.LIRKind;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
128 import jdk.vm.ci.meta.PlatformKind;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
129 import jdk.vm.ci.meta.Value;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
130 import jdk.vm.ci.sparc.SPARC;
1bbd4a7c274b Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22654
diff changeset
131 import jdk.vm.ci.sparc.SPARCKind;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
132
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
133 public class SPARCHotSpotRegisterConfig implements RegisterConfig {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
134
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
135 private final Architecture architecture;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
136
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
137 private final Register[] allocatable;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
138
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
139 private final RegisterAttributes[] attributesMap;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
140
22679
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
141 /**
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
142 * Does native code (C++ code) spill arguments in registers to the parent frame?
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
143 */
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
144 private final boolean addNativeRegisterArgumentSlots;
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
145
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
146 @Override
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
147 public Register[] getAllocatableRegisters() {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
148 return allocatable.clone();
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
149 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
150
20916
661ed7d3d10d RegisterConfig: rename getAllocatableRegisters(PK,R[) to filterAllocatableRegisters and remove caching from implementors.
Josef Eisl <josef.eisl@jku.at>
parents: 20913
diff changeset
151 public Register[] filterAllocatableRegisters(PlatformKind kind, Register[] registers) {
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
152 ArrayList<Register> list = new ArrayList<>();
20913
9b6ea36013c4 RegisterConfig: pass registers array to getAllocatableRegisters(PlatformKind).
Josef Eisl <josef.eisl@jku.at>
parents: 20149
diff changeset
153 for (Register reg : registers) {
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
154 if (architecture.canStoreValue(reg.getRegisterCategory(), kind)) {
16321
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
155 // Special treatment for double precision
16664
62f295bdea36 [SPARC] Fixing compare of short/char with constants, using half of single float registers as of now, otherwise it would overlap with double registers
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16654
diff changeset
156 // TODO: This is wasteful it uses only half of the registers as float.
22604
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
157 if (kind == SPARCKind.DOUBLE) {
22406
2117e8883f28 [SPARC] Determine FPU Register type via its category
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22222
diff changeset
158 if (reg.getRegisterCategory().equals(FPUd)) {
16995
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
159 list.add(reg);
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
160 }
22604
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
161 } else if (kind == SPARCKind.SINGLE) {
22406
2117e8883f28 [SPARC] Determine FPU Register type via its category
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22222
diff changeset
162 if (reg.getRegisterCategory().equals(FPUs)) {
16321
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
163 list.add(reg);
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
164 }
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
165 } else {
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
166 list.add(reg);
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
167 }
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
168 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
169 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
170
18355
9a11c4086341 size array appropriately when creating categorized register array
Doug Simon <doug.simon@oracle.com>
parents: 16995
diff changeset
171 Register[] ret = list.toArray(new Register[list.size()]);
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
172 return ret;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
173 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
174
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
175 @Override
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
176 public RegisterAttributes[] getAttributesMap() {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
177 return attributesMap.clone();
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
178 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
179
10792
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
180 private final Register[] cpuCallerParameterRegisters = {o0, o1, o2, o3, o4, o5};
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
181 private final Register[] cpuCalleeParameterRegisters = {i0, i1, i2, i3, i4, i5};
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
182
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
183 private final Register[] fpuParameterRegisters = {f0, f1, f2, f3, f4, f5, f6, f7};
20149
b1a8928fc4b9 [SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 19534
diff changeset
184 private final Register[] fpuDoubleParameterRegisters = {d0, null, d2, null, d4, null, d6, null};
16929
5dc533f7565a [SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16664
diff changeset
185 // @formatter:off
5dc533f7565a [SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16664
diff changeset
186 private final Register[] callerSaveRegisters =
19534
9299e71df12a [SPARC] Save all registers for foreign calls
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 18630
diff changeset
187 {g1, g2, g3, g4, g5, g6, g7,
9299e71df12a [SPARC] Save all registers for foreign calls
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 18630
diff changeset
188 o0, o1, o2, o3, o4, o5, o7,
16929
5dc533f7565a [SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16664
diff changeset
189 f0, f1, f2, f3, f4, f5, f6, f7,
5dc533f7565a [SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16664
diff changeset
190 f8, f9, f10, f11, f12, f13, f14, f15,
5dc533f7565a [SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16664
diff changeset
191 f16, f17, f18, f19, f20, f21, f22, f23,
16995
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
192 f24, f25, f26, f27, f28, f29, f30, f31,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
193 d32, d34, d36, d38, d40, d42, d44, d46,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
194 d48, d50, d52, d54, d56, d58, d60, d62};
16929
5dc533f7565a [SPARC] Adding registers f0...f31 to callee saved; fixing allocator test, removing direct acquisition of Unsafe from SPARCHotspotBackend
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16664
diff changeset
195 // @formatter:on
11233
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
196
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
197 /**
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
198 * Registers saved by the callee. This lists all L and I registers which are saved in the
21674
e0b5d4fcd929 moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21673
diff changeset
199 * register window.
11233
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
200 */
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
201 private final Register[] calleeSaveRegisters = {l0, l1, l2, l3, l4, l5, l6, l7, i0, i1, i2, i3, i4, i5, i6, i7};
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
202
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
203 private static Register[] initAllocatable(boolean reserveForHeapBase) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
204 Register[] registers = null;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
205 if (reserveForHeapBase) {
15345
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
206 // @formatter:off
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
207 registers = new Register[]{
10854
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10792
diff changeset
208 // TODO this is not complete
16524
a08a58d0736b [SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16430
diff changeset
209 // o7 cannot be used as register because it is always overwritten on call
a08a58d0736b [SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16430
diff changeset
210 // and the current register handler would ignore this fact if the called
a08a58d0736b [SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16430
diff changeset
211 // method still does not modify registers, in fact o7 is modified by the Call instruction
a08a58d0736b [SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16430
diff changeset
212 // There would be some extra handlin necessary to be able to handle the o7 properly for local usage
22222
1cf2b4143f3c [SPARC] Use registers g1, g4 and g5 for allocation and g3 and o7 as scratch
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22144
diff changeset
213 g1, g4, g5,
1cf2b4143f3c [SPARC] Use registers g1, g4 and g5 for allocation and g3 and o7 as scratch
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22144
diff changeset
214 o0, o1, o2, o3, o4, o5, /*o6,o7,*/
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
215 l0, l1, l2, l3, l4, l5, l6, l7,
11233
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
216 i0, i1, i2, i3, i4, i5, /*i6,*/ /*i7,*/
16995
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
217 //f0, f1, f2, f3, f4, f5, f6, f7,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
218 f8, f9, f10, f11, f12, f13, f14, f15,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
219 f16, f17, f18, f19, f20, f21, f22, f23,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
220 f24, f25, f26, f27, f28, f29, f30, f31,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
221 d32, d34, d36, d38, d40, d42, d44, d46,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
222 d48, d50, d52, d54, d56, d58, d60, d62
15345
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
223 };
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
224 // @formatter:on
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
225 } else {
15345
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
226 // @formatter:off
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
227 registers = new Register[]{
10854
e1fcdda22831 SPARC: can compile some stubs now but they don't work yet
twisti
parents: 10792
diff changeset
228 // TODO this is not complete
22222
1cf2b4143f3c [SPARC] Use registers g1, g4 and g5 for allocation and g3 and o7 as scratch
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22144
diff changeset
229 g1, g4, g5,
16524
a08a58d0736b [SPARC] Emit compareAndSwap for AtomicInteger and AtomicLong, Removing o7 register from usable ones, as this register is always overwritten, when using Call or JumpAndLink instructions in SPARC, even callee does not overwrite explicitly, implicit exception is defined when doing integer division, parameter constraint narrowed to only register on Unary2Op, Fix SPARCTestOp, as it did a compare instead of an and with condition codes
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16430
diff changeset
230 o0, o1, o2, o3, o4, o5, /*o6, o7,*/
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
231 l0, l1, l2, l3, l4, l5, l6, l7,
11233
5a9d68c3a7d7 SPARC: a lot of fixes and more
twisti
parents: 10871
diff changeset
232 i0, i1, i2, i3, i4, i5, /*i6,*/ /*i7,*/
16995
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
233 // f0, f1, f2, f3, f4, f5, f6, f7
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
234 f8, f9, f10, f11, f12, f13, f14, f15,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
235 f16, f17, f18, f19, f20, f21, f22, f23,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
236 f24, f25, f26, f27, f28, f29, f30, f31,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
237 d32, d34, d36, d38, d40, d42, d44, d46,
4feac7e51f42 [SPARC] Fixing float register allocation
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 16932
diff changeset
238 d48, d50, d52, d54, d56, d58, d60, d62
15345
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
239 };
109d6c7c40b5 implement SPARC uncommon trap stub
twisti
parents: 15259
diff changeset
240 // @formatter:on
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
241 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
242
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
243 return registers;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
244 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
245
14559
883fbd3e06e0 Make size of PlatformKind overridable by VM specific code.
Roland Schatz <roland.schatz@oracle.com>
parents: 14003
diff changeset
246 public SPARCHotSpotRegisterConfig(TargetDescription target, HotSpotVMConfig config) {
22679
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
247 this(target, initAllocatable(config.useCompressedOops), config);
15011
c8e575742f36 allow compilation with custom RegisterConfig
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14991
diff changeset
248 }
c8e575742f36 allow compilation with custom RegisterConfig
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14991
diff changeset
249
22679
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
250 public SPARCHotSpotRegisterConfig(TargetDescription target, Register[] allocatable, HotSpotVMConfig config) {
14559
883fbd3e06e0 Make size of PlatformKind overridable by VM specific code.
Roland Schatz <roland.schatz@oracle.com>
parents: 14003
diff changeset
251 this.architecture = target.arch;
15011
c8e575742f36 allow compilation with custom RegisterConfig
Lukas Stadler <lukas.stadler@oracle.com>
parents: 14991
diff changeset
252 this.allocatable = allocatable.clone();
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
253 attributesMap = RegisterAttributes.createMap(this, SPARC.allRegisters);
22679
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
254 this.addNativeRegisterArgumentSlots = config.linuxOs;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
255 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
256
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
257 @Override
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
258 public Register[] getCallerSaveRegisters() {
10686
73122b5edf6a SPARC: Can compile simple methods and do static calls.
twisti
parents: 10459
diff changeset
259 return callerSaveRegisters;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
260 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
261
22431
0a0c0111ecda Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents: 22406
diff changeset
262 public Register[] getCalleeSaveRegisters() {
0a0c0111ecda Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents: 22406
diff changeset
263 return calleeSaveRegisters;
0a0c0111ecda Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents: 22406
diff changeset
264 }
0a0c0111ecda Remove unused class CalleeSaveLayout.
Roland Schatz <roland.schatz@oracle.com>
parents: 22406
diff changeset
265
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
266 @Override
14614
abf7cf57df5e added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents: 14559
diff changeset
267 public boolean areAllAllocatableRegistersCallerSaved() {
abf7cf57df5e added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents: 14559
diff changeset
268 return false;
abf7cf57df5e added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents: 14559
diff changeset
269 }
abf7cf57df5e added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents: 14559
diff changeset
270
abf7cf57df5e added RegisterConfig.areAllAllocatableRegistersCallerSaved()
Doug Simon <doug.simon@oracle.com>
parents: 14559
diff changeset
271 @Override
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
272 public Register getRegisterForRole(int index) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
273 throw new UnsupportedOperationException();
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
274 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
275
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
276 @Override
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
277 public CallingConvention getCallingConvention(Type type, JavaType returnType, JavaType[] parameterTypes, TargetDescription target, boolean stackOnly) {
10792
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
278 if (type == Type.JavaCall || type == Type.NativeCall) {
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
279 return callingConvention(cpuCallerParameterRegisters, returnType, parameterTypes, type, target, stackOnly);
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
280 }
10792
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
281 if (type == Type.JavaCallee) {
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
282 return callingConvention(cpuCalleeParameterRegisters, returnType, parameterTypes, type, target, stackOnly);
7a8d6ba83a04 SPARC: fixes and more stuff works
twisti
parents: 10686
diff changeset
283 }
21543
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21526
diff changeset
284 throw JVMCIError.shouldNotReachHere();
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
285 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
286
22536
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
287 public Register[] getCallingConventionRegisters(Type type, JavaKind kind) {
22604
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
288 switch (kind) {
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
289 case Boolean:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
290 case Byte:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
291 case Short:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
292 case Char:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
293 case Int:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
294 case Long:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
295 case Object:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
296 return type == Type.JavaCallee ? cpuCalleeParameterRegisters : cpuCallerParameterRegisters;
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
297 case Double:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
298 case Float:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
299 return fpuParameterRegisters;
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
300 default:
479228019e48 [SPARC] Remove JavaKind dependency
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22594
diff changeset
301 throw JVMCIError.shouldNotReachHere("Unknown JavaKind " + kind);
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
302 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
303 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
304
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
305 private CallingConvention callingConvention(Register[] generalParameterRegisters, JavaType returnType, JavaType[] parameterTypes, Type type, TargetDescription target, boolean stackOnly) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
306 AllocatableValue[] locations = new AllocatableValue[parameterTypes.length];
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
307
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
308 int currentGeneral = 0;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
309 int currentFloating = 0;
16637
eda09bc52ab9 [SPARC] Fix handling of overflow parameter on stack.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16634
diff changeset
310 int currentStackOffset = 0;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
311
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
312 for (int i = 0; i < parameterTypes.length; i++) {
22536
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
313 final JavaKind kind = parameterTypes[i].getJavaKind().getStackKind();
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
314
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
315 switch (kind) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
316 case Byte:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
317 case Boolean:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
318 case Short:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
319 case Char:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
320 case Int:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
321 case Long:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
322 case Object:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
323 if (!stackOnly && currentGeneral < generalParameterRegisters.length) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
324 Register register = generalParameterRegisters[currentGeneral++];
16094
c0b8d395368b Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents: 15345
diff changeset
325 locations[i] = register.asValue(target.getLIRKind(kind));
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
326 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
327 break;
16321
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
328 case Double:
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
329 if (!stackOnly && currentFloating < fpuParameterRegisters.length) {
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
330 if (currentFloating % 2 != 0) {
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
331 // Make register number even to be a double reg
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
332 currentFloating++;
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
333 }
20149
b1a8928fc4b9 [SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 19534
diff changeset
334 Register register = fpuDoubleParameterRegisters[currentFloating];
16321
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
335 currentFloating += 2; // Only every second is a double register
16327
5f01f7c48d40 Merge with 5cdcb94a7cf7d9782107cc582f3e4b50000d5d1f
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16321 16094
diff changeset
336 locations[i] = register.asValue(target.getLIRKind(kind));
16321
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
337 }
fac4af29aeb8 [SPARC] Fixing lots of float and double issues.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 15345
diff changeset
338 break;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
339 case Float:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
340 if (!stackOnly && currentFloating < fpuParameterRegisters.length) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
341 Register register = fpuParameterRegisters[currentFloating++];
16094
c0b8d395368b Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents: 15345
diff changeset
342 locations[i] = register.asValue(target.getLIRKind(kind));
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
343 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
344 break;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
345 default:
21543
93c50cefb9e8 moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21526
diff changeset
346 throw JVMCIError.shouldNotReachHere();
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
347 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
348
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
349 if (locations[i] == null) {
22557
0a7b7c7274be [SPARC] Fix problems introduced on refactoring Kind.Object and Value.getKind()
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22536
diff changeset
350 LIRKind lirKind = target.getLIRKind(kind);
16654
8aa938ab4ac8 [SPARC] Spill slots must be 4 byte aligned
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16637
diff changeset
351 // Stack slot is always aligned to its size in bytes but minimum wordsize
22594
355c41327aea Remove TargetDescription.getSizeInBytes method.
Roland Schatz <roland.schatz@oracle.com>
parents: 22569
diff changeset
352 int typeSize = lirKind.getPlatformKind().getSizeInBytes();
21674
e0b5d4fcd929 moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21673
diff changeset
353 currentStackOffset = roundUp(currentStackOffset, typeSize);
22144
7ae8ad713862 [SPARC] Do not preset SPARCFrameMap.initialSpillsize for register save area; set calleeSaveAreaSize correctly instead
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22054
diff changeset
354 int slotOffset = currentStackOffset + SPARC.REGISTER_SAFE_AREA_SIZE;
22557
0a7b7c7274be [SPARC] Fix problems introduced on refactoring Kind.Object and Value.getKind()
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22536
diff changeset
355 locations[i] = StackSlot.get(lirKind, slotOffset, !type.out);
16637
eda09bc52ab9 [SPARC] Fix handling of overflow parameter on stack.
Stefan Anzinger <stefan.anzinger@gmail.com>
parents: 16634
diff changeset
356 currentStackOffset += typeSize;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
357 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
358 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
359
22536
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
360 JavaKind returnKind = returnType == null ? JavaKind.Void : returnType.getJavaKind();
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
361 AllocatableValue returnLocation = returnKind == JavaKind.Void ? Value.ILLEGAL : getReturnRegister(returnKind, type).asValue(target.getLIRKind(returnKind.getStackKind()));
22679
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
362
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
363 int outArgSpillArea;
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
364 if (type == Type.NativeCall && addNativeRegisterArgumentSlots) {
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
365 // Space for native callee which may spill our outgoing arguments
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
366 outArgSpillArea = Math.min(locations.length, generalParameterRegisters.length) * target.wordSize;
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
367 } else {
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
368 outArgSpillArea = 0;
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
369 }
4688478ecb7b Make space in frame for native callee to spill outgoing parameters
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 22672
diff changeset
370 return new CallingConvention(currentStackOffset + outArgSpillArea, returnLocation, locations);
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
371 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
372
21674
e0b5d4fcd929 moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21673
diff changeset
373 private static int roundUp(int number, int mod) {
e0b5d4fcd929 moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21673
diff changeset
374 return ((number + mod - 1) / mod) * mod;
e0b5d4fcd929 moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21673
diff changeset
375 }
e0b5d4fcd929 moved HotSpotTargetDescription and [AMD64|SPARC]HotSpotRegisterConfig into JVMCI namespace (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21673
diff changeset
376
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
377 @Override
22536
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
378 public Register getReturnRegister(JavaKind kind) {
10871
c3b09d69dfde SPARC: fixes and more implementation; can now allocate objects
twisti
parents: 10854
diff changeset
379 return getReturnRegister(kind, Type.JavaCallee);
c3b09d69dfde SPARC: fixes and more implementation; can now allocate objects
twisti
parents: 10854
diff changeset
380 }
c3b09d69dfde SPARC: fixes and more implementation; can now allocate objects
twisti
parents: 10854
diff changeset
381
22536
dc1aeef79e7e Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents: 22535
diff changeset
382 private static Register getReturnRegister(JavaKind kind, Type type) {
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
383 switch (kind) {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
384 case Boolean:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
385 case Byte:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
386 case Char:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
387 case Short:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
388 case Int:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
389 case Long:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
390 case Object:
10871
c3b09d69dfde SPARC: fixes and more implementation; can now allocate objects
twisti
parents: 10854
diff changeset
391 return type == Type.JavaCallee ? i0 : o0;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
392 case Float:
20149
b1a8928fc4b9 [SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 19534
diff changeset
393 return f0;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
394 case Double:
20149
b1a8928fc4b9 [SPARC] Implement new instructions in assembler/enhance assertion error-message in MoveResolver
Stefan Anzinger <stefan.anzinger@oracle.com>
parents: 19534
diff changeset
395 return d0;
10459
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
396 case Void:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
397 case Illegal:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
398 return null;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
399 default:
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
400 throw new UnsupportedOperationException("no return register for type " + kind);
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
401 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
402 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
403
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
404 @Override
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
405 public Register getFrameRegister() {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
406 return sp;
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
407 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
408
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
409 @Override
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
410 public String toString() {
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
411 return String.format("Allocatable: " + Arrays.toString(getAllocatableRegisters()) + "%n" + "CallerSave: " + Arrays.toString(getCallerSaveRegisters()) + "%n");
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
412 }
f78079947084 some basic SPARC arithmetic works
twisti
parents:
diff changeset
413 }