[vectorIntrinsics] RFR: Different cleanups in backend C2 support
Viswanathan, Sandhya
sandhya.viswanathan at intel.com
Thu Apr 2 00:57:33 UTC 2020
Hi Vladimir,
Thanks a lot for doing this cleanup. I have some comments below:
1. In x86.ad, the following set of rules are coming from mainline so changes to them could be done on mainline:
replicate, vector add, vector sub, mul, cmov, div, sqrt, scalar shift, and, or, xor, abs, neg, fma, muladds2i, popcount rules
Of vector mul, only two rules (mulL_reg, vmul4L_reg_avx) are added in vectorIntrinsics/vector-unstable branch.
2. The following method is defined in two places, in x86.ad and c2_MacroAssembler_x86.cpp:
1202 inline Assembler::AvxVectorLen vector_length_encoding(int bytes) {
36 inline Assembler::AvxVectorLen C2_MacroAssembler::vector_length_encoding(int vlen_in_bytes) {
3. x86.ad: match_rule_supported, why remove the following for ExtractB and ExtractL?
1403 #ifndef _LP64
1404 return false;
1405 #endif
4. x86.ad: match_rule_supported, why remove the following for VectorTest?
1449 case Op_VectorTest:
1450 return false;
1451 break;
5. x86.ad, the reference to bottom_type() in the following statement could be replaced by elem_bt:
3495 __ evgather(this->bottom_type()->is_vect()->element_basic_type(), $dst$$XMMRegister, ktmp, $tmp$$Register, $idx$$XMMRegister, vlen_enc);
6. The instructs minmax_reg and vminmax_reg can support vector_length_in_bytes == 4.
7. vshiftL_arith_var instruct should have in the predicate UseAVX==2. If UseAVX > 2 then the vtmp is not required and we can directly use the evpsravq instruction (vshiftL_arith_var_evex rule) even for <=4 length.
8. vcastStoX:
6364 vector_length(n->in(1)) <= 16 && // src
should be
6364 vector_length(n->in(1)) == 16 && // src
Best Regards,
Sandhya
-----Original Message-----
From: panama-dev <panama-dev-bounces at openjdk.java.net> On Behalf Of Vladimir Ivanov
Sent: Wednesday, April 01, 2020 10:13 AM
To: panama-dev <panama-dev at openjdk.java.net>
Subject: [vectorIntrinsics] RFR: Different cleanups in backend C2 support
http://cr.openjdk.java.net/~vlivanov/panama/vector/cleanup.02/webrev.00/
Some cleanups in backend C2 support for Vector API.
Testing: jdk/incubator/vector tests in different configuations on a Skylake machine (-XX:UseAVX=[0..3] + -XX:UseSSE=[2..4])
Best regards,
Vladimir Ivanov
More information about the panama-dev
mailing list