It has below match rules for "VectorMask.andNot()" API for SVE systems:
```
match(Set pd (AndVMask pn (XorVMask pm (MaskAll m1))));
```
However there are two issues in matcher related to it now:
1) The generated machine nodes for "MaskAll" are duplicated when "MaskAll" is an input of "XorVMask", no matter whether it is a child on the andNode chain.
2) Three mask bitwise logic IRs (AndVMask, OrVMask, XorVMask) are not added into the commutative vector op list in matcher, causing some cases cannot be handled by the above rule as expected [1].
[1] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/adlc/formssel.cpp#L3967
```
match(Set pd (AndVMask pn (XorVMask pm (MaskAll m1))));
```
However there are two issues in matcher related to it now:
1) The generated machine nodes for "MaskAll" are duplicated when "MaskAll" is an input of "XorVMask", no matter whether it is a child on the andNode chain.
2) Three mask bitwise logic IRs (AndVMask, OrVMask, XorVMask) are not added into the commutative vector op list in matcher, causing some cases cannot be handled by the above rule as expected [1].
[1] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/adlc/formssel.cpp#L3967
- relates to
-
JDK-8264109 Add vectorized implementation for VectorMask.andNot()
-
- Resolved
-
- links to
-
Review(master)
openjdk/jdk/30013