RFR: 8262355: Support for AVX-512 opmask register allocation. [v12]

Jatin Bhateja jbhateja at openjdk.java.net
Fri Mar 19 14:35:49 UTC 2021


On Fri, 19 Mar 2021 08:05:25 GMT, Ningsheng Jian <njian at openjdk.org> wrote:

>> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 12 commits:
>> 
>>  - Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8262355
>>  - 8262355: Review comments resolutions.
>>  - 8262355: Fix build failure
>>  - 8262355: Review comments resolution.
>>  - 8262355: Removing object re-materialization handling for mask-generating nodes during de-opt, it will be added separately.
>>  - 8262355: Fix for windows build failure.
>>  - 8262355: Fix for hs-minimal and windows build failures.
>>  - 8262355 : Review comments resolution and deopt handling for mask generating nodes reconstruction.
>>  - 8262355: Some synthetic changes for cleanup.
>>  - 8262355: Creating a new ideal type TypeVectMask for mask generating nodes.
>>  - ... and 2 more: https://git.openjdk.java.net/jdk/compare/e152cc03...f1748bf9
>
> src/hotspot/share/opto/type.hpp line 1709:
> 
>> 1707: 
>> 1708: inline const TypeVect *Type::is_vect() const {
>> 1709:   assert( _base >= VectorM && _base <= VectorZ, "Not a Vector" );
> 
> For is_vect() can we make it only valid for vector type while invalid for mask type? I think that sounds more reasonable, and could lower risk, given that there are a lot of is_vect() usages in existing code.

Hi @nsjian , @iwanowww, 

On a second thought, we may enforce strict base type constraint (base >= VectorA && < base <= VectorZ)  on TypeVect::isa_vect routine, but  TypeVect::is_vect should be relaxed to include TypeVectorMask , considering TypeVectMask is a subclass of TypeVect and thus qualifies to be a vector type.  It will simplify adding conditional checks across the code. 
Since X86 supports two sorts of masks types (a TypeVect for non-AVX512 and a TypeVectMask for AVX-512) thus relaxing the constraint on TypeVect::is_vect will save un-necessary complexity.  

Looking forward to your feedback on this. 

Best Regards

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

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


More information about the hotspot-compiler-dev mailing list