Problem with resolving generic operand for loadconb

Viswanathan, Sandhya sandhya.viswanathan at intel.com
Thu Jan 16 01:34:05 UTC 2020


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