On Fri, 13 May 2022 08:24:24 GMT, Jatin Bhateja <[email protected]> wrote:
>> src/hotspot/share/opto/c2compiler.cpp line 521:
>>
>>> 519: if (!Matcher::match_rule_supported(Op_SignumF)) return false;
>>> 520: break;
>>> 521: case vmIntrinsics::_VectorComExp:
>>
>> Why `_VectorComExp` intrinsic is special? Other vector intrinsics are
>> handled later and in a different manner.
>>
>> What about `ExpandV` case?
>
> It was an attempt to facilitate in-lining of these APIs over targets which do
> not intrinsify them. I agree its not a generic fix since three APIs are
> piggybacking on same entry point and without the knowledge of opcode it will
> be inappropriate to take any call at this place, lazy intrinsification gives
> opportunity for some of the predications to concertize as compilation happens
> under closed world assumptions.
Still not clear why the code is shaped the way it is.
`Matcher::match_rule_supported_vector()` already checks that there are relevant
matching rules.
The checks require both `CompressM` and `CompressV` to be present to enable the
intrinsic. Is it important?
Also, it doesn't take `EnableVectorSupport` into account while all other vector
intrinsics respect it.
>> src/hotspot/share/opto/compile.cpp line 3416:
>>
>>> 3414:
>>> 3415: case Op_ReverseBytesV:
>>> 3416: case Op_ReverseV: {
>>
>> Can you elaborate, please, why it is performed so late in the optimization
>> phase (at the very end during graph reshaping) and not during GVN?
>
> Its more of a chicken-egg problem here, for masked reverse operation, Reverse
> IR node is followed by a Blend Node, thus in such a case doing an eager
> Identity transform in Reverse::Identity will not work, also deferring this to
> blend may also not work since it could be a non-masked reverse operation, we
> could have handled it as a special case in inline_vector_nary_operation, but
> handling such special case in final graph reshaping looked more appropriate.
>
> https://github.com/openjdk/panama-vector/pull/182#discussion_r845678080
Do you mean it's important to apply the transformation at the right node (pick
the right node as the root) and it is hard to make a decision during GVN?
-------------
PR: https://git.openjdk.java.net/jdk/pull/8425