RFR: 8303278: Imprecise bottom type of ExtractB/UB

Tobias Hartmann thartmann at openjdk.org
Mon Mar 20 10:27:19 UTC 2023


On Fri, 17 Mar 2023 06:14:00 GMT, Eric Liu <eliu at openjdk.org> wrote:

> This is a trivial patch, which fixes the bottom type of ExtractB/UB nodes.
> 
> ExtractNode can be generated by Vector API Vector.lane(int), which gets the lane element at the given index. A more precise type of range can help to optimize out unnecessary type conversion in some cases.
> 
> Below shows a typical case used ExtractBNode
> 
> 
>   public static byte byteLt16() {
>    ByteVector vecb = ByteVector.broadcast(ByteVector.SPECIES_128, 1);
>    return vecb.lane(1);
>   }
> 
> 
> In this case, c2 constructs IR graph like:
> 
>     ExtractB  ConI(24)
>        |     __|
>        |    /  |
>     LShiftI  __|
>        |    /
>     RShiftI
> 
> which generates AArch64 code:
> 
>   movi    v16.16b, #0x1
>   smov    x11, v16.b[1]
>   sxtb    w0, w11
> 
> with this patch, this shift pair can be optimized out by RShiftI's identity [1]. The code is optimized to:
> 
>   movi    v16.16b, #0x1
>   smov    x0, v16.b[1]
> 
> [TEST]
> 
> Full jtreg passed except 4 files on x86:
> 
> jdk/incubator/vector/Byte128VectorTests.java
> jdk/incubator/vector/Byte256VectorTests.java
> jdk/incubator/vector/Byte512VectorTests.java
> jdk/incubator/vector/Byte64VectorTests.java
> 
> They are caused by a known issue on x86 [2].
> 
> [1] https://github.com/openjdk/jdk/blob/742bc041eaba1ff9beb7f5b6d896e4f382b030ea/src/hotspot/share/opto/mulnode.cpp#L1052
> [2] https://bugs.openjdk.org/browse/JDK-8303508

~~Looks good to me too.~~

This triggers failures in testing:


jdk/incubator/vector/Byte64VectorTests.java

java.lang.Exception: failures: 1
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:95)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:53)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1623)

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

Marked as reviewed by thartmann (Reviewer).

PR: https://git.openjdk.org/jdk/pull/13070Changes requested by thartmann (Reviewer).


More information about the hotspot-compiler-dev mailing list