RFR: 8286847: Rotate vectors don't support byte or short

Haomin duke at openjdk.java.net
Tue May 17 03:19:24 UTC 2022


static void test_fun(byte[] a0, int[] b0, byte[] c0) {
    for (int i=0; i<ARRLEN; i++) {
      c0[i] = (byte)(a0[i] << (7) | a0[i] >>> (-7));
    }   
  }

when I implement RotateLeftV in loongarch.ad, I found this executed by c2 vector and executed by interpreter are not equal.

It's executed on x86 would create an assert error.

#
#  Internal Error (/home/wanghaomin/jdk/src/hotspot/share/opto/vectornode.cpp:347), pid=26469, tid=26485
#  assert(false) failed: not supported: byte
#

RotateRightV for byte, short values produces incorrect Java result. Because java code should convert a byte, short value into int value, and then do RotateI.

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

Commit messages:
 - 8286847: Rotate vectors don't support byte or short

Changes: https://git.openjdk.java.net/jdk/pull/8740/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8740&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8286847
  Stats: 224 lines in 3 files changed: 222 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8740.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8740/head:pull/8740

PR: https://git.openjdk.java.net/jdk/pull/8740


More information about the hotspot-compiler-dev mailing list