RFR: 8354242: VectorAPI: combine vector not operation with compare [v9]
Emanuel Peter
epeter at openjdk.org
Tue Jul 8 11:45:52 UTC 2025
On Tue, 8 Jul 2025 11:41:01 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> The purpose of this PR is optimizing the following kinds of patterns:
>>
>> XXXVector va, vb;
>> va.compare(EQ, vb).not()
>>
>> And the generated IR of `va.compare(EQ, vb).not()` is `(XorVMask (VectorMaskCmp va vb EQ) (MaskAll -1))`. On platforms like aarch64 NEON, `MaskAll` is `Replicate`. And `MaskAll` and `Replicate` are both all ones vectors, so we do this check `VectorNode::is_all_ones_vector(in2)`
>
> Oh wow, my bad. I misunderstood the brackets!
>
> Instead of:
>
> !(in1->as_VectorMaskCmp())->predicate_can_be_negated() ||
> !VectorNode::is_all_ones_vector(in2)) {
>
> I read:
>
> !(in1->as_VectorMaskCmp()->predicate_can_be_negated() ||
> !VectorNode::is_all_ones_vector(in2))) {
>
> That confused me a lot... absolutely my bad.
>
> Well actually then my indentation suggestion was terrible!
I made a new suggestion below.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24674#discussion_r2192263852
More information about the core-libs-dev
mailing list