diff -r b4441f6cfe79 -r c2304140ed64 hotspot/test/compiler/loopopts/superword/SumRed_Int.java --- a/hotspot/test/compiler/loopopts/superword/SumRed_Int.java Tue Jul 12 08:42:46 2016 +0000 +++ b/hotspot/test/compiler/loopopts/superword/SumRed_Int.java Tue Jul 12 18:24:48 2016 +0300 @@ -28,70 +28,98 @@ * @summary Add C2 x86 Superword support for scalar sum reduction optimizations : int test * @requires os.arch=="x86" | os.arch=="i386" | os.arch=="amd64" | os.arch=="x86_64" | os.arch=="aarch64" * - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=2 -XX:CompileThresholdScaling=0.1 SumRed_Int - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=2 -XX:CompileThresholdScaling=0.1 SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:+SuperWordReductions + * -XX:LoopMaxUnroll=2 + * compiler.loopopts.superword.SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:-SuperWordReductions + * -XX:LoopMaxUnroll=2 + * compiler.loopopts.superword.SumRed_Int * - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=4 -XX:CompileThresholdScaling=0.1 SumRed_Int - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=4 -XX:CompileThresholdScaling=0.1 SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:+SuperWordReductions + * -XX:LoopMaxUnroll=4 + * compiler.loopopts.superword.SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:-SuperWordReductions + * -XX:LoopMaxUnroll=4 + * compiler.loopopts.superword.SumRed_Int * - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=8 -XX:CompileThresholdScaling=0.1 SumRed_Int - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=8 -XX:CompileThresholdScaling=0.1 SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:+SuperWordReductions + * -XX:LoopMaxUnroll=8 + * compiler.loopopts.superword.SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:-SuperWordReductions + * -XX:LoopMaxUnroll=8 + * compiler.loopopts.superword.SumRed_Int * - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=16 -XX:CompileThresholdScaling=0.1 SumRed_Int - * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:-SuperWordReductions -XX:LoopUnrollLimit=250 -XX:LoopMaxUnroll=16 -XX:CompileThresholdScaling=0.1 SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:+SuperWordReductions + * -XX:LoopMaxUnroll=16 + * compiler.loopopts.superword.SumRed_Int + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 + * -XX:CompileThresholdScaling=0.1 + * -XX:-SuperWordReductions + * -XX:LoopMaxUnroll=16 + * compiler.loopopts.superword.SumRed_Int */ -public class SumRed_Int -{ - public static void main(String[] args) throws Exception { - int[] a = new int[256*1024]; - int[] b = new int[256*1024]; - int[] c = new int[256*1024]; - int[] d = new int[256*1024]; - sumReductionInit(a,b,c); - int total = 0; - int valid = 262144000; - for(int j = 0; j < 2000; j++) { - total = sumReductionImplement(a,b,c,d,total); +package compiler.loopopts.superword; + +public class SumRed_Int { + public static void main(String[] args) throws Exception { + int[] a = new int[256 * 1024]; + int[] b = new int[256 * 1024]; + int[] c = new int[256 * 1024]; + int[] d = new int[256 * 1024]; + sumReductionInit(a, b, c); + int total = 0; + int valid = 262144000; + for (int j = 0; j < 2000; j++) { + total = sumReductionImplement(a, b, c, d, total); + } + if (total == valid) { + System.out.println("Success"); + } else { + System.out.println("Invalid sum of elements variable in total: " + total); + System.out.println("Expected value = " + valid); + throw new Exception("Failed"); + } } - if(total == valid) { - System.out.println("Success"); - } else { - System.out.println("Invalid sum of elements variable in total: " + total); - System.out.println("Expected value = " + valid); - throw new Exception("Failed"); - } - } - public static void sumReductionInit( - int[] a, - int[] b, - int[] c) - { - for(int j = 0; j < 1; j++) - { - for(int i = 0; i < a.length; i++) - { - a[i] = i * 1 + j; - b[i] = i * 1 - j; - c[i] = i + j; - } + public static void sumReductionInit( + int[] a, + int[] b, + int[] c) { + for (int j = 0; j < 1; j++) { + for (int i = 0; i < a.length; i++) { + a[i] = i * 1 + j; + b[i] = i * 1 - j; + c[i] = i + j; + } + } } - } - public static int sumReductionImplement( - int[] a, - int[] b, - int[] c, - int[] d, - int total) - { - for(int i = 0; i < a.length; i++) - { - d[i]= (a[i] * b[i]) + (a[i] * c[i]) + (b[i] * c[i]); - total += d[i]; + public static int sumReductionImplement( + int[] a, + int[] b, + int[] c, + int[] d, + int total) { + for (int i = 0; i < a.length; i++) { + d[i] = (a[i] * b[i]) + (a[i] * c[i]) + (b[i] * c[i]); + total += d[i]; + } + return total; } - return total; - } }