On Mon, 9 Dec 2024 13:47:10 GMT, Emanuel Peter <epe...@openjdk.org> wrote:

>> Quan Anh Mai has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   address reviews
>
> Ok, looks better.
> 
> I've thought about this a little. And I am wondering if we cannot make the 
> use of Rearrange generally easier.
> 
> What if we want to use the `VectorRearrangeNode` elsewhere?
> One would assume that one could just check
> `arch_supports_vector(Op_VectorRearrange, ...elem_bt)`
> And then one could emit a `VectorRearrangeNode` for the given `elem_bt`. But 
> that is not the case, the user would have to also check for 
> `Matcher::vector_rearrange_requires_load_shuffle(shuffle_bt, num_elem)`, and 
> possibly add a `VectorLoadShuffleNode`.
> I don't like this - it makes the use quite cumbersome.
> 
> I have an idea for an alternative:
> You add a `VectorRearrangeNode::Ideal`, which then transforms itself if we 
> have `Matcher::vector_rearrange_requires_load_shuffle`.
> 
> I have not thought this through to the end, but it just seems it would be 
> easier to use Rearrange in the future this way. But maybe we know that we 
> will never use Rearrange in any other way, then I'm fine with this 
> implementation. What do you think @PaulSandoz ?

@eme64 Yes I have thought about that. My idea is that once phase lowering is 
ready we will move the expansion there (#21599) . This removes the need to have 
a standalone method that checks if `LoadShuffleNode` is needed. The current 
situation is that `VectorRearrangeNode` is expected to come with 
`VectorLoadShuffleNode` so you cannot easily work with `VectorRearrangeNode`, 
either.

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

PR Comment: https://git.openjdk.org/jdk/pull/21042#issuecomment-2528023981

Reply via email to