# HG changeset patch # User yzhang # Date 1554975382 -28800 # Thu Apr 11 17:36:22 2019 +0800 # Branch vectorIntrinsics # Node ID 210317e9af2b42925e24ffc3e902ca28e3fc8e31 # Parent 21f94abc4b3247f38995a2050590a2e5306df997 8221812: Fine-tune jmh test for vector api Summary: To compare performance of vector api and auto vectorization, vector api and scalar test cases are updated to keep aligned. Reviewed-by: duke diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte128Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte128Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte128Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte128Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte256Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte256Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte256Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte256Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte512Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte512Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte512Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte512Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte64Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte64Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte64Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Byte64Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteMaxVector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteMaxVector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteMaxVector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteMaxVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { byte[] a = fa.apply(SPECIES.length()); - byte[] r = fr.apply(SPECIES.length()); byte ra = Byte.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ByteVector av = ByteVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Byte.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ByteVector av = ByteVector.fromArray(SPECIES, a, i); ra = (byte)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteScalar.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteScalar.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteScalar.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ByteScalar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class ByteScalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; @@ -72,220 +75,244 @@ @Benchmark - public Object add() { + public void add(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(a + b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(a + b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object addMasked() { + public void addMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (byte)(a + b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (byte)(a + b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object sub() { + public void sub(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(a - b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(a - b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object subMasked() { + public void subMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (byte)(a - b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (byte)(a - b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object mul() { + public void mul(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(a * b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(a * b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object mulMasked() { + public void mulMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (byte)(a * b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (byte)(a * b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object and() { + public void and(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(a & b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(a & b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object andMasked() { + public void andMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (byte)(a & b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (byte)(a & b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object or() { + public void or(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(a | b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(a | b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object orMasked() { + public void orMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (byte)(a | b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (byte)(a | b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object xor() { + public void xor(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(a ^ b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(a ^ b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object xorMasked() { + public void xorMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (byte)(a ^ b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (byte)(a ^ b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @@ -303,109 +330,121 @@ @Benchmark - public Object aShiftRShift() { + public void aShiftRShift(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)((a >> (b & 7))); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)((a >> (b & 7))); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRMaskedShift() { + public void aShiftRMaskedShift(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (byte)((a >> (b & 7))) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (byte)((a >> (b & 7))) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLShift() { + public void shiftLShift(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)((a << (b & 7))); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)((a << (b & 7))); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLMaskedShift() { + public void shiftLMaskedShift(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (byte)((a << (b & 7))) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (byte)((a << (b & 7))) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRShift() { + public void shiftRShift(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(((a & 0xFF) >>> (b & 7))); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(((a & 0xFF) >>> (b & 7))); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRMaskedShift() { + public void shiftRMaskedShift(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (byte)(((a & 0xFF) >>> (b & 7))) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (byte)(((a & 0xFF) >>> (b & 7))) : a); + } } - return rs; + bh.consume(rs); } @@ -416,273 +455,326 @@ @Benchmark - public Object max() { + public void max(Blackhole bh) { + byte[] as = fa.apply(size); + byte[] bs = fb.apply(size); + byte[] rs = fr.apply(size); + + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(Math.max(a, b)); + } + } + + bh.consume(rs); + } + + @Benchmark + public void min(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(Math.max(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + rs[i] = (byte)(Math.min(a, b)); + } } - return rs; - } - - @Benchmark - public Object min() { - byte[] as = fa.apply(size); - byte[] bs = fb.apply(size); - byte[] rs = fr.apply(size); - - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - rs[i] = (byte)(Math.min(a, b)); - } - - return rs; + bh.consume(rs); } @Benchmark - public byte andAll() { + public void andAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = -1; - for (int i = 0; i < as.length; i++) { - r &= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = -1; + for (int i = 0; i < as.length; i++) { + r &= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public byte orAll() { + public void orAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = 0; - for (int i = 0; i < as.length; i++) { - r |= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r |= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public byte xorAll() { + public void xorAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = 0; - for (int i = 0; i < as.length; i++) { - r ^= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r ^= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public byte addAll() { + public void addAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = 0; - for (int i = 0; i < as.length; i++) { - r += as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r += as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public byte mulAll() { + public void mulAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = 1; - for (int i = 0; i < as.length; i++) { - r *= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 1; + for (int i = 0; i < as.length; i++) { + r *= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public byte minAll() { + public void minAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = Byte.MAX_VALUE; - for (int i = 0; i < as.length; i++) { - r = (byte)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Byte.MAX_VALUE; + for (int i = 0; i < as.length; i++) { + r = (byte)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public byte maxAll() { + public void maxAll(Blackhole bh) { byte[] as = fa.apply(size); byte r = Byte.MIN_VALUE; - for (int i = 0; i < as.length; i++) { - r = (byte)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Byte.MIN_VALUE; + for (int i = 0; i < as.length; i++) { + r = (byte)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public boolean anyTrue() { + public void anyTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = false; - for (int i = 0; i < ms.length; i++) { - r |= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < ms.length; i++) { + r |= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean allTrue() { + public void allTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = true; - for (int i = 0; i < ms.length; i++) { - r &= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = true; + for (int i = 0; i < ms.length; i++) { + r &= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThan() { + public void lessThan(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] < bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] < bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThan() { + public void greaterThan(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] > bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] > bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean equal() { + public void equal(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] == bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] == bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean notEqual() { + public void notEqual(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] != bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] != bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThanEq() { + public void lessThanEq(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] <= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] <= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThanEq() { + public void greaterThanEq(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] >= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] >= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public Object blend() { + public void blend(Blackhole bh) { byte[] as = fa.apply(size); byte[] bs = fb.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - byte b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + byte b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { byte[] as = fa.apply(size); int[] order = fs.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - byte a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + byte a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / Byte.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / Byte.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / Byte.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / Byte.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @@ -706,90 +798,102 @@ @Benchmark - public Object neg() { + public void neg(Blackhole bh) { byte[] as = fa.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - rs[i] = (byte)(-((byte)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + rs[i] = (byte)(-((byte)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object negMasked() { + public void negMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (byte)(-((byte)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (byte)(-((byte)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object abs() { + public void abs(Blackhole bh) { byte[] as = fa.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - rs[i] = (byte)(Math.abs((byte)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + rs[i] = (byte)(Math.abs((byte)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object absMasked() { + public void absMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (byte)(Math.abs((byte)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (byte)(Math.abs((byte)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object not() { + public void not(Blackhole bh) { byte[] as = fa.apply(size); byte[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - rs[i] = (byte)(~((byte)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + rs[i] = (byte)(~((byte)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object notMasked() { + public void notMasked(Blackhole bh) { byte[] as = fa.apply(size); byte[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - byte a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (byte)(~((byte)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + byte a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (byte)(~((byte)a)) : a); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double128Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double128Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double128Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double128Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double256Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double256Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double256Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double256Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double512Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double512Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double512Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double512Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double64Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double64Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double64Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Double64Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleMaxVector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleMaxVector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleMaxVector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleMaxVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { double[] a = fa.apply(SPECIES.length()); - double[] r = fr.apply(SPECIES.length()); double ra = Double.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Double.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { DoubleVector av = DoubleVector.fromArray(SPECIES, a, i); ra = (double)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleScalar.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleScalar.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleScalar.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/DoubleScalar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class DoubleScalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; @@ -72,143 +75,159 @@ @Benchmark - public Object add() { + public void add(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(a + b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(a + b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object addMasked() { + public void addMasked(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (double)(a + b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (double)(a + b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object sub() { + public void sub(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(a - b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(a - b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object subMasked() { + public void subMasked(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (double)(a - b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (double)(a - b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object div() { + public void div(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(a / b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(a / b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object divMasked() { + public void divMasked(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (double)(a / b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (double)(a / b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object mul() { + public void mul(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(a * b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(a * b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object mulMasked() { + public void mulMasked(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (double)(a * b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (double)(a * b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @@ -242,736 +261,834 @@ @Benchmark - public Object max() { + public void max(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(Math.max(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(Math.max(a, b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object min() { + public void min(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(Math.min(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(Math.min(a, b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public double addAll() { + public void addAll(Blackhole bh) { double[] as = fa.apply(size); double r = 0; - for (int i = 0; i < as.length; i++) { - r += as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r += as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public double mulAll() { + public void mulAll(Blackhole bh) { double[] as = fa.apply(size); double r = 1; - for (int i = 0; i < as.length; i++) { - r *= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 1; + for (int i = 0; i < as.length; i++) { + r *= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public double minAll() { + public void minAll(Blackhole bh) { double[] as = fa.apply(size); double r = Double.POSITIVE_INFINITY; - for (int i = 0; i < as.length; i++) { - r = (double)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Double.POSITIVE_INFINITY; + for (int i = 0; i < as.length; i++) { + r = (double)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public double maxAll() { + public void maxAll(Blackhole bh) { double[] as = fa.apply(size); double r = Double.NEGATIVE_INFINITY; - for (int i = 0; i < as.length; i++) { - r = (double)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Double.NEGATIVE_INFINITY; + for (int i = 0; i < as.length; i++) { + r = (double)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThan() { + public void lessThan(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] < bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] < bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThan() { + public void greaterThan(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] > bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] > bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean equal() { + public void equal(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] == bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] == bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean notEqual() { + public void notEqual(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] != bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] != bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThanEq() { + public void lessThanEq(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] <= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] <= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThanEq() { + public void greaterThanEq(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] >= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] >= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public Object blend() { + public void blend(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { double[] as = fa.apply(size); int[] order = fs.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - double a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + double a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / Double.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / Double.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / Double.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / Double.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object sin() { + public void sin(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.sin((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.sin((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object exp() { + public void exp(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.exp((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.exp((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object log1p() { + public void log1p(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.log1p((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.log1p((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object log() { + public void log(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.log((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.log((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object log10() { + public void log10(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.log10((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.log10((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object expm1() { + public void expm1(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.expm1((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.expm1((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object cos() { + public void cos(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.cos((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.cos((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object tan() { + public void tan(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.tan((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.tan((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object sinh() { + public void sinh(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.sinh((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.sinh((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object cosh() { + public void cosh(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.cosh((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.cosh((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object tanh() { + public void tanh(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.tanh((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.tanh((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object asin() { + public void asin(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.asin((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.asin((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object acos() { + public void acos(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.acos((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.acos((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object atan() { + public void atan(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.atan((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.atan((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object cbrt() { + public void cbrt(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.cbrt((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.cbrt((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object hypot() { + public void hypot(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(Math.hypot((double)a, (double)b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(Math.hypot((double)a, (double)b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object pow() { + public void pow(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(Math.pow((double)a, (double)b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(Math.pow((double)a, (double)b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object atan2() { + public void atan2(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - rs[i] = (double)(Math.atan2((double)a, (double)b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + rs[i] = (double)(Math.atan2((double)a, (double)b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object fma() { + public void fma(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] cs = fc.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - double c = cs[i]; - rs[i] = (double)(Math.fma(a, b, c)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + double c = cs[i]; + rs[i] = (double)(Math.fma(a, b, c)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object fmaMasked() { + public void fmaMasked(Blackhole bh) { double[] as = fa.apply(size); double[] bs = fb.apply(size); double[] cs = fc.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - double b = bs[i]; - double c = cs[i]; - if (ms[i % ms.length]) { - rs[i] = (double)(Math.fma(a, b, c)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + double b = bs[i]; + double c = cs[i]; + if (ms[i % ms.length]) { + rs[i] = (double)(Math.fma(a, b, c)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object neg() { + public void neg(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(-((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(-((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object negMasked() { + public void negMasked(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (double)(-((double)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (double)(-((double)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object abs() { + public void abs(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.abs((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.abs((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object absMasked() { + public void absMasked(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (double)(Math.abs((double)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (double)(Math.abs((double)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object sqrt() { + public void sqrt(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - rs[i] = (double)(Math.sqrt((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + rs[i] = (double)(Math.sqrt((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object sqrtMasked() { + public void sqrtMasked(Blackhole bh) { double[] as = fa.apply(size); double[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - double a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (double)(Math.sqrt((double)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + double a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (double)(Math.sqrt((double)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object gatherBase0() { + public void gatherBase0(Blackhole bh) { double[] as = fa.apply(size); int[] is = fs.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[i] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[i] = as[ix]; + } } - return rs; + bh.consume(rs); } - Object gather(int window) { + void gather(int window, Blackhole bh) { double[] as = fa.apply(size); int[] is = fs.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[i + j] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[i + j] = as[ix]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object gather064() { + public void gather064(Blackhole bh) { int window = 64 / Double.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather128() { + public void gather128(Blackhole bh) { int window = 128 / Double.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather256() { + public void gather256(Blackhole bh) { int window = 256 / Double.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather512() { + public void gather512(Blackhole bh) { int window = 512 / Double.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object scatterBase0() { + public void scatterBase0(Blackhole bh) { double[] as = fa.apply(size); int[] is = fs.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[ix] = as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[ix] = as[i]; + } } - return rs; + bh.consume(rs); } - Object scatter(int window) { + void scatter(int window, Blackhole bh) { double[] as = fa.apply(size); int[] is = fs.apply(size); double[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[ix] = as[i + j]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[ix] = as[i + j]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object scatter064() { + public void scatter064(Blackhole bh) { int window = 64 / Double.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter128() { + public void scatter128(Blackhole bh) { int window = 128 / Double.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter256() { + public void scatter256(Blackhole bh) { int window = 256 / Double.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter512() { + public void scatter512(Blackhole bh) { int window = 512 / Double.SIZE; - return scatter(window); + scatter(window, bh); } } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float128Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float128Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float128Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float128Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float256Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float256Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float256Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float256Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float512Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float512Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float512Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float512Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float64Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float64Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float64Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Float64Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatMaxVector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatMaxVector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatMaxVector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatMaxVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -303,101 +303,61 @@ @Benchmark public void addAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.POSITIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.POSITIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { float[] a = fa.apply(SPECIES.length()); - float[] r = fr.apply(SPECIES.length()); float ra = Float.NEGATIVE_INFINITY; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - FloatVector av = FloatVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Float.NEGATIVE_INFINITY; for (int i = 0; i < a.length; i += SPECIES.length()) { FloatVector av = FloatVector.fromArray(SPECIES, a, i); ra = (float)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatScalar.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatScalar.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatScalar.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/FloatScalar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class FloatScalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; @@ -72,143 +75,159 @@ @Benchmark - public Object add() { + public void add(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(a + b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(a + b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object addMasked() { + public void addMasked(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (float)(a + b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (float)(a + b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object sub() { + public void sub(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(a - b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(a - b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object subMasked() { + public void subMasked(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (float)(a - b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (float)(a - b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object div() { + public void div(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(a / b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(a / b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object divMasked() { + public void divMasked(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (float)(a / b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (float)(a / b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object mul() { + public void mul(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(a * b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(a * b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object mulMasked() { + public void mulMasked(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (float)(a * b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (float)(a * b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @@ -242,736 +261,834 @@ @Benchmark - public Object max() { + public void max(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(Math.max(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(Math.max(a, b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object min() { + public void min(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(Math.min(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(Math.min(a, b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public float addAll() { + public void addAll(Blackhole bh) { float[] as = fa.apply(size); float r = 0; - for (int i = 0; i < as.length; i++) { - r += as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r += as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public float mulAll() { + public void mulAll(Blackhole bh) { float[] as = fa.apply(size); float r = 1; - for (int i = 0; i < as.length; i++) { - r *= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 1; + for (int i = 0; i < as.length; i++) { + r *= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public float minAll() { + public void minAll(Blackhole bh) { float[] as = fa.apply(size); float r = Float.POSITIVE_INFINITY; - for (int i = 0; i < as.length; i++) { - r = (float)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Float.POSITIVE_INFINITY; + for (int i = 0; i < as.length; i++) { + r = (float)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public float maxAll() { + public void maxAll(Blackhole bh) { float[] as = fa.apply(size); float r = Float.NEGATIVE_INFINITY; - for (int i = 0; i < as.length; i++) { - r = (float)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Float.NEGATIVE_INFINITY; + for (int i = 0; i < as.length; i++) { + r = (float)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThan() { + public void lessThan(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] < bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] < bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThan() { + public void greaterThan(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] > bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] > bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean equal() { + public void equal(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] == bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] == bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean notEqual() { + public void notEqual(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] != bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] != bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThanEq() { + public void lessThanEq(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] <= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] <= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThanEq() { + public void greaterThanEq(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] >= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] >= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public Object blend() { + public void blend(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { float[] as = fa.apply(size); int[] order = fs.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - float a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + float a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / Float.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / Float.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / Float.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / Float.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object sin() { + public void sin(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.sin((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.sin((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object exp() { + public void exp(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.exp((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.exp((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object log1p() { + public void log1p(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.log1p((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.log1p((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object log() { + public void log(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.log((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.log((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object log10() { + public void log10(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.log10((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.log10((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object expm1() { + public void expm1(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.expm1((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.expm1((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object cos() { + public void cos(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.cos((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.cos((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object tan() { + public void tan(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.tan((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.tan((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object sinh() { + public void sinh(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.sinh((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.sinh((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object cosh() { + public void cosh(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.cosh((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.cosh((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object tanh() { + public void tanh(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.tanh((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.tanh((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object asin() { + public void asin(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.asin((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.asin((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object acos() { + public void acos(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.acos((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.acos((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object atan() { + public void atan(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.atan((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.atan((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object cbrt() { + public void cbrt(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.cbrt((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.cbrt((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object hypot() { + public void hypot(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(Math.hypot((double)a, (double)b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(Math.hypot((double)a, (double)b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object pow() { + public void pow(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(Math.pow((double)a, (double)b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(Math.pow((double)a, (double)b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object atan2() { + public void atan2(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - rs[i] = (float)(Math.atan2((double)a, (double)b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + rs[i] = (float)(Math.atan2((double)a, (double)b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object fma() { + public void fma(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] cs = fc.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - float c = cs[i]; - rs[i] = (float)(Math.fma(a, b, c)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + float c = cs[i]; + rs[i] = (float)(Math.fma(a, b, c)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object fmaMasked() { + public void fmaMasked(Blackhole bh) { float[] as = fa.apply(size); float[] bs = fb.apply(size); float[] cs = fc.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - float b = bs[i]; - float c = cs[i]; - if (ms[i % ms.length]) { - rs[i] = (float)(Math.fma(a, b, c)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + float b = bs[i]; + float c = cs[i]; + if (ms[i % ms.length]) { + rs[i] = (float)(Math.fma(a, b, c)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object neg() { + public void neg(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(-((float)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(-((float)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object negMasked() { + public void negMasked(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (float)(-((float)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (float)(-((float)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object abs() { + public void abs(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.abs((float)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.abs((float)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object absMasked() { + public void absMasked(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (float)(Math.abs((float)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (float)(Math.abs((float)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object sqrt() { + public void sqrt(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - rs[i] = (float)(Math.sqrt((double)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + rs[i] = (float)(Math.sqrt((double)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object sqrtMasked() { + public void sqrtMasked(Blackhole bh) { float[] as = fa.apply(size); float[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - float a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (float)(Math.sqrt((double)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + float a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (float)(Math.sqrt((double)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object gatherBase0() { + public void gatherBase0(Blackhole bh) { float[] as = fa.apply(size); int[] is = fs.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[i] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[i] = as[ix]; + } } - return rs; + bh.consume(rs); } - Object gather(int window) { + void gather(int window, Blackhole bh) { float[] as = fa.apply(size); int[] is = fs.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[i + j] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[i + j] = as[ix]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object gather064() { + public void gather064(Blackhole bh) { int window = 64 / Float.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather128() { + public void gather128(Blackhole bh) { int window = 128 / Float.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather256() { + public void gather256(Blackhole bh) { int window = 256 / Float.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather512() { + public void gather512(Blackhole bh) { int window = 512 / Float.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object scatterBase0() { + public void scatterBase0(Blackhole bh) { float[] as = fa.apply(size); int[] is = fs.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[ix] = as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[ix] = as[i]; + } } - return rs; + bh.consume(rs); } - Object scatter(int window) { + void scatter(int window, Blackhole bh) { float[] as = fa.apply(size); int[] is = fs.apply(size); float[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[ix] = as[i + j]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[ix] = as[i + j]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object scatter064() { + public void scatter064(Blackhole bh) { int window = 64 / Float.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter128() { + public void scatter128(Blackhole bh) { int window = 128 / Float.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter256() { + public void scatter256(Blackhole bh) { int window = 256 / Float.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter512() { + public void scatter512(Blackhole bh) { int window = 512 / Float.SIZE; - return scatter(window); + scatter(window, bh); } } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int128Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int128Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int128Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int128Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int256Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int256Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int256Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int256Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int512Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int512Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int512Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int512Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int64Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int64Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int64Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Int64Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntMaxVector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntMaxVector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntMaxVector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntMaxVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { int[] a = fa.apply(SPECIES.length()); - int[] r = fr.apply(SPECIES.length()); int ra = Integer.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - IntVector av = IntVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Integer.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { IntVector av = IntVector.fromArray(SPECIES, a, i); ra = (int)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntScalar.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntScalar.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntScalar.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/IntScalar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class IntScalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; @@ -72,442 +75,490 @@ @Benchmark - public Object add() { + public void add(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(a + b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(a + b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object addMasked() { + public void addMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)(a + b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)(a + b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object sub() { + public void sub(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(a - b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(a - b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object subMasked() { + public void subMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)(a - b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)(a - b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object mul() { + public void mul(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(a * b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(a * b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object mulMasked() { + public void mulMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)(a * b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)(a * b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object and() { + public void and(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(a & b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(a & b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object andMasked() { + public void andMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)(a & b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)(a & b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object or() { + public void or(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(a | b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(a | b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object orMasked() { + public void orMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)(a | b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)(a | b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object xor() { + public void xor(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(a ^ b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(a ^ b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object xorMasked() { + public void xorMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)(a ^ b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)(a ^ b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftR() { + public void shiftR(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)((a >>> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)((a >>> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRMasked() { + public void shiftRMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)((a >>> b)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)((a >>> b)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftL() { + public void shiftL(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)((a << b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)((a << b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLMasked() { + public void shiftLMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)((a << b)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)((a << b)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftR() { + public void aShiftR(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)((a >> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)((a >> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRMasked() { + public void aShiftRMasked(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (int)((a >> b)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (int)((a >> b)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRShift() { + public void aShiftRShift(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)((a >> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)((a >> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRMaskedShift() { + public void aShiftRMaskedShift(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (int)((a >> b)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (int)((a >> b)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRShift() { + public void shiftRShift(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)((a >>> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)((a >>> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRMaskedShift() { + public void shiftRMaskedShift(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (int)((a >>> b)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (int)((a >>> b)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLShift() { + public void shiftLShift(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)((a << b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)((a << b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLMaskedShift() { + public void shiftLMaskedShift(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (int)((a << b)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (int)((a << b)) : a); + } } - return rs; + bh.consume(rs); } @@ -524,273 +575,326 @@ @Benchmark - public Object max() { + public void max(Blackhole bh) { + int[] as = fa.apply(size); + int[] bs = fb.apply(size); + int[] rs = fr.apply(size); + + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(Math.max(a, b)); + } + } + + bh.consume(rs); + } + + @Benchmark + public void min(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(Math.max(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + rs[i] = (int)(Math.min(a, b)); + } } - return rs; - } - - @Benchmark - public Object min() { - int[] as = fa.apply(size); - int[] bs = fb.apply(size); - int[] rs = fr.apply(size); - - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - rs[i] = (int)(Math.min(a, b)); - } - - return rs; + bh.consume(rs); } @Benchmark - public int andAll() { + public void andAll(Blackhole bh) { int[] as = fa.apply(size); int r = -1; - for (int i = 0; i < as.length; i++) { - r &= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = -1; + for (int i = 0; i < as.length; i++) { + r &= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public int orAll() { + public void orAll(Blackhole bh) { int[] as = fa.apply(size); int r = 0; - for (int i = 0; i < as.length; i++) { - r |= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r |= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public int xorAll() { + public void xorAll(Blackhole bh) { int[] as = fa.apply(size); int r = 0; - for (int i = 0; i < as.length; i++) { - r ^= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r ^= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public int addAll() { + public void addAll(Blackhole bh) { int[] as = fa.apply(size); int r = 0; - for (int i = 0; i < as.length; i++) { - r += as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r += as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public int mulAll() { + public void mulAll(Blackhole bh) { int[] as = fa.apply(size); int r = 1; - for (int i = 0; i < as.length; i++) { - r *= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 1; + for (int i = 0; i < as.length; i++) { + r *= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public int minAll() { + public void minAll(Blackhole bh) { int[] as = fa.apply(size); int r = Integer.MAX_VALUE; - for (int i = 0; i < as.length; i++) { - r = (int)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Integer.MAX_VALUE; + for (int i = 0; i < as.length; i++) { + r = (int)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public int maxAll() { + public void maxAll(Blackhole bh) { int[] as = fa.apply(size); int r = Integer.MIN_VALUE; - for (int i = 0; i < as.length; i++) { - r = (int)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Integer.MIN_VALUE; + for (int i = 0; i < as.length; i++) { + r = (int)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public boolean anyTrue() { + public void anyTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = false; - for (int i = 0; i < ms.length; i++) { - r |= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < ms.length; i++) { + r |= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean allTrue() { + public void allTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = true; - for (int i = 0; i < ms.length; i++) { - r &= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = true; + for (int i = 0; i < ms.length; i++) { + r &= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThan() { + public void lessThan(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] < bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] < bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThan() { + public void greaterThan(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] > bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] > bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean equal() { + public void equal(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] == bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] == bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean notEqual() { + public void notEqual(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] != bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] != bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThanEq() { + public void lessThanEq(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] <= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] <= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThanEq() { + public void greaterThanEq(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] >= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] >= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public Object blend() { + public void blend(Blackhole bh) { int[] as = fa.apply(size); int[] bs = fb.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - int b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + int b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { int[] as = fa.apply(size); int[] order = fs.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / Integer.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / Integer.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / Integer.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / Integer.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @@ -814,202 +918,222 @@ @Benchmark - public Object neg() { + public void neg(Blackhole bh) { int[] as = fa.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - rs[i] = (int)(-((int)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + rs[i] = (int)(-((int)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object negMasked() { + public void negMasked(Blackhole bh) { int[] as = fa.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (int)(-((int)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (int)(-((int)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object abs() { + public void abs(Blackhole bh) { int[] as = fa.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - rs[i] = (int)(Math.abs((int)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + rs[i] = (int)(Math.abs((int)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object absMasked() { + public void absMasked(Blackhole bh) { int[] as = fa.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (int)(Math.abs((int)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (int)(Math.abs((int)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object not() { + public void not(Blackhole bh) { int[] as = fa.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - rs[i] = (int)(~((int)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + rs[i] = (int)(~((int)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object notMasked() { + public void notMasked(Blackhole bh) { int[] as = fa.apply(size); int[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - int a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (int)(~((int)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (int)(~((int)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object gatherBase0() { + public void gatherBase0(Blackhole bh) { int[] as = fa.apply(size); int[] is = fs.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[i] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[i] = as[ix]; + } } - return rs; + bh.consume(rs); } - Object gather(int window) { + void gather(int window, Blackhole bh) { int[] as = fa.apply(size); int[] is = fs.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[i + j] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[i + j] = as[ix]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object gather064() { + public void gather064(Blackhole bh) { int window = 64 / Integer.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather128() { + public void gather128(Blackhole bh) { int window = 128 / Integer.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather256() { + public void gather256(Blackhole bh) { int window = 256 / Integer.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather512() { + public void gather512(Blackhole bh) { int window = 512 / Integer.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object scatterBase0() { + public void scatterBase0(Blackhole bh) { int[] as = fa.apply(size); int[] is = fs.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[ix] = as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[ix] = as[i]; + } } - return rs; + bh.consume(rs); } - Object scatter(int window) { + void scatter(int window, Blackhole bh) { int[] as = fa.apply(size); int[] is = fs.apply(size); int[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[ix] = as[i + j]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[ix] = as[i + j]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object scatter064() { + public void scatter064(Blackhole bh) { int window = 64 / Integer.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter128() { + public void scatter128(Blackhole bh) { int window = 128 / Integer.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter256() { + public void scatter256(Blackhole bh) { int window = 256 / Integer.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter512() { + public void scatter512(Blackhole bh) { int window = 512 / Integer.SIZE; - return scatter(window); + scatter(window, bh); } } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long128Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long128Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long128Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long128Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long256Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long256Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long256Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long256Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long512Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long512Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long512Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long512Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long64Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long64Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long64Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Long64Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongMaxVector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongMaxVector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongMaxVector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongMaxVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -599,26 +599,16 @@ @Benchmark public void andAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -626,26 +616,16 @@ @Benchmark public void orAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -653,127 +633,77 @@ @Benchmark public void xorAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { long[] a = fa.apply(SPECIES.length()); - long[] r = fr.apply(SPECIES.length()); long ra = Long.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - LongVector av = LongVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Long.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { LongVector av = LongVector.fromArray(SPECIES, a, i); ra = (long)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongScalar.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongScalar.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongScalar.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/LongScalar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class LongScalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; @@ -72,442 +75,490 @@ @Benchmark - public Object add() { + public void add(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(a + b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(a + b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object addMasked() { + public void addMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)(a + b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)(a + b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object sub() { + public void sub(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(a - b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(a - b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object subMasked() { + public void subMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)(a - b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)(a - b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object mul() { + public void mul(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(a * b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(a * b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object mulMasked() { + public void mulMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)(a * b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)(a * b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object and() { + public void and(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(a & b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(a & b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object andMasked() { + public void andMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)(a & b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)(a & b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object or() { + public void or(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(a | b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(a | b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object orMasked() { + public void orMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)(a | b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)(a | b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object xor() { + public void xor(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(a ^ b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(a ^ b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object xorMasked() { + public void xorMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)(a ^ b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)(a ^ b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftR() { + public void shiftR(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)((a >>> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)((a >>> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRMasked() { + public void shiftRMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)((a >>> b)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)((a >>> b)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftL() { + public void shiftL(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)((a << b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)((a << b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLMasked() { + public void shiftLMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)((a << b)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)((a << b)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftR() { + public void aShiftR(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)((a >> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)((a >> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRMasked() { + public void aShiftRMasked(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (long)((a >> b)); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (long)((a >> b)); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRShift() { + public void aShiftRShift(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)((a >> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)((a >> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRMaskedShift() { + public void aShiftRMaskedShift(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (long)((a >> b)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (long)((a >> b)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRShift() { + public void shiftRShift(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)((a >>> b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)((a >>> b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRMaskedShift() { + public void shiftRMaskedShift(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (long)((a >>> b)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (long)((a >>> b)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLShift() { + public void shiftLShift(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)((a << b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)((a << b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLMaskedShift() { + public void shiftLMaskedShift(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (long)((a << b)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (long)((a << b)) : a); + } } - return rs; + bh.consume(rs); } @@ -524,273 +575,326 @@ @Benchmark - public Object max() { + public void max(Blackhole bh) { + long[] as = fa.apply(size); + long[] bs = fb.apply(size); + long[] rs = fr.apply(size); + + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(Math.max(a, b)); + } + } + + bh.consume(rs); + } + + @Benchmark + public void min(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(Math.max(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + rs[i] = (long)(Math.min(a, b)); + } } - return rs; - } - - @Benchmark - public Object min() { - long[] as = fa.apply(size); - long[] bs = fb.apply(size); - long[] rs = fr.apply(size); - - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - rs[i] = (long)(Math.min(a, b)); - } - - return rs; + bh.consume(rs); } @Benchmark - public long andAll() { + public void andAll(Blackhole bh) { long[] as = fa.apply(size); long r = -1; - for (int i = 0; i < as.length; i++) { - r &= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = -1; + for (int i = 0; i < as.length; i++) { + r &= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public long orAll() { + public void orAll(Blackhole bh) { long[] as = fa.apply(size); long r = 0; - for (int i = 0; i < as.length; i++) { - r |= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r |= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public long xorAll() { + public void xorAll(Blackhole bh) { long[] as = fa.apply(size); long r = 0; - for (int i = 0; i < as.length; i++) { - r ^= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r ^= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public long addAll() { + public void addAll(Blackhole bh) { long[] as = fa.apply(size); long r = 0; - for (int i = 0; i < as.length; i++) { - r += as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r += as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public long mulAll() { + public void mulAll(Blackhole bh) { long[] as = fa.apply(size); long r = 1; - for (int i = 0; i < as.length; i++) { - r *= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 1; + for (int i = 0; i < as.length; i++) { + r *= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public long minAll() { + public void minAll(Blackhole bh) { long[] as = fa.apply(size); long r = Long.MAX_VALUE; - for (int i = 0; i < as.length; i++) { - r = (long)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Long.MAX_VALUE; + for (int i = 0; i < as.length; i++) { + r = (long)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public long maxAll() { + public void maxAll(Blackhole bh) { long[] as = fa.apply(size); long r = Long.MIN_VALUE; - for (int i = 0; i < as.length; i++) { - r = (long)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Long.MIN_VALUE; + for (int i = 0; i < as.length; i++) { + r = (long)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public boolean anyTrue() { + public void anyTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = false; - for (int i = 0; i < ms.length; i++) { - r |= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < ms.length; i++) { + r |= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean allTrue() { + public void allTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = true; - for (int i = 0; i < ms.length; i++) { - r &= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = true; + for (int i = 0; i < ms.length; i++) { + r &= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThan() { + public void lessThan(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] < bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] < bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThan() { + public void greaterThan(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] > bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] > bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean equal() { + public void equal(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] == bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] == bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean notEqual() { + public void notEqual(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] != bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] != bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThanEq() { + public void lessThanEq(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] <= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] <= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThanEq() { + public void greaterThanEq(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] >= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] >= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public Object blend() { + public void blend(Blackhole bh) { long[] as = fa.apply(size); long[] bs = fb.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - long b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + long b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { long[] as = fa.apply(size); int[] order = fs.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - long a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + long a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / Long.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / Long.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / Long.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / Long.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @@ -814,202 +918,222 @@ @Benchmark - public Object neg() { + public void neg(Blackhole bh) { long[] as = fa.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - rs[i] = (long)(-((long)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + rs[i] = (long)(-((long)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object negMasked() { + public void negMasked(Blackhole bh) { long[] as = fa.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (long)(-((long)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (long)(-((long)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object abs() { + public void abs(Blackhole bh) { long[] as = fa.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - rs[i] = (long)(Math.abs((long)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + rs[i] = (long)(Math.abs((long)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object absMasked() { + public void absMasked(Blackhole bh) { long[] as = fa.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (long)(Math.abs((long)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (long)(Math.abs((long)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object not() { + public void not(Blackhole bh) { long[] as = fa.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - rs[i] = (long)(~((long)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + rs[i] = (long)(~((long)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object notMasked() { + public void notMasked(Blackhole bh) { long[] as = fa.apply(size); long[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - long a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (long)(~((long)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + long a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (long)(~((long)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object gatherBase0() { + public void gatherBase0(Blackhole bh) { long[] as = fa.apply(size); int[] is = fs.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[i] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[i] = as[ix]; + } } - return rs; + bh.consume(rs); } - Object gather(int window) { + void gather(int window, Blackhole bh) { long[] as = fa.apply(size); int[] is = fs.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[i + j] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[i + j] = as[ix]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object gather064() { + public void gather064(Blackhole bh) { int window = 64 / Long.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather128() { + public void gather128(Blackhole bh) { int window = 128 / Long.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather256() { + public void gather256(Blackhole bh) { int window = 256 / Long.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object gather512() { + public void gather512(Blackhole bh) { int window = 512 / Long.SIZE; - return gather(window); + gather(window, bh); } @Benchmark - public Object scatterBase0() { + public void scatterBase0(Blackhole bh) { long[] as = fa.apply(size); int[] is = fs.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[ix] = as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[ix] = as[i]; + } } - return rs; + bh.consume(rs); } - Object scatter(int window) { + void scatter(int window, Blackhole bh) { long[] as = fa.apply(size); int[] is = fs.apply(size); long[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[ix] = as[i + j]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[ix] = as[i + j]; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object scatter064() { + public void scatter064(Blackhole bh) { int window = 64 / Long.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter128() { + public void scatter128(Blackhole bh) { int window = 128 / Long.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter256() { + public void scatter256(Blackhole bh) { int window = 256 / Long.SIZE; - return scatter(window); + scatter(window, bh); } @Benchmark - public Object scatter512() { + public void scatter512(Blackhole bh) { int window = 512 / Long.SIZE; - return scatter(window); + scatter(window, bh); } } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short128Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short128Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short128Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short128Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short256Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short256Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short256Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short256Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short512Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short512Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short512Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short512Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short64Vector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short64Vector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short64Vector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/Short64Vector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortMaxVector.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortMaxVector.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortMaxVector.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortMaxVector.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -485,26 +485,16 @@ @Benchmark public void andAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.andAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = -1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra &= av.andAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -512,26 +502,16 @@ @Benchmark public void orAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.orAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra |= av.orAll(); } } - bh.consume(ra); - bh.consume(r); } @@ -539,127 +519,77 @@ @Benchmark public void xorAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.xorAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra ^= av.xorAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void addAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.addAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 0; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra += av.addAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void mulAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.mulAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = 1; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra *= av.mulAll(); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void minAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.minAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MAX_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.min(ra, av.minAll()); } } - bh.consume(ra); - bh.consume(r); } @Benchmark public void maxAll(Blackhole bh) { short[] a = fa.apply(SPECIES.length()); - short[] r = fr.apply(SPECIES.length()); short ra = Short.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { - for (int i = 0; i < a.length; i += SPECIES.length()) { - ShortVector av = ShortVector.fromArray(SPECIES, a, i); - r[i] = av.maxAll(); - } - } - - for (int ic = 0; ic < INVOC_COUNT; ic++) { ra = Short.MIN_VALUE; for (int i = 0; i < a.length; i += SPECIES.length()) { ShortVector av = ShortVector.fromArray(SPECIES, a, i); ra = (short)Math.max(ra, av.maxAll()); } } - bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortScalar.java b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortScalar.java --- a/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortScalar.java +++ b/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortScalar.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class ShortScalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; @@ -72,220 +75,244 @@ @Benchmark - public Object add() { + public void add(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(a + b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(a + b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object addMasked() { + public void addMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (short)(a + b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (short)(a + b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object sub() { + public void sub(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(a - b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(a - b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object subMasked() { + public void subMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (short)(a - b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (short)(a - b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object mul() { + public void mul(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(a * b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(a * b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object mulMasked() { + public void mulMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (short)(a * b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (short)(a * b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object and() { + public void and(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(a & b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(a & b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object andMasked() { + public void andMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (short)(a & b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (short)(a & b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object or() { + public void or(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(a | b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(a | b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object orMasked() { + public void orMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (short)(a | b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (short)(a | b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object xor() { + public void xor(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(a ^ b); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(a ^ b); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object xorMasked() { + public void xorMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = (short)(a ^ b); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = (short)(a ^ b); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } @@ -309,380 +336,445 @@ @Benchmark - public Object aShiftRShift() { + public void aShiftRShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)((a >> (b & 15))); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)((a >> (b & 15))); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object aShiftRMaskedShift() { + public void aShiftRMaskedShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (short)((a >> (b & 15))) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (short)((a >> (b & 15))) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLShift() { + public void shiftLShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)((a << (b & 15))); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)((a << (b & 15))); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftLMaskedShift() { + public void shiftLMaskedShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (short)((a << (b & 15))) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (short)((a << (b & 15))) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRShift() { + public void shiftRShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(((a & 0xFFFF) >>> (b & 15))); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(((a & 0xFFFF) >>> (b & 15))); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object shiftRMaskedShift() { + public void shiftRMaskedShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (short)(((a & 0xFFFF) >>> (b & 15))) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (short)(((a & 0xFFFF) >>> (b & 15))) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object max() { + public void max(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(Math.max(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(Math.max(a, b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object min() { + public void min(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - rs[i] = (short)(Math.min(a, b)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + rs[i] = (short)(Math.min(a, b)); + } } - return rs; + bh.consume(rs); } @Benchmark - public short andAll() { + public void andAll(Blackhole bh) { short[] as = fa.apply(size); short r = -1; - for (int i = 0; i < as.length; i++) { - r &= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = -1; + for (int i = 0; i < as.length; i++) { + r &= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public short orAll() { + public void orAll(Blackhole bh) { short[] as = fa.apply(size); short r = 0; - for (int i = 0; i < as.length; i++) { - r |= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r |= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public short xorAll() { + public void xorAll(Blackhole bh) { short[] as = fa.apply(size); short r = 0; - for (int i = 0; i < as.length; i++) { - r ^= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r ^= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public short addAll() { + public void addAll(Blackhole bh) { short[] as = fa.apply(size); short r = 0; - for (int i = 0; i < as.length; i++) { - r += as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 0; + for (int i = 0; i < as.length; i++) { + r += as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public short mulAll() { + public void mulAll(Blackhole bh) { short[] as = fa.apply(size); short r = 1; - for (int i = 0; i < as.length; i++) { - r *= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = 1; + for (int i = 0; i < as.length; i++) { + r *= as[i]; + } } - return r; + bh.consume(r); } @Benchmark - public short minAll() { + public void minAll(Blackhole bh) { short[] as = fa.apply(size); short r = Short.MAX_VALUE; - for (int i = 0; i < as.length; i++) { - r = (short)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Short.MAX_VALUE; + for (int i = 0; i < as.length; i++) { + r = (short)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public short maxAll() { + public void maxAll(Blackhole bh) { short[] as = fa.apply(size); short r = Short.MIN_VALUE; - for (int i = 0; i < as.length; i++) { - r = (short)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = Short.MIN_VALUE; + for (int i = 0; i < as.length; i++) { + r = (short)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } @Benchmark - public boolean anyTrue() { + public void anyTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = false; - for (int i = 0; i < ms.length; i++) { - r |= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < ms.length; i++) { + r |= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean allTrue() { + public void allTrue(Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = true; - for (int i = 0; i < ms.length; i++) { - r &= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = true; + for (int i = 0; i < ms.length; i++) { + r &= ms[i]; + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThan() { + public void lessThan(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] < bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] < bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThan() { + public void greaterThan(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] > bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] > bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean equal() { + public void equal(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] == bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] == bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean notEqual() { + public void notEqual(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] != bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] != bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean lessThanEq() { + public void lessThanEq(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] <= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] <= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public boolean greaterThanEq() { + public void greaterThanEq(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] >= bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] >= bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } @Benchmark - public Object blend() { + public void blend(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - short b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + short b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { short[] as = fa.apply(size); int[] order = fs.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - short a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + short a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / Short.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / Short.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / Short.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / Short.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @@ -706,90 +798,102 @@ @Benchmark - public Object neg() { + public void neg(Blackhole bh) { short[] as = fa.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - rs[i] = (short)(-((short)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + rs[i] = (short)(-((short)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object negMasked() { + public void negMasked(Blackhole bh) { short[] as = fa.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (short)(-((short)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (short)(-((short)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object abs() { + public void abs(Blackhole bh) { short[] as = fa.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - rs[i] = (short)(Math.abs((short)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + rs[i] = (short)(Math.abs((short)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object absMasked() { + public void absMasked(Blackhole bh) { short[] as = fa.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (short)(Math.abs((short)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (short)(Math.abs((short)a)) : a); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object not() { + public void not(Blackhole bh) { short[] as = fa.apply(size); short[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - rs[i] = (short)(~((short)a)); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + rs[i] = (short)(~((short)a)); + } } - return rs; + bh.consume(rs); } @Benchmark - public Object notMasked() { + public void notMasked(Blackhole bh) { short[] as = fa.apply(size); short[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - short a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? (short)(~((short)a)) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + short a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? (short)(~((short)a)) : a); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Max-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Max-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Max-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Max-op.template @@ -1,7 +1,15 @@ @Benchmark public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { -[[KERNEL]] + $type$[] a = fa.apply(SPECIES.length()); + $type$ ra = [[TEST_INIT]]; + + for (int ic = 0; ic < INVOC_COUNT; ic++) { + ra = [[TEST_INIT]]; + for (int i = 0; i < a.length; i += SPECIES.length()) { + $abstractvectortype$ av = $abstractvectortype$.fromArray(SPECIES, a, i); + ra = ($type$)Math.max(ra, av.[[TEST]]()); + } + } bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Min-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Min-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Min-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-Min-op.template @@ -1,7 +1,15 @@ @Benchmark public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { -[[KERNEL]] + $type$[] a = fa.apply(SPECIES.length()); + $type$ ra = [[TEST_INIT]]; + + for (int ic = 0; ic < INVOC_COUNT; ic++) { + ra = [[TEST_INIT]]; + for (int i = 0; i < a.length; i += SPECIES.length()) { + $abstractvectortype$ av = $abstractvectortype$.fromArray(SPECIES, a, i); + ra = ($type$)Math.min(ra, av.[[TEST]]()); + } + } bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Reduction-op.template @@ -1,7 +1,15 @@ @Benchmark public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { -[[KERNEL]] + $type$[] a = fa.apply(SPECIES.length()); + $type$ ra = [[TEST_INIT]]; + + for (int ic = 0; ic < INVOC_COUNT; ic++) { + ra = [[TEST_INIT]]; + for (int i = 0; i < a.length; i += SPECIES.length()) { + $abstractvectortype$ av = $abstractvectortype$.fromArray(SPECIES, a, i); + ra [[TEST_OP]]= av.[[TEST]](); + } + } bh.consume(ra); - bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-Masked-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-Masked-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-Masked-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-Masked-op.template @@ -1,19 +1,21 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - if (ms[i % ms.length]) { - rs[i] = ($type$)([[TEST_OP]]); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + if (ms[i % ms.length]) { + rs[i] = ($type$)([[TEST_OP]]); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op-math.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op-math.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op-math.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op-math.template @@ -1,15 +1,17 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Binary-op.template @@ -1,15 +1,17 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Blend-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Blend-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Blend-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Blend-op.template @@ -1,17 +1,19 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? b : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? b : a); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-BoolReduction-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-BoolReduction-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-BoolReduction-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-BoolReduction-op.template @@ -1,10 +1,13 @@ @Benchmark - public boolean [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { boolean[] ms = fm.apply(size); boolean r = [[TEST_INIT]]; - for (int i = 0; i < ms.length; i++) { - r [[TEST_OP]]= ms[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = [[TEST_INIT]]; + for (int i = 0; i < ms.length; i++) { + r [[TEST_OP]]= ms[i]; + } } - return r; + bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Compare.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Compare.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Compare.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Compare.template @@ -1,14 +1,17 @@ @Benchmark - public boolean [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); boolean r = false; - for (int i = 0; i < as.length; i++) { - boolean m = (as[i] [[TEST_OP]] bs[i]); - r |= m; // accumulate so JIT can't eliminate the computation + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = false; + for (int i = 0; i < as.length; i++) { + boolean m = (as[i] [[TEST_OP]] bs[i]); + r |= m; // accumulate so JIT can't eliminate the computation + } } - return r; + bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Gather-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Gather-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Gather-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Gather-op.template @@ -1,53 +1,57 @@ @Benchmark - public Object gatherBase0() { + public void gatherBase0(Blackhole bh) { $type$[] as = fa.apply(size); int[] is = fs.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[i] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[i] = as[ix]; + } } - return rs; + bh.consume(rs); } - Object gather(int window) { + void gather(int window, Blackhole bh) { $type$[] as = fa.apply(size); int[] is = fs.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[i + j] = as[ix]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[i + j] = as[ix]; + } } } - return rs; - } - - @Benchmark - public Object gather064() { - int window = 64 / $Wideboxtype$.SIZE; - return gather(window); + bh.consume(rs); } @Benchmark - public Object gather128() { - int window = 128 / $Wideboxtype$.SIZE; - return gather(window); + public void gather064(Blackhole bh) { + int window = 64 / $Wideboxtype$.SIZE; + gather(window, bh); } @Benchmark - public Object gather256() { - int window = 256 / $Wideboxtype$.SIZE; - return gather(window); + public void gather128(Blackhole bh) { + int window = 128 / $Wideboxtype$.SIZE; + gather(window, bh); } @Benchmark - public Object gather512() { + public void gather256(Blackhole bh) { + int window = 256 / $Wideboxtype$.SIZE; + gather(window, bh); + } + + @Benchmark + public void gather512(Blackhole bh) { int window = 512 / $Wideboxtype$.SIZE; - return gather(window); + gather(window, bh); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Rearrange.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Rearrange.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Rearrange.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Rearrange.template @@ -1,39 +1,41 @@ - Object rearrangeShared(int window) { + void rearrangeShared(int window, Blackhole bh) { $type$[] as = fa.apply(size); int[] order = fs.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - $type$ a = as[i+j]; - int pos = order[j]; - rs[i + pos] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + $type$ a = as[i+j]; + int pos = order[j]; + rs[i + pos] = a; + } } } - return rs; + bh.consume(rs); } @Benchmark - public Object rearrange064() { + public void rearrange064(Blackhole bh) { int window = 64 / $Wideboxtype$.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange128() { + public void rearrange128(Blackhole bh) { int window = 128 / $Wideboxtype$.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange256() { + public void rearrange256(Blackhole bh) { int window = 256 / $Wideboxtype$.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } @Benchmark - public Object rearrange512() { + public void rearrange512(Blackhole bh) { int window = 512 / $Wideboxtype$.SIZE; - return rearrangeShared(window); + rearrangeShared(window, bh); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Max-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Max-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Max-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Max-op.template @@ -1,10 +1,13 @@ @Benchmark - public $type$ [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$ r = [[TEST_INIT]]; - for (int i = 0; i < as.length; i++) { - r = ($type$)Math.max(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = [[TEST_INIT]]; + for (int i = 0; i < as.length; i++) { + r = ($type$)Math.max(r, as[i]); + } } - return r; + bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Min-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Min-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Min-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-Min-op.template @@ -1,10 +1,13 @@ @Benchmark - public $type$ [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$ r = [[TEST_INIT]]; - for (int i = 0; i < as.length; i++) { - r = ($type$)Math.min(r, as[i]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = [[TEST_INIT]]; + for (int i = 0; i < as.length; i++) { + r = ($type$)Math.min(r, as[i]); + } } - return r; + bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Reduction-op.template @@ -1,10 +1,13 @@ @Benchmark - public $type$ [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$ r = [[TEST_INIT]]; - for (int i = 0; i < as.length; i++) { - r [[TEST_OP]]= as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + r = [[TEST_INIT]]; + for (int i = 0; i < as.length; i++) { + r [[TEST_OP]]= as[i]; + } } - return r; + bh.consume(r); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Scatter-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Scatter-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Scatter-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Scatter-op.template @@ -1,53 +1,57 @@ @Benchmark - public Object scatterBase0() { + public void scatterBase0(Blackhole bh) { $type$[] as = fa.apply(size); int[] is = fs.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - int ix = 0 + is[i]; - rs[ix] = as[i]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + int ix = 0 + is[i]; + rs[ix] = as[i]; + } } - return rs; + bh.consume(rs); } - Object scatter(int window) { + void scatter(int window, Blackhole bh) { $type$[] as = fa.apply(size); int[] is = fs.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i += window) { - for (int j = 0; j < window; j++) { - int ix = i + is[i + j]; - rs[ix] = as[i + j]; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i += window) { + for (int j = 0; j < window; j++) { + int ix = i + is[i + j]; + rs[ix] = as[i + j]; + } } } - return rs; - } - - @Benchmark - public Object scatter064() { - int window = 64 / $Wideboxtype$.SIZE; - return scatter(window); + bh.consume(rs); } @Benchmark - public Object scatter128() { - int window = 128 / $Wideboxtype$.SIZE; - return scatter(window); + public void scatter064(Blackhole bh) { + int window = 64 / $Wideboxtype$.SIZE; + scatter(window, bh); } @Benchmark - public Object scatter256() { - int window = 256 / $Wideboxtype$.SIZE; - return scatter(window); + public void scatter128(Blackhole bh) { + int window = 128 / $Wideboxtype$.SIZE; + scatter(window, bh); } @Benchmark - public Object scatter512() { + public void scatter256(Blackhole bh) { + int window = 256 / $Wideboxtype$.SIZE; + scatter(window, bh); + } + + @Benchmark + public void scatter512(Blackhole bh) { int window = 512 / $Wideboxtype$.SIZE; - return scatter(window); + scatter(window, bh); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-Masked-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-Masked-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-Masked-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-Masked-op.template @@ -1,17 +1,19 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? ($type$)([[TEST_OP]]) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? ($type$)([[TEST_OP]]) : a); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Shift-op.template @@ -1,15 +1,17 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-Masked-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-Masked-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-Masked-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-Masked-op.template @@ -1,21 +1,23 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] cs = fc.apply(size); $type$[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - $type$ c = cs[i]; - if (ms[i % ms.length]) { - rs[i] = ($type$)([[TEST_OP]]); - } else { - rs[i] = a; + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + $type$ c = cs[i]; + if (ms[i % ms.length]) { + rs[i] = ($type$)([[TEST_OP]]); + } else { + rs[i] = a; + } } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Ternary-op.template @@ -1,18 +1,20 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] bs = fb.apply(size); $type$[] cs = fc.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - $type$ b = bs[i]; - $type$ c = cs[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + $type$ b = bs[i]; + $type$ c = cs[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-Masked-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-Masked-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-Masked-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-Masked-op.template @@ -1,15 +1,17 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] rs = fr.apply(size); boolean[] ms = fm.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - boolean m = ms[i % ms.length]; - rs[i] = (m ? ($type$)([[TEST_OP]]) : a); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + boolean m = ms[i % ms.length]; + rs[i] = (m ? ($type$)([[TEST_OP]]) : a); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-math.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-math.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-math.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-math.template @@ -1,13 +1,15 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op-math.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op-math.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op-math.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op-math.template @@ -1,13 +1,15 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-Unary-op.template @@ -1,13 +1,15 @@ @Benchmark - public Object [[TEST]][[TEST_TYPE]][[OP_NAME]]() { + public void [[TEST]][[TEST_TYPE]][[OP_NAME]](Blackhole bh) { $type$[] as = fa.apply(size); $type$[] rs = fr.apply(size); - for (int i = 0; i < as.length; i++) { - $type$ a = as[i]; - rs[i] = ($type$)([[TEST_OP]]); + for (int ic = 0; ic < INVOC_COUNT; ic++) { + for (int i = 0; i < as.length; i++) { + $type$ a = as[i]; + rs[i] = ($type$)([[TEST_OP]]); + } } - return rs; + bh.consume(rs); } diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-header.template b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-header.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-header.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-Scalar-header.template @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.util.function.IntFunction; import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @@ -35,6 +36,8 @@ @Measurement(iterations = 5, time = 1) @Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"}) public class $Type$Scalar extends AbstractVectorBenchmark { + static final int INVOC_COUNT = 1; // To align with vector benchmarks. + @Param("1024") int size; diff --git a/test/jdk/jdk/incubator/vector/templates/Perf-header.template b/test/jdk/jdk/incubator/vector/templates/Perf-header.template --- a/test/jdk/jdk/incubator/vector/templates/Perf-header.template +++ b/test/jdk/jdk/incubator/vector/templates/Perf-header.template @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it