[vectorIntrinsics] RFR: 8259536: Add cast nodes between interger types implementation for Arm SVE [v3]

Ningsheng Jian njian at openjdk.java.net
Wed Jan 27 09:24:09 UTC 2021


On Tue, 26 Jan 2021 08:56:07 GMT, Wang Huang <whuang at openjdk.org> wrote:

>> This patch add cast nodes between interger types implementation for Arm SVE like  "VectorCastB2X" "VectorCastI2X " "VectorCastS2X" "VectorCastL2X".
>
> Wang Huang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   add other I2I cast nodes

@Wanghuang-Huawei  Thanks a lot for the work! Could you please do a merge and resolve the merge conflicts?

src/hotspot/cpu/aarch64/aarch64_sve.ad line 2499:

> 2497:   predicate(UseSVE > 0 && n->bottom_type()->is_vect()->length_in_bytes() >= 16 &&
> 2498:             n->bottom_type()->is_vect()->element_basic_type() == T_SHORT);
> 2499:   match(Set dst (VectorCastB2X src));

Is it possible to sort these newly added rules by Node name? So that it's easier to know whether there are still some rules missing.

src/hotspot/share/opto/vectorIntrinsics.cpp line 441:

> 439:   if (Matcher::supports_scalable_vector()) {
> 440:     if (C->print_intrinsics()) {
> 441:       tty->print_cr("  ** shuffle to vector not supported on SVE");

I think it's a bit intrusive to do a workaround here, which will be removed soon, for SVE implementation in shared code.

src/hotspot/share/opto/vectorIntrinsics.cpp line 334:

> 332: //                  int start, int step, int wrap, ShuffleIotaOperation<Sh, E> defaultImpl)
> 333: bool LibraryCallKit::inline_vector_shuffle_iota() {
> 334:   // TODO shuffle is not supported on SVE

This check is no necessary? Since SVE does not have Op_VectorLoadConst yet, arch_supports_vector() check below should return false.

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

PR: https://git.openjdk.java.net/panama-vector/pull/31


More information about the panama-dev mailing list