Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/compiler/floatingpoint/TestFMABrokenC1RegAlloc.java
41152 views
1
/*
2
* Copyright (c) 2016, Red Hat, Inc. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/**
25
* @test
26
* @bug 8171092
27
* @summary C1's Math.fma() intrinsic doesn't correctly marks its inputs
28
* @run main/othervm -XX:-BackgroundCompilation -XX:-UseOnStackReplacement TestFMABrokenC1RegAlloc
29
*
30
*/
31
32
public class TestFMABrokenC1RegAlloc {
33
34
double dummy0;
35
double dummy1;
36
double dummy2;
37
double dummy3;
38
double dummy4;
39
double dummy5;
40
double dummy6;
41
double dummy7;
42
double dummy8;
43
double dummy9;
44
double dummy10;
45
double dummy11;
46
double dummy12;
47
double dummy13;
48
double dummy14;
49
double dummy15;
50
double dummy16;
51
double dummy17;
52
double dummy18;
53
double dummy19;
54
double dummy20;
55
double dummy21;
56
double dummy22;
57
double dummy23;
58
double dummy24;
59
double dummy25;
60
double dummy26;
61
double dummy27;
62
double dummy28;
63
double dummy29;
64
double dummy30;
65
double dummy31;
66
double dummy32;
67
double dummy33;
68
double dummy34;
69
double dummy35;
70
double dummy36;
71
double dummy37;
72
double dummy38;
73
double dummy39;
74
75
double test(double a, double b, double c) {
76
double dummy0 = this.dummy0;
77
double dummy1 = this.dummy1;
78
double dummy2 = this.dummy2;
79
double dummy3 = this.dummy3;
80
double dummy4 = this.dummy4;
81
double dummy5 = this.dummy5;
82
double dummy6 = this.dummy6;
83
double dummy7 = this.dummy7;
84
double dummy8 = this.dummy8;
85
double dummy9 = this.dummy9;
86
double dummy10 = this.dummy10;
87
double dummy11 = this.dummy11;
88
double dummy12 = this.dummy12;
89
double dummy13 = this.dummy13;
90
double dummy14 = this.dummy14;
91
double dummy15 = this.dummy15;
92
double dummy16 = this.dummy16;
93
double dummy17 = this.dummy17;
94
double dummy18 = this.dummy18;
95
double dummy19 = this.dummy19;
96
double dummy20 = this.dummy20;
97
double dummy21 = this.dummy21;
98
double dummy22 = this.dummy22;
99
double dummy23 = this.dummy23;
100
double dummy24 = this.dummy24;
101
double dummy25 = this.dummy25;
102
double dummy26 = this.dummy26;
103
double dummy27 = this.dummy27;
104
double dummy28 = this.dummy28;
105
double dummy29 = this.dummy29;
106
double dummy30 = this.dummy30;
107
double dummy31 = this.dummy31;
108
double dummy32 = this.dummy32;
109
double dummy33 = this.dummy33;
110
double dummy34 = this.dummy34;
111
double dummy35 = this.dummy35;
112
double dummy36 = this.dummy36;
113
double dummy37 = this.dummy37;
114
double dummy38 = this.dummy38;
115
double dummy39 = this.dummy39;
116
return Math.fma(a, b, c) +
117
dummy0 +
118
dummy1 +
119
dummy2 +
120
dummy3 +
121
dummy4 +
122
dummy5 +
123
dummy6 +
124
dummy7 +
125
dummy8 +
126
dummy9 +
127
dummy10 +
128
dummy11 +
129
dummy12 +
130
dummy13 +
131
dummy14 +
132
dummy15 +
133
dummy16 +
134
dummy17 +
135
dummy18 +
136
dummy19 +
137
dummy20 +
138
dummy21 +
139
dummy22 +
140
dummy23 +
141
dummy24 +
142
dummy25 +
143
dummy26 +
144
dummy27 +
145
dummy28 +
146
dummy29 +
147
dummy30 +
148
dummy31 +
149
dummy32 +
150
dummy33 +
151
dummy34 +
152
dummy35 +
153
dummy36 +
154
dummy37 +
155
dummy38 +
156
dummy39;
157
}
158
159
static public void main(String[] args) {
160
TestFMABrokenC1RegAlloc t = new TestFMABrokenC1RegAlloc();
161
for (int i = 0; i < 5000; i++) {
162
if (t.test(5.0, 10.0, 7.0) != 57.0) {
163
throw new RuntimeException("Failed");
164
}
165
}
166
}
167
}
168
169