RFR: 8332905: C2 SuperWord: bad AD file, with RotateRightV and first operand not a pack

Emanuel Peter epeter at openjdk.org
Tue Jun 4 06:23:23 UTC 2024


On Thu, 30 May 2024 06:23:34 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

>> I just discovered this bug by manual code inspection, and found a reproducer.
>> 
>> It seems to be a regression of [JDK-8248830](https://bugs.openjdk.org/browse/JDK-8248830), that is when RotateRightV was added to SuperWord.
>> 
>> The problem is that we directly get the input node, rather than the `vector_opd`, which fails if that input is not a vector already, but for example a `PopulateIndex` pattern that is only vectorized when calling `vector_opd`.
>> 
>> Before this patch: it looks like this:
>> 
>>       } else if (VectorNode::is_scalar_rotate(n)) {
>>         Node* in1 = first->in(1);
>>         Node* in2 = first->in(2);
>> 
>> 
>> But at least `in1` should be using `vector_opd`, like most other ops:
>> 
>> `        Node* in1 = vector_opd(p, 1);`
>> 
>> When the input is a `PopulateIndex` pattern, then `first->in(1) `gives us the iv-phi, which is a scalar. `vector_opd` would produce a `PopulateIndex` vector.
>> 
>> In the ad-file, we get an error, because we do not expect a scalar as the first operand of the RotateRightV, but a vector.
>
> Looks good to me too.
> 
> Fix version was still set to JDK 24 (the bot now warns about this as well: "The fixVersion in this issue is [24] but the fixVersion in .jcheck/conf is 23, a new backport will be created when this pr is integrated."). I set it back to JDK 23.

Thanks @TobiHartmann @chhagedorn for the reviews!

-------------

PR Comment: https://git.openjdk.org/jdk/pull/19445#issuecomment-2146701006


More information about the hotspot-compiler-dev mailing list