1 /*
2  * Copyright (c) 2008, 2018, Oracle and/or its affiliates. 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  *
27  * @summary converted from VM Testbase jit/t/t029.
28  * VM Testbase keywords: [jit, quick]
29  *
30  * @library /vmTestbase
31  *          /test/lib
32  * @run driver jdk.test.lib.FileInstaller . .
33  * @build jit.t.t029.t029
34  * @run driver ExecDriver --java jit.t.t029.t029
35  */
36 
37 package jit.t.t029;
38 
39 import nsk.share.TestFailure;
40 import nsk.share.GoldChecker;
41 
42 // opc_drem, opc_frem, opc_dreturn opc_freturn
43 
44 class t029
45 {
46     public static final GoldChecker goldChecker = new GoldChecker( "t029" );
47 
frem(float f, float g)48     static float frem(float f, float g)
49     {
50         return f % g;
51     }
52 
drem(double d, double e)53     static double drem(double d, double e)
54     {
55         return d % e;
56     }
57 
main(String argv[])58     public static void main(String argv[])
59     {
60         double d = 39.12345, e = 402.001;
61         float f = 39.12345f, g = 402.001f;
62         double x;
63         float y;
64 
65         // Both pos.
66 
67         t029.goldChecker.println();
68         t029.goldChecker.println(d%e);
69         t029.goldChecker.println(e%(x=d));
70         t029.goldChecker.println(f%g);
71         t029.goldChecker.println(g%(y=f));
72 
73         d = -d;
74         f = -f;
75 
76         // First neg; second pos.
77 
78         t029.goldChecker.println();
79         t029.goldChecker.println(d%e);
80         t029.goldChecker.println(e%(x=d));
81         t029.goldChecker.println(f%g);
82         t029.goldChecker.println(g%(y=f));
83 
84         e = -e;
85         g = -g;
86 
87         // Both neg.
88 
89         t029.goldChecker.println();
90         t029.goldChecker.println(d%e);
91         t029.goldChecker.println(e%(x=d));
92         t029.goldChecker.println(f%g);
93         t029.goldChecker.println(g%(y=f));
94 
95         d = -d;
96         f = -f;
97 
98         // First pos; second neg;
99 
100         t029.goldChecker.println();
101         t029.goldChecker.println(d%e);
102         t029.goldChecker.println(e%(x=d));
103         t029.goldChecker.println(f%g);
104         t029.goldChecker.println(g%(y=f));
105 
106         e = -e;
107         g = -g;
108 
109         // Both pos.
110 
111         t029.goldChecker.println();
112         t029.goldChecker.println(drem(d,e));
113         t029.goldChecker.println(drem(e, x=d));
114         t029.goldChecker.println(frem(f, g));
115         t029.goldChecker.println(frem(g, y=f));
116 
117         d = -d;
118         f = -f;
119 
120         // First neg; second pos.
121 
122         t029.goldChecker.println();
123         t029.goldChecker.println(drem(d,e));
124         t029.goldChecker.println(drem(e, x=d));
125         t029.goldChecker.println(frem(f, g));
126         t029.goldChecker.println(frem(g, y=f));
127 
128         e = -e;
129         g = -g;
130 
131         // Both neg.
132 
133         t029.goldChecker.println();
134         t029.goldChecker.println(drem(d,e));
135         t029.goldChecker.println(drem(e, x=d));
136         t029.goldChecker.println(frem(f, g));
137         t029.goldChecker.println(frem(g, y=f));
138 
139         d = -d;
140         f = -f;
141 
142         // First pos; second neg.
143 
144         t029.goldChecker.println();
145         t029.goldChecker.println(drem(d,e));
146         t029.goldChecker.println(drem(e, x=d));
147         t029.goldChecker.println(frem(f, g));
148         t029.goldChecker.println(frem(g, y=f));
149         t029.goldChecker.check();
150     }
151 }
152