Problem with resolving generic operand for loadconb
Viswanathan, Sandhya
sandhya.viswanathan at intel.com
Thu Jan 16 06:02:58 UTC 2020
I think I found the solution. Modifying the adlc formssel.cpp to make loadconb (VectorLoadConst) as MachTypeNode fixes the issue.
Best Regards,
Sandhya
-----Original Message-----
From: panama-dev <panama-dev-bounces at openjdk.java.net> On Behalf Of Viswanathan, Sandhya
Sent: Wednesday, January 15, 2020 5:34 PM
To: Bhateja, Jatin <jatin.bhateja at intel.com>; Vladimir Ivanov <vladimir.x.ivanov at oracle.com>
Cc: panama-dev <panama-dev at openjdk.java.net>
Subject: Problem with resolving generic operand for loadconb
Hi Jatin,
Looks like there is a problem with specializing vector register for cases like the loadconb instruct in Smita's patch:
https://cr.openjdk.java.net/~svkamath/VectorAPI/loadshuffle-rearrange-loadconst/webrev00/
instruct loadconb(vec dst, immI0 src, rRegL scratch) %{
predicate(n->bottom_type()->is_vect()->element_basic_type() == T_BYTE);
match(Set dst (VectorLoadConst src));
...
}
Below is my analysis:
loadconb is of type MachNode and not MachTypeNode as other loads.
The matcher sets _opnds[0] of loadconb to generic VEC register in MachOper.
The bottom_type of loadconb MachNode comes from type of _opnds[0].
The do_postselect_cleanup() is not able to specialize the register for this rule.
In specialize_vector_node() attempt is made to set the type of loadconb to its bottom_type which itself is generic VEC register type.
Best Regards,
Sandhya
-----Original Message-----
From: panama-dev <panama-dev-bounces at openjdk.java.net> On Behalf Of Paul Sandoz
Sent: Monday, January 13, 2020 1:11 PM
To: Kamath, Smita <smita.kamath at intel.com>
Cc: panama-dev <panama-dev at openjdk.java.net>
Subject: Re: Generic Operands Support for VectorAPI
I am not an expert on ad files, so take with a pinch of salt: nice reduction, looks ok to me.
Paul.
> On Jan 13, 2020, at 11:58 AM, Kamath, Smita <smita.kamath at intel.com> wrote:
>
> Hi All,
>
> Please find the patch below which adds generic operands support for VectorLoadConst, VectorLoadShuffle and VectorRearrange nodes in VectorAPI. Please let me know if you have any questions or comments.
>
>
>
> https://cr.openjdk.java.net/~svkamath/VectorAPI/loadshuffle-rearrange-loadconst/webrev00/
>
>
> Thanks,
> Smita
More information about the panama-dev
mailing list