Problem with resolving generic operand for loadconb

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Thu Jan 23 16:39:11 UTC 2020


Hi Sandhya,

> I think I found the solution. Modifying the adlc formssel.cpp to make loadconb (VectorLoadConst) as MachTypeNode fixes the issue.

Yes, that's the right way to fix the bug: all mach nodes for vector 
nodes are expected to capture bottom type from ideal node they 
correspond to.

Best regards,
Vladimir Ivanov

> -----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