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