RFR: 8354242: VectorAPI: combine vector not operation with compare [v3]
erifan
duke at openjdk.org
Tue Apr 29 01:35:49 UTC 2025
On Mon, 28 Apr 2025 14:10:40 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> test/hotspot/jtreg/compiler/vectorapi/VectorMaskCompareNotTest.java line 237:
>>
>>> 235: public static void testCompareEQMaskNotByte() {
>>> 236: testCompareMaskNotByte(VectorOperators.EQ);
>>> 237: }
>>
>> Another comment: you now only have "negative" tests, where you check for count `=0`. It would be good if you also had a positive rule here, one where you do see an XOR in a similar case, where your optimization does apply.
>>
>> This would basically be a "control" that checks that your are testing the right thing.
>
> Also: this test should vectorize on some plarforms, right? A compare, correct? Would it not be good to actively check that with an IR rule?
> Another comment: you now only have "negative" tests, where you check for count =0. It would be good if you also had a positive rule here, one where you do see an XOR in a similar case, where your optimization does apply.
This would basically be a "control" that checks that your are testing the right thing.
This is not a negative test, this is a positive test. What this patch does is:
`Vector compare(NE) + not() => vector compare(EQ)`. The `not()` operation is removed. For details, please see the commit message and related code. So here we check XorV and XorVMask == 0, which I think is reasonable.
For negative tests, I think it's not necessary, because I only test what I optimized, and I won't write a test to say what optimization cannot be done.
> Also: this test should vectorize on some plarforms, right? A compare, correct? Would it not be good to actively check that with an IR rule?
The `compare` operation is not eliminated, the patch aims to eliminate the `not` operation following `compare`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24674#discussion_r2065195738
More information about the hotspot-compiler-dev
mailing list