RFR: 8277793: Support vector F2I and D2L cast operations for X86

Mai Đặng Quân Anh duke at openjdk.java.net
Sat Nov 27 03:19:07 UTC 2021


On Wed, 24 Nov 2021 18:50:17 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

> - JDK-8275317 extended auto-vectorizer to infer Vector Cast operations if source and destination primitive type have same size.
> - This patch adds the backend support for vector CastF2I and CaseD2L on X86 AVX512 and legacy targets.
> 
> Following are the performance measurements of an existing JMH benchmark (test/micro/org/openjdk/bench/vm/compiler/TypeVectorOperations.java)
> 
> System Configuration :  Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (40C 2S Icelake Server)
> 
> BENCHMARK | SIZE | BASELINE (AVX3) ns/op | WithOpt (AVX3) ns/op | Gain AVX3(baseline/opt) | BASELINE (AVX2) ns/op | WithOpt (AVX2) ns/op | Gain AVX2 (baseline/opt)
> -- | -- | -- | -- | -- | -- | -- | --
> TypeVectorOperations.TypeVectorOperationsSuperWord.convert_d2l | 512.00 | 256.26 | 77.50 | 3.31 | 275.49 | 275.65 | 1.00
> TypeVectorOperations.TypeVectorOperationsSuperWord.convert_d2l | 1024.00 | 501.87 | 150.35 | 3.34 | 540.47 | 541.22 | 1.00
> TypeVectorOperations.TypeVectorOperationsSuperWord.convert_d2l | 2048.00 | 993.05 | 293.23 | 3.39 | 1070.56 | 1070.14 | 1.00
> TypeVectorOperations.TypeVectorOperationsSuperWord.convert_f2i | 512.00 | 227.83 | 39.36 | 5.79 | 248.25 | 45.01 | 5.52
> TypeVectorOperations.TypeVectorOperationsSuperWord.convert_f2i | 1024.00 | 449.70 | 77.88 | 5.77 | 487.33 | 86.15 | 5.66
> TypeVectorOperations.TypeVectorOperationsSuperWord.convert_f2i | 2048.00 | 884.95 | 149.58 | 5.92 | 956.58 | 152.45 | 6.27
> 
> Kindly review and share your feedback.
> 
> Best Regards,
> Jatin

src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 4111:

> 4109:   vpand(xtmp2, xtmp1, src, vec_enc);
> 4110:   vpxor(xtmp3, xtmp2, xtmp1, vec_enc);
> 4111:   vpand(xtmp3, xtmp3, xtmp1, vec_enc);

I think we don't need this `vpand`, since `xtmp2` is a subset of `xtmp1`, which leads to `xtmp3` being a subset of `xtmp1`.

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

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


More information about the hotspot-compiler-dev mailing list