Vector API: stack overflow on Big Endian

Doerr, Martin martin.doerr at sap.com
Thu Oct 22 18:36:17 UTC 2020


Hi Paul,

here's the snippet from the JTwork/jdk/incubator/vector/VectorReshapeTests.jtr from a run on an s390 machine.
Let me know if you need anything else.

Thanks and best regards,
Martin


[TestNG] Running:
  jdk/incubator/vector/VectorReshapeTests.java

test VectorReshapeTests.testCastFromByte(byte(i)): success
test VectorReshapeTests.testCastFromDouble(double(i)): success
test VectorReshapeTests.testCastFromFloat(float(i)): success
test VectorReshapeTests.testCastFromInt(int(i)): success
test VectorReshapeTests.testCastFromLong(long(i)): success
test VectorReshapeTests.testCastFromShort(short(i)): success
input:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
Failing with Species[byte, 16, S_128_BIT]->Species[short, 8, S_128_BIT] (lanewise), partLimit=2, block=8, part=0, origin=0
expect: [1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0]
output: [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8]
test VectorReshapeTests.testRebracket128(byte(i)): failure
java.lang.AssertionError: arrays differ firstly at element [0]; expected value is <0> but was <1>. 
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertEquals(Assert.java:774)
	at org.testng.Assert.assertEquals(Assert.java:748)
	at VectorReshapeTests.checkPartialResult(VectorReshapeTests.java:419)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:746)
	at VectorReshapeTests.testVectorRebracketLanewise(VectorReshapeTests.java:706)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:701)
	at VectorReshapeTests.testRebracket128(VectorReshapeTests.java:875)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
	at org.testng.TestRunner.privateRun(TestRunner.java:773)
	at org.testng.TestRunner.run(TestRunner.java:623)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
	at org.testng.TestNG.run(TestNG.java:1018)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:54)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
	at java.base/java.lang.Thread.run(Thread.java:832)
input:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
Failing with Species[byte, 32, S_256_BIT]->Species[short, 16, S_256_BIT] (lanewise), partLimit=2, block=16, part=0, origin=0
expect: [1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0]
output: [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16]
test VectorReshapeTests.testRebracket256(byte(i)): failure
java.lang.AssertionError: arrays differ firstly at element [0]; expected value is <0> but was <1>. 
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertEquals(Assert.java:774)
	at org.testng.Assert.assertEquals(Assert.java:748)
	at VectorReshapeTests.checkPartialResult(VectorReshapeTests.java:419)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:746)
	at VectorReshapeTests.testVectorRebracketLanewise(VectorReshapeTests.java:706)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:701)
	at VectorReshapeTests.testRebracket256(VectorReshapeTests.java:924)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
	at org.testng.TestRunner.privateRun(TestRunner.java:773)
	at org.testng.TestRunner.run(TestRunner.java:623)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
	at org.testng.TestNG.run(TestNG.java:1018)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:54)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
	at java.base/java.lang.Thread.run(Thread.java:832)
input:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64]
Failing with Species[byte, 64, S_512_BIT]->Species[short, 32, S_512_BIT] (lanewise), partLimit=2, block=32, part=0, origin=0
expect: [1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 32, 0]
output: [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 32]
test VectorReshapeTests.testRebracket512(byte(i)): failure
java.lang.AssertionError: arrays differ firstly at element [0]; expected value is <0> but was <1>. 
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertEquals(Assert.java:774)
	at org.testng.Assert.assertEquals(Assert.java:748)
	at VectorReshapeTests.checkPartialResult(VectorReshapeTests.java:419)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:746)
	at VectorReshapeTests.testVectorRebracketLanewise(VectorReshapeTests.java:706)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:701)
	at VectorReshapeTests.testRebracket512(VectorReshapeTests.java:973)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
	at org.testng.TestRunner.privateRun(TestRunner.java:773)
	at org.testng.TestRunner.run(TestRunner.java:623)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
	at org.testng.TestNG.run(TestNG.java:1018)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:54)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
	at java.base/java.lang.Thread.run(Thread.java:832)
input:  [1, 2, 3, 4, 5, 6, 7, 8]
Failing with Species[byte, 8, S_64_BIT]->Species[short, 4, S_64_BIT] (lanewise), partLimit=2, block=4, part=0, origin=0
expect: [1, 0, 2, 0, 3, 0, 4, 0]
output: [0, 1, 0, 2, 0, 3, 0, 4]
test VectorReshapeTests.testRebracket64(byte(i)): failure
java.lang.AssertionError: arrays differ firstly at element [0]; expected value is <0> but was <1>. 
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertEquals(Assert.java:774)
	at org.testng.Assert.assertEquals(Assert.java:748)
	at VectorReshapeTests.checkPartialResult(VectorReshapeTests.java:419)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:746)
	at VectorReshapeTests.testVectorRebracketLanewise(VectorReshapeTests.java:706)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:701)
	at VectorReshapeTests.testRebracket64(VectorReshapeTests.java:826)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
	at org.testng.TestRunner.privateRun(TestRunner.java:773)
	at org.testng.TestRunner.run(TestRunner.java:623)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
	at org.testng.TestNG.run(TestNG.java:1018)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:54)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
	at java.base/java.lang.Thread.run(Thread.java:832)
input:  [1, 2, 3, 4, 5, 6, 7, 8]
Failing with Species[byte, 8, S_Max_BIT]->Species[short, 4, S_Max_BIT] (lanewise), partLimit=2, block=4, part=0, origin=0
expect: [1, 0, 2, 0, 3, 0, 4, 0]
output: [0, 1, 0, 2, 0, 3, 0, 4]
test VectorReshapeTests.testRebracketMax(byte(i)): failure
java.lang.AssertionError: arrays differ firstly at element [0]; expected value is <0> but was <1>. 
	at org.testng.Assert.fail(Assert.java:94)
	at org.testng.Assert.assertEquals(Assert.java:774)
	at org.testng.Assert.assertEquals(Assert.java:748)
	at VectorReshapeTests.checkPartialResult(VectorReshapeTests.java:419)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:746)
	at VectorReshapeTests.testVectorRebracketLanewise(VectorReshapeTests.java:706)
	at VectorReshapeTests.testVectorRebracket(VectorReshapeTests.java:701)
	at VectorReshapeTests.testRebracketMax(VectorReshapeTests.java:1022)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
	at org.testng.TestRunner.privateRun(TestRunner.java:773)
	at org.testng.TestRunner.run(TestRunner.java:623)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
	at org.testng.SuiteRunner.run(SuiteRunner.java:259)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
	at org.testng.TestNG.run(TestNG.java:1018)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:94)
	at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:54)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:127)
	at java.base/java.lang.Thread.run(Thread.java:832)
test VectorReshapeTests.testReshapeByte(byte(i)): success
test VectorReshapeTests.testReshapeDouble(byte(i)): success
test VectorReshapeTests.testReshapeFloat(byte(i)): success
test VectorReshapeTests.testReshapeInt(byte(i)): success
test VectorReshapeTests.testReshapeLong(byte(i)): success
test VectorReshapeTests.testReshapeShort(byte(i)): success

===============================================
jdk/incubator/vector/VectorReshapeTests.java
Total tests run: 17, Failures: 5, Skips: 0
===============================================


> -----Original Message-----
> From: Paul Sandoz <paul.sandoz at oracle.com>
> Sent: Donnerstag, 22. Oktober 2020 20:11
> To: Doerr, Martin <martin.doerr at sap.com>
> Cc: hotspot-compiler-dev at openjdk.java.net
> Subject: Re: Vector API: stack overflow on Big Endian
> 
> Hi Martin,
> 
> Can you provide more details on what test methods are failing?
> 
> I would like to know the scope of the test failures and more precisely where
> they occur.
> 
> My suspicion is there by be a problem with the test, specifically with the
> method castByteArrayData.
> 
> Paul.
> 
> > On Oct 22, 2020, at 6:23 AM, Doerr, Martin <martin.doerr at sap.com>
> wrote:
> >
> > Hi Paul,
> >
> > thanks a lot for your help. Your fix is working fine.
> >
> > With that, I can only see one test failing:
> > VectorReshapeTests
> >
> > Failing with Species[byte, 16, S_128_BIT]->Species[short, 8, S_128_BIT]
> (lanewise), partLimit=2, block=8, part=0, origin=0
> > Failing with Species[byte, 32, S_256_BIT]->Species[short, 16, S_256_BIT]
> (lanewise), partLimit=2, block=16, part=0, origin=0
> > Failing with Species[byte, 64, S_512_BIT]->Species[short, 32, S_512_BIT]
> (lanewise), partLimit=2, block=32, part=0, origin=0
> > Failing with Species[byte, 8, S_64_BIT]->Species[short, 4, S_64_BIT]
> (lanewise), partLimit=2, block=4, part=0, origin=0
> > Failing with Species[byte, 8, S_Max_BIT]->Species[short, 4, S_Max_BIT]
> (lanewise), partLimit=2, block=4, part=0, origin=0
> >
> > All of them fail because pairs are swapped like this:
> > expect: [1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0]
> > output: [0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8]
> >
> > Do you know if that's another endianness problem?
> >
> > Best regards,
> > Martin
> >
> >
> >> -----Original Message-----
> >> From: Paul Sandoz <paul.sandoz at oracle.com>
> >> Sent: Donnerstag, 22. Oktober 2020 02:27
> >> To: Doerr, Martin <martin.doerr at sap.com>
> >> Cc: hotspot-compiler-dev at openjdk.java.net
> >> Subject: Re: Vector API: stack overflow on Big Endian
> >>
> >> Hi Martin,
> >>
> >> We definitely have far less exposure by default to BE platforms now that
> >> SPARC is not a thing, it's easy to unintentionally hardcode a bias to LE.
> >>
> >> Would it be possible to try running the tests on your BE platforms with the
> >> following modification?
> >>
> >> ---
> >>
> a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractVect
> >> or.java
> >> +++
> >>
> b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractVect
> >> or.java
> >> @@ -500,7 +500,7 @@ abstract class AbstractVector<E> extends
> Vector<E> {
> >>     final <F>
> >>     AbstractVector<F> defaultReinterpret(AbstractSpecies<F> rsp) {
> >>         int blen = Math.max(this.bitSize(), rsp.vectorBitSize()) / Byte.SIZE;
> >> -        ByteOrder bo = ByteOrder.LITTLE_ENDIAN;
> >> +        ByteOrder bo = ByteOrder.nativeOrder();//LITTLE_ENDIAN;
> >>         ByteBuffer bb = ByteBuffer.allocate(blen);
> >>         this.intoByteBuffer(bb, 0, bo);
> >>         VectorMask<F> m = rsp.maskAll(true);
> >>
> >> Paul.
> >>
> >>
> >>> On Oct 21, 2020, at 4:10 AM, Doerr, Martin <martin.doerr at sap.com>
> >> wrote:
> >>>
> >>> Hi,
> >>>
> >>> I noticed stack overflow issues because of endless recursion on Big
> Endian
> >> platforms (s390 and PPC64) in several tests:
> >>>
> >>> E.g. Int64VectorLoadStoreTests:
> >>>
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.IntVector.maybeSwap(IntVector.j
> >> ava:3330)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.IntVector.intoByteBuffer(IntVecto
> >> r.java:3151)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.AbstractVector.defaultReinterpret
> >> (AbstractVector.java:505)
> >>>       at
> >>
> java.base/jdk.internal.vm.vector.VectorSupport.convert(VectorSupport.java
> >> :441)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.AbstractVector.convert0(Abstract
> >> Vector.java:686)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.AbstractVector.asVectorRawTemp
> >> late(AbstractVector.java:173)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.AbstractVector.asByteVectorRawT
> >> emplate(AbstractVector.java:179)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.Int64Vector.asByteVectorRaw(Int
> >> 64Vector.java:177)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.Int64Vector.asByteVectorRaw(Int
> >> 64Vector.java:41)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.IntVector.reinterpretAsBytes(IntV
> >> ector.java:3366)
> >>>       at
> >>
> jdk.incubator.vector/jdk.incubator.vector.IntVector.maybeSwap(IntVector.j
> >> ava:3330)
> >>>
> >>> Note that maybeSwap is endianness sensitive:
> >>>   IntVector maybeSwap(ByteOrder bo) {
> >>>       if (bo != NATIVE_ENDIAN) {
> >>>           return this.reinterpretAsBytes()
> >>>               .rearrange(swapBytesShuffle())
> >>>               .reinterpretAsInts();
> >>>       }
> >>>       return this;
> >>>   }
> >>>
> >>> How is this supposed to work?
> >>> Is anything platform specific missing?
> >>>
> >>> Thanks and best regards,
> >>> Martin
> >>>
> >



More information about the hotspot-compiler-dev mailing list