AArch64: Fix SVE match rule issues for VectorMask.andNot()

XMLWordPrintable

    • Type: Enhancement
    • Resolution: Unresolved
    • Priority: P4
    • tbd
    • Affects Version/s: None
    • Component/s: hotspot

      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

            Assignee:
            Xiaohong Gong
            Reporter:
            Xiaohong Gong
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: