On Thu, 16 Apr 2026 05:43:21 GMT, Jatin Bhateja <[email protected]> wrote:
>>> If we want to retain the asserts, they should be changed to: assert >>> SUPPORTS_AVX512F == (VectorShape.getMaxVectorBitSize(int.class) <= 512); >>> assert SUPPORTS_AVX2 == (VectorShape.getMaxVectorBitSize(byte.class) <= >>> 256); assert SUPPORTS_AVX == (VectorShape.getMaxVectorBitSize(float.class) >>> <= 256); >>> >>> VectorShape.getMaxVectorBitSize is dependent on MaxVectorSize. >>> MaxVectorSize is a JVM command line option and can be set by the user to be >>> a valid <= the cpu supported max. >> >> There is a possibility of assertion failures at different AVX levels, e.g. >> when UseAVX=1 then first assertion will fails since SUPPORTS_AVX512F will be >> false but right hand side of equality will still be true. Similarly with >> UseAVX=3 on a system with AVX512BW feature, second assertion will fail >> because VectorShape.getMaxVectorBitSize(byte.class) will return 512bit > >> The question is whether vector math stubs should be used or not when >> corresponding vector shapes aren't supported. That's what the asserts were >> about. The assumption was that the support is there when SVML stubs are >> used. I'd prefer `VectorMathLibrary` to be adjusted to take >> `VectorShape.getMaxVectorBitSize()` into account. > > Library entry suffix selection takes into account the species.vectorBitSize() > and also depends on exact feature checks. > https://github.com/openjdk/jdk/blob/master/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMathLibrary.java#L123 > > Also following assertion already consults VectorShapre.getMaxVectorBitSize > https://github.com/openjdk/jdk/blob/master/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMathLibrary.java#L124 > > In addition SVML.isSupported depends on VectorSupport.getMaxLaneCount which > depends on MaxVectorSize. > https://github.com/openjdk/jdk/blob/master/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMathLibrary.java#L153 > > Its just that those 3 assertion in CPUFeatures were strict. Thanks for the pointer. I agree the asserts are too strict. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/30015#discussion_r3095227505
