Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8216580

Fix generation of VNNI vector code by allowing adjacent LoadS nodes to be isomorphic

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P3 P3
    • 13
    • 12, 13
    • hotspot
    • b11
    • x86

      Fix generation of vector code by allowing adjacent LoadS nodes to be isomorphic when they have different control RangeCheck nodes for a[i] and a[i+1] accesses in same MulAddS2I node.
      Separating it from JDK-8216050 in a new bug.

          [JDK-8216580] Fix generation of VNNI vector code by allowing adjacent LoadS nodes to be isomorphic

          HG Updates added a comment -
          URL: http://hg.openjdk.java.net/jdk/jdk/rev/6ffb8d7fe1e4
          User: vdeshpande
          Date: 2019-03-05 22:08:21 +0000

          HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk/jdk/rev/6ffb8d7fe1e4 User: vdeshpande Date: 2019-03-05 22:08:21 +0000

          Webrev with an added check against NULL.
          http://cr.openjdk.java.net/~vdeshpande/8216580/webrev.03/

          Vivek Deshpande (Inactive) added a comment - Webrev with an added check against NULL. http://cr.openjdk.java.net/~vdeshpande/8216580/webrev.03/

          My tier1-tier3 testing passed with few unrelated failures. Note, we don't have VNNI machines so the code is not exercised.
          [~vdeshpande] is running testing on VNNI machine.

          Vladimir Kozlov added a comment - My tier1-tier3 testing passed with few unrelated failures. Note, we don't have VNNI machines so the code is not exercised. [~vdeshpande] is running testing on VNNI machine.

          Vladimir Kozlov added a comment - http://cr.openjdk.java.net/~vdeshpande/8216580/webrev.02/

          Vivek Deshpande (Inactive) added a comment - Fixed parentheses at 1225,1226 http://cr.openjdk.java.net/~vdeshpande/8216580/webrev.01/

          Hi Rahul,
          The jtreg test Vec_MulAddS2I.java is the failing case.
          It does not generate wrong code, but it does not get vectorized as it cannot pack the adjacent LoadS nodes.

          Vivek Deshpande (Inactive) added a comment - Hi Rahul, The jtreg test Vec_MulAddS2I.java is the failing case. It does not generate wrong code, but it does not get vectorized as it cannot pack the adjacent LoadS nodes.

          Shouldn't this be an enhancement?

          Tobias Hartmann added a comment - Shouldn't this be an enhancement?

          initial ILW = wrong vector code generation; not commonly reported!; disable vectorization = HLM = P3

          Hi [~vdeshpande], please add a sample failing test case if any. Thanks.

          Rahul Raghavan added a comment - initial ILW = wrong vector code generation; not commonly reported!; disable vectorization = HLM = P3 Hi [~vdeshpande], please add a sample failing test case if any. Thanks.

          Vivek Deshpande (Inactive) added a comment - - edited
          Fix generation of vector code by allowing adjacent LoadS nodes to be isomorphic when they have different control RangeCheck nodes for a[i] and a[i+1] accesses in same MulAddS2I node.
          Webrev:
          http://cr.openjdk.java.net/~vdeshpande/8216580/webrev.00/

          Vivek Deshpande (Inactive) added a comment - - edited Fix generation of vector code by allowing adjacent LoadS nodes to be isomorphic when they have different control RangeCheck nodes for a[i] and a[i+1] accesses in same MulAddS2I node. Webrev: http://cr.openjdk.java.net/~vdeshpande/8216580/webrev.00/

            vdeshpande Vivek Deshpande (Inactive)
            vdeshpande Vivek Deshpande (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: