--- old/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortScalar.java 2019-04-26 14:57:49.758053000 -0700 +++ new/test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortScalar.java 2019-04-26 14:57:49.151372500 -0700 @@ -321,13 +321,45 @@ + @Benchmark + public void shiftLeft(Blackhole bh) { + short[] as = fa.apply(size); + short[] bs = fb.apply(size); + short[] rs = fr.apply(size); + 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 & 0xF))); + } + } + bh.consume(rs); + } + @Benchmark + public void shiftLeftMasked(Blackhole bh) { + short[] as = fa.apply(size); + short[] bs = fb.apply(size); + short[] rs = fr.apply(size); + boolean[] ms = fm.apply(size); - + 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 & 0xF))); + } else { + rs[i] = a; + } + } + } + bh.consume(rs); + } @@ -336,7 +368,7 @@ @Benchmark - public void aShiftRShift(Blackhole bh) { + public void shiftRight(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); @@ -345,7 +377,7 @@ for (int i = 0; i < as.length; i++) { short a = as[i]; short b = bs[i]; - rs[i] = (short)((a >> (b & 15))); + rs[i] = (short)((a >>> (b & 0xF))); } } @@ -355,7 +387,7 @@ @Benchmark - public void aShiftRMaskedShift(Blackhole bh) { + public void shiftRightMasked(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); @@ -365,18 +397,70 @@ 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); + if (ms[i % ms.length]) { + rs[i] = (short)((a >>> (b & 0xF))); + } else { + rs[i] = a; + } } } + bh.consume(rs); + } + + + + + + + + @Benchmark + public void shiftArithmeticRight(Blackhole bh) { + short[] as = fa.apply(size); + short[] bs = fb.apply(size); + short[] rs = fr.apply(size); + + 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 & 0xF))); + } + } + + bh.consume(rs); + } + + + + @Benchmark + public void shiftArithmeticRightMasked(Blackhole bh) { + short[] as = fa.apply(size); + short[] bs = fb.apply(size); + short[] rs = fr.apply(size); + boolean[] ms = fm.apply(size); + 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 & 0xF))); + } else { + rs[i] = a; + } + } + } bh.consume(rs); } + + + + @Benchmark - public void shiftLShift(Blackhole bh) { + public void shiftLeftShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); @@ -395,7 +479,7 @@ @Benchmark - public void shiftLMaskedShift(Blackhole bh) { + public void shiftLeftMaskedShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); @@ -415,8 +499,12 @@ + + + + @Benchmark - public void shiftRShift(Blackhole bh) { + public void shiftRightShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); @@ -435,7 +523,7 @@ @Benchmark - public void shiftRMaskedShift(Blackhole bh) { + public void shiftRightMaskedShift(Blackhole bh) { short[] as = fa.apply(size); short[] bs = fb.apply(size); short[] rs = fr.apply(size); @@ -454,6 +542,50 @@ } + + + + + + @Benchmark + public void shiftArithmeticRightShift(Blackhole bh) { + short[] as = fa.apply(size); + short[] bs = fb.apply(size); + short[] rs = fr.apply(size); + + 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))); + } + } + + bh.consume(rs); + } + + + + @Benchmark + public void shiftArithmeticRightMaskedShift(Blackhole bh) { + short[] as = fa.apply(size); + short[] bs = fb.apply(size); + short[] rs = fr.apply(size); + boolean[] ms = fm.apply(size); + + 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); + } + } + + bh.consume(rs); + } + + @Benchmark public void max(Blackhole bh) { short[] as = fa.apply(size); @@ -490,7 +622,7 @@ @Benchmark - public void andAll(Blackhole bh) { + public void andLanes(Blackhole bh) { short[] as = fa.apply(size); short r = -1; for (int ic = 0; ic < INVOC_COUNT; ic++) { @@ -505,7 +637,7 @@ @Benchmark - public void orAll(Blackhole bh) { + public void orLanes(Blackhole bh) { short[] as = fa.apply(size); short r = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { @@ -520,7 +652,7 @@ @Benchmark - public void xorAll(Blackhole bh) { + public void xorLanes(Blackhole bh) { short[] as = fa.apply(size); short r = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { @@ -534,7 +666,7 @@ @Benchmark - public void addAll(Blackhole bh) { + public void addLanes(Blackhole bh) { short[] as = fa.apply(size); short r = 0; for (int ic = 0; ic < INVOC_COUNT; ic++) { @@ -547,7 +679,7 @@ } @Benchmark - public void mulAll(Blackhole bh) { + public void mulLanes(Blackhole bh) { short[] as = fa.apply(size); short r = 1; for (int ic = 0; ic < INVOC_COUNT; ic++) { @@ -560,7 +692,7 @@ } @Benchmark - public void minAll(Blackhole bh) { + public void minLanes(Blackhole bh) { short[] as = fa.apply(size); short r = Short.MAX_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) { @@ -573,7 +705,7 @@ } @Benchmark - public void maxAll(Blackhole bh) { + public void maxLanes(Blackhole bh) { short[] as = fa.apply(size); short r = Short.MIN_VALUE; for (int ic = 0; ic < INVOC_COUNT; ic++) {