1 /* 2 * Copyright (c) 2010, 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 * @bug 6909839 27 * @summary missing unsigned compare cases for some cmoves in sparc.ad 28 * 29 * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+EliminateAutoBox -XX:AutoBoxCacheMax=20000 -Xbatch compiler.codegen.Test6909839 30 */ 31 32 package compiler.codegen; 33 34 public class Test6909839 { main(String[] args)35 public static void main(String[] args) { 36 testi(); 37 testi(); 38 testi(); 39 testui(); 40 testui(); 41 testui(); 42 testdi(); 43 testdi(); 44 testdi(); 45 testfi(); 46 testfi(); 47 testfi(); 48 49 testl(); 50 testl(); 51 testl(); 52 testul(); 53 testul(); 54 testul(); 55 testdl(); 56 testdl(); 57 testdl(); 58 testfl(); 59 testfl(); 60 testfl(); 61 62 testf(); 63 testf(); 64 testf(); 65 testuf(); 66 testuf(); 67 testuf(); 68 testdf(); 69 testdf(); 70 testdf(); 71 testff(); 72 testff(); 73 testff(); 74 75 testd(); 76 testd(); 77 testd(); 78 testud(); 79 testud(); 80 testud(); 81 testdd(); 82 testdd(); 83 testdd(); 84 testfd(); 85 testfd(); 86 testfd(); 87 88 testp(); 89 testp(); 90 testp(); 91 testup(); 92 testup(); 93 testup(); 94 testdp(); 95 testdp(); 96 testdp(); 97 testfp(); 98 testfp(); 99 testfp(); 100 } 101 testui()102 static void testui() { 103 int total = 0; 104 for (int i = 0 ; i < 10000; i++) { 105 int v = i % 4; 106 total += ((v >= 1 && v < 3) ? 1 : 2); 107 } 108 System.out.println(total); 109 } 110 testdi()111 static void testdi() { 112 int total = 0; 113 for (int i = 0 ; i < 10000; i++) { 114 int v = i % 4; 115 total += (v > 1.0) ? 1 : 2; 116 } 117 System.out.println(total); 118 } 119 testfi()120 static void testfi() { 121 int total = 0; 122 for (int i = 0 ; i < 10000; i++) { 123 int v = i % 4; 124 total += (v > 1.0f) ? 1 : 2; 125 } 126 System.out.println(total); 127 } 128 testi()129 static void testi() { 130 int total = 0; 131 for (int i = 0 ; i < 10000; i++) { 132 total += (i % 4 != 0) ? 1 : 2; 133 } 134 System.out.println(total); 135 } 136 testul()137 static void testul() { 138 long total = 0; 139 for (int i = 0 ; i < 10000; i++) { 140 int v = i % 4; 141 total += ((v >= 1 && v < 3) ? 1L : 2L); 142 } 143 System.out.println(total); 144 } 145 testdl()146 static void testdl() { 147 long total = 0; 148 for (int i = 0 ; i < 10000; i++) { 149 int v = i % 4; 150 total += (v > 1.0) ? 1L : 2L; 151 } 152 System.out.println(total); 153 } 154 testfl()155 static void testfl() { 156 long total = 0; 157 for (int i = 0 ; i < 10000; i++) { 158 int v = i % 4; 159 total += (v > 1.0f) ? 1L : 2L; 160 } 161 System.out.println(total); 162 } 163 testl()164 static void testl() { 165 long total = 0; 166 for (int i = 0 ; i < 10000; i++) { 167 total += (i % 4 != 0) ? 1L : 2L; 168 } 169 System.out.println(total); 170 } 171 testuf()172 static void testuf() { 173 float total = 0; 174 for (int i = 0 ; i < 10000; i++) { 175 int v = i % 4; 176 total += ((v >= 1 && v < 3) ? 1.0f : 2.0f); 177 } 178 System.out.println(total); 179 } 180 testdf()181 static void testdf() { 182 float total = 0; 183 for (int i = 0 ; i < 10000; i++) { 184 int v = i % 4; 185 total += (v > 0.0) ? 1.0f : 2.0f; 186 } 187 System.out.println(total); 188 } 189 testff()190 static void testff() { 191 float total = 0; 192 for (int i = 0 ; i < 10000; i++) { 193 int v = i % 4; 194 total += (v > 0.0f) ? 1.0f : 2.0f; 195 } 196 System.out.println(total); 197 } 198 testf()199 static void testf() { 200 float total = 0; 201 for (int i = 0 ; i < 10000; i++) { 202 total += (i % 4 != 0) ? 1.0f : 2.0f; 203 } 204 System.out.println(total); 205 } 206 testud()207 static void testud() { 208 double total = 0; 209 for (int i = 0 ; i < 10000; i++) { 210 int v = i % 4; 211 total += ((v >= 1 && v < 3) ? 1.0d : 2.0d); 212 } 213 System.out.println(total); 214 } 215 testdd()216 static void testdd() { 217 double total = 0; 218 for (int i = 0 ; i < 10000; i++) { 219 int v = i % 4; 220 total += (v > 1.0) ? 1.0d : 2.0d; 221 } 222 System.out.println(total); 223 } 224 testfd()225 static void testfd() { 226 double total = 0; 227 for (int i = 0 ; i < 10000; i++) { 228 int v = i % 4; 229 total += (v > 1.0f) ? 1.0d : 2.0d; 230 } 231 System.out.println(total); 232 } 233 testd()234 static void testd() { 235 double total = 0; 236 for (int i = 0 ; i < 10000; i++) { 237 total += (i % 4 != 0) ? 1.0d : 2.0d; 238 } 239 System.out.println(total); 240 } 241 testp()242 static void testp() { 243 Object a = new Object(); 244 Object b = new Object();; 245 int total = 0; 246 for (int i = 0 ; i < 10000; i++) { 247 total += ((i % 4 != 0) ? a : b).hashCode(); 248 } 249 System.out.println(total); 250 } 251 testup()252 static void testup() { 253 Object a = new Object(); 254 Object b = new Object();; 255 int total = 0; 256 for (int i = 0 ; i < 10000; i++) { 257 int v = i % 4; 258 total += ((v >= 1 && v < 3) ? a : b).hashCode(); 259 } 260 System.out.println(total); 261 } 262 testdp()263 static void testdp() { 264 Object a = new Object(); 265 Object b = new Object();; 266 int total = 0; 267 for (int i = 0 ; i < 10000; i++) { 268 int v = i % 4; 269 total += ((v > 1.0) ? a : b).hashCode(); 270 } 271 System.out.println(total); 272 } testfp()273 static void testfp() { 274 Object a = new Object(); 275 Object b = new Object();; 276 int total = 0; 277 for (int i = 0 ; i < 10000; i++) { 278 int v = i % 4; 279 total += ((v > 1.0f) ? a : b).hashCode(); 280 } 281 System.out.println(total); 282 } 283 } 284