RFR: JDK-8308994: C2: Re-implement experimental post loop vectorization
Emanuel Peter
epeter at openjdk.org
Fri Jun 23 11:38:10 UTC 2023
On Fri, 23 Jun 2023 11:28:02 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> ## TL;DR
>>
>> This patch completely re-implements C2's experimental post loop vectorization for better stability, maintainability and performance. Compared with the original implementation, this new implementation adds a standalone loop phase in C2's ideal loop phases and can vectorize more post loops. The original implementation and all code related to multi-versioned post loops are deleted in this patch. More details about this patch can be found in the document replied in this pull request.
>
> src/hotspot/share/opto/vectornode.hpp line 1839:
>
>> 1837: virtual bool cmp(const Node& n) const {
>> 1838: return TypeNode::cmp(n) &&
>> 1839: _max_trips == ((LoopVectorMaskNode&)n)._max_trips;
>
> Is this cast really safe? Can you use `as_LoopVectorMaskNode()` instead, so we at least have an assert if it fails to be true? I fear this may get us into undefined behavior otherwise...
Oh dear, I just saw the same pattern in:
bool TypeNode::cmp(const Node& n) const {
return !Type::cmp(_type, ((TypeNode&)n)._type);
}
We should try to avoid doing that.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14581#discussion_r1239710563
More information about the hotspot-dev
mailing list