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

Reply via email to