Mercurial > hg > truffle
annotate graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCNodeLIRBuilder.java @ 18408:2c3666f44855
Truffle: initial commit of object API implementation
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Tue, 18 Nov 2014 23:19:43 +0100 |
parents | c88ab4f1f04a |
children | 79b036f0cf0b |
rev | line source |
---|---|
7740
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
1 /* |
13541 | 2 * Copyright (c) 2009, 2014, 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 |
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
24 package com.oracle.graal.compiler.sparc; |
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
25 |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10470
diff
changeset
|
26 import com.oracle.graal.api.code.*; |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
27 import com.oracle.graal.api.meta.*; |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
28 import com.oracle.graal.compiler.common.*; |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10470
diff
changeset
|
29 import com.oracle.graal.compiler.gen.*; |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
30 import com.oracle.graal.compiler.match.*; |
17177
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
31 import com.oracle.graal.lir.*; |
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
32 import com.oracle.graal.lir.StandardOp.*; |
15297
3a6151ed5a25
Move LIRGenerator to graal.lir (errors).
Josef Eisl <josef.eisl@jku.at>
parents:
15296
diff
changeset
|
33 import com.oracle.graal.lir.gen.*; |
10686
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10470
diff
changeset
|
34 import com.oracle.graal.lir.sparc.*; |
73122b5edf6a
SPARC: Can compile simple methods and do static calls.
twisti
parents:
10470
diff
changeset
|
35 import com.oracle.graal.nodes.*; |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
36 import com.oracle.graal.nodes.calc.*; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
37 import com.oracle.graal.nodes.extended.*; |
7740
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
38 |
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
39 /** |
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
40 * This class implements the SPARC specific portion of the LIR generator. |
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
41 */ |
14888
f6630873316b
Rename NodeLIRGenerator (and related classes and interfaces) to NodeLIRBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
14851
diff
changeset
|
42 public abstract class SPARCNodeLIRBuilder extends NodeLIRBuilder { |
7743
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
43 |
15333
06ecedffb109
Use LIRGeneratorTool in Backend.
Josef Eisl <josef.eisl@jku.at>
parents:
15297
diff
changeset
|
44 public SPARCNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool lirGen) { |
14921
88dfaf6448e0
Remove LIRGenerationResult from NodeLIRBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
14888
diff
changeset
|
45 super(graph, lirGen); |
10854
e1fcdda22831
SPARC: can compile some stubs now but they don't work yet
twisti
parents:
10850
diff
changeset
|
46 } |
e1fcdda22831
SPARC: can compile some stubs now but they don't work yet
twisti
parents:
10850
diff
changeset
|
47 |
e1fcdda22831
SPARC: can compile some stubs now but they don't work yet
twisti
parents:
10850
diff
changeset
|
48 @Override |
7743
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
49 protected boolean peephole(ValueNode valueNode) { |
9816
4e9854086532
Initial SPARC compilation test
Morris Meyer <morris.meyer@oracle.com>
parents:
9814
diff
changeset
|
50 // No peephole optimizations for now |
7743
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
51 return false; |
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
52 } |
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
53 |
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
54 @Override |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
55 public void visitBreakpointNode(BreakpointNode node) { |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
56 JavaType[] sig = new JavaType[node.arguments().size()]; |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
57 for (int i = 0; i < sig.length; i++) { |
14847
c132602c640e
Apply LIRGenerator refactoring to SPARC backend.
Josef Eisl <josef.eisl@jku.at>
parents:
14820
diff
changeset
|
58 sig[i] = node.arguments().get(i).stamp().javaType(gen.getMetaAccess()); |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
59 } |
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
60 |
18149
c6086a18c9ce
Rename LIRGenerationResult.getFrameMap() to getFrameMapBuilder().
Josef Eisl <josef.eisl@jku.at>
parents:
18123
diff
changeset
|
61 Value[] parameters = visitInvokeArguments(gen.getResult().getFrameMapBuilder().getRegisterConfig().getCallingConvention(CallingConvention.Type.JavaCall, null, sig, gen.target(), false), |
18123
3c7e73362d6a
Encapsulate FrameMap.registerConfig & FrameMap.target.
Josef Eisl <josef.eisl@jku.at>
parents:
17221
diff
changeset
|
62 node.arguments()); |
9846
91a1041ec905
SPARCLIRGenerator, sqrt, condition move, breakpoint op, partial bit ops
Morris Meyer <morris.meyer@oracle.com>
parents:
9845
diff
changeset
|
63 append(new SPARCBreakpointOp(parameters)); |
7743
7732a91e5f6d
Added more skeleton code to SPARC projects.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
7740
diff
changeset
|
64 } |
17177
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
65 |
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
66 @Override |
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
67 protected JumpOp newJumpOp(LabelRef ref) { |
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
68 return new SPARCJumpOp(ref); |
805a26002dc7
[SPARC] Implement stuffing of delay slots in branches and calls. Optimized the cmove for integer and fp ops
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
16573
diff
changeset
|
69 } |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
70 |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
71 protected LIRFrameState getState(Access access) { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
72 if (access instanceof DeoptimizingNode) { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
73 return state((DeoptimizingNode) access); |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
74 } |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
75 return null; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
76 } |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
77 |
17221 | 78 private ComplexMatchResult emitSignExtendMemory(Access access, int fromBits, int toBits) { |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
79 assert fromBits <= toBits && toBits <= 64; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
80 Kind toKind = null; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
81 Kind fromKind = null; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
82 if (fromBits == toBits) { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
83 return null; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
84 } else if (toBits > 32) { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
85 toKind = Kind.Long; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
86 } else if (toBits > 16) { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
87 toKind = Kind.Int; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
88 } else { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
89 toKind = Kind.Short; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
90 } |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
91 switch (fromBits) { |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
92 case 8: |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
93 fromKind = Kind.Byte; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
94 break; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
95 case 16: |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
96 fromKind = Kind.Short; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
97 break; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
98 case 32: |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
99 fromKind = Kind.Int; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
100 break; |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
101 default: |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
102 throw GraalInternalError.unimplemented("unsupported sign extension (" + fromBits + " bit -> " + toBits + " bit)"); |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
103 } |
18163
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
104 |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
105 Kind localFromKind = fromKind; |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
106 Kind localToKind = toKind; |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
107 return builder -> { |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
108 Value address = access.accessLocation().generateAddress(builder, gen, operand(access.object())); |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
109 Value v = getLIRGeneratorTool().emitLoad(LIRKind.value(localFromKind), address, getState(access)); |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
110 return getLIRGeneratorTool().emitReinterpret(LIRKind.value(localToKind), v); |
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18149
diff
changeset
|
111 }; |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
112 } |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
113 |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
114 @MatchRule("(SignExtend Read=access)") |
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
115 @MatchRule("(SignExtend FloatingRead=access)") |
17220
5eb5446a474d
[SPARC] add additional argument to pass gate
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17218
diff
changeset
|
116 public ComplexMatchResult signExtend(SignExtendNode root, Access access) { |
17221 | 117 return emitSignExtendMemory(access, root.getInputBits(), root.getResultBits()); |
17218
43a89fe3ff8b
[SPARC] Eliminate sign extension when signed load is used
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
17177
diff
changeset
|
118 } |
7740
5f8101629080
Add projects and skeletons for SPARC port.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
119 } |