RFR: 8286972: Support the new loop induction variable related PopulateIndex IR node on x86

Sandhya Viswanathan sviswanathan at openjdk.java.net
Thu May 19 00:07:40 UTC 2022


On Wed, 18 May 2022 23:38:25 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

>> This PR adds x86 backend support for the new loop induction variable related PopulateIndex IR node. 
>> This IR node was added as part of [JDK-8280510](https://bugs.openjdk.java.net/browse/JDK-8280510).
>> 
>> The performance numbers are as follows:
>> Before:
>> Benchmark                   (count)   Mode  Cnt       Score       Error  Units
>> IndexVector.exprWithIndex1    65536  thrpt    3   64556.552 ±  1126.396  ops/s
>> IndexVector.exprWithIndex2    65536  thrpt    3   22117.050 ± 11452.098  ops/s
>> IndexVector.indexArrayFill    65536  thrpt    3  117776.383 ±  1120.957  ops/s
>> 
>> After:
>> Benchmark                   (count)   Mode  Cnt       Score       Error  Units
>> IndexVector.exprWithIndex1    65536  thrpt    3  203180.290 ±  2147.807  ops/s
>> IndexVector.exprWithIndex2    65536  thrpt    3  274132.756 ±  6853.393  ops/s
>> IndexVector.indexArrayFill    65536  thrpt    3  374165.202 ± 46930.779  ops/s
>> 
>> Please review.
>> 
>> Best Regards,
>> Sandhya
>
> src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 2282:
> 
>> 2280:   bool is_bw_supported = VM_Version::supports_avx512bw();
>> 2281:   if (is_bw && !is_bw_supported) {
>> 2282:     assert(vlen_enc != Assembler::AVX_512bit, "required");
> 
> What are acceptable values of `vlen_enc`?

For KNL, PopulateIndex support is limited to 256-bit as we need avx512bw() for the 512-bit support.
For other AVX2 and AVX512 architectures, all vector widths up to and including 512-bit are supported.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8778


More information about the hotspot-compiler-dev mailing list