< prev index next >

test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java

Print this page
*** 163,138 ***
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIfAnd = {"MaxVectorSize", "16", "UseCompactObjectHeaders", "false"}, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testd(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with the same structure.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr1[2*i+2] * sArr2[2*i+2]) + (sArr1[2*i+3] * sArr2[2*i+3]));
-             // Hand-unrolling can mess with AlignVector and UseCompactObjectHeaders.
-             // We need all addresses 8-byte aligned.
-             //
-             // out:
-             //   adr = base + UNSAFE.ARRAY_INT_BASE_OFFSET + 8*iter
-             //                = 16 (or 12 if UseCompactObjectHeaders=true)
-             // -> never aligned!
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIfAnd = {"MaxVectorSize", "16", "UseCompactObjectHeaders", "false" }, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] teste(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr2[2*i+2] * sArr1[2*i+2]) + (sArr1[2*i+3] * sArr2[2*i+3])); // swap(1 2)
-             // Hand-unrolling can mess with AlignVector and UseCompactObjectHeaders.
-             // We need all addresses 8-byte aligned.
-             //
-             // out:
-             //   adr = base + UNSAFE.ARRAY_INT_BASE_OFFSET + 8*iter
-             //                = 16 (or 12 if UseCompactObjectHeaders=true)
-             // -> never aligned!
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIfAnd = {"MaxVectorSize", "16", "UseCompactObjectHeaders", "false" }, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testf(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr2[2*i+2] * sArr1[2*i+2]) + (sArr2[2*i+3] * sArr1[2*i+3])); // swap(1 2), swap(3 4)
-             // Hand-unrolling can mess with AlignVector and UseCompactObjectHeaders.
-             // We need all addresses 8-byte aligned.
-             //
-             // out:
-             //   adr = base + UNSAFE.ARRAY_INT_BASE_OFFSET + 8*iter
-             //                = 16 (or 12 if UseCompactObjectHeaders=true)
-             // -> never aligned!
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIfAnd = {"MaxVectorSize", "16", "UseCompactObjectHeaders", "false" }, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testg(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr1[2*i+3] * sArr2[2*i+3]) + (sArr1[2*i+2] * sArr2[2*i+2])); // swap(1 3), swap(2 4)
-             // Hand-unrolling can mess with AlignVector and UseCompactObjectHeaders.
-             // We need all addresses 8-byte aligned.
-             //
-             // out:
-             //   adr = base + UNSAFE.ARRAY_INT_BASE_OFFSET + 8*iter
-             //                = 16 (or 12 if UseCompactObjectHeaders=true)
-             // -> never aligned!
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIfAnd = {"MaxVectorSize", "16", "UseCompactObjectHeaders", "false" }, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
-         applyIfOr = { "UseCompactObjectHeaders", "false", "AlignVector", "false" },
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testh(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr2[2*i+3] * sArr1[2*i+3]) + (sArr2[2*i+2] * sArr1[2*i+2])); // swap(1 4), swap(2 3)
-             // Hand-unrolling can mess with AlignVector and UseCompactObjectHeaders.
-             // We need all addresses 8-byte aligned.
-             //
-             // out:
-             //   adr = base + UNSAFE.ARRAY_INT_BASE_OFFSET + 8*iter
-             //                = 16 (or 12 if UseCompactObjectHeaders=true)
-             // -> never aligned!
          }
          return out;
      }
  
      @Test
--- 163,93 ---
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIf = {"MaxVectorSize", "16"}, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testd(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with the same structure.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr1[2*i+2] * sArr2[2*i+2]) + (sArr1[2*i+3] * sArr2[2*i+3]));
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIf = {"MaxVectorSize", "16"}, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] teste(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr2[2*i+2] * sArr1[2*i+2]) + (sArr1[2*i+3] * sArr2[2*i+3])); // swap(1 2)
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIf = {"MaxVectorSize", "16"}, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testf(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr2[2*i+2] * sArr1[2*i+2]) + (sArr2[2*i+3] * sArr1[2*i+3])); // swap(1 2), swap(3 4)
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIf = {"MaxVectorSize", "16"}, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testg(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr1[2*i+3] * sArr2[2*i+3]) + (sArr1[2*i+2] * sArr2[2*i+2])); // swap(1 3), swap(2 4)
          }
          return out;
      }
  
      @Test
      @IR(applyIfCPUFeature = {"sse2", "true"},
          applyIfPlatform = {"64-bit", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"asimd", "true"},
!         applyIf = {"MaxVectorSize", "16"}, // AD file requires vector_length = 16
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"})
      @IR(applyIfCPUFeature = {"avx512_vnni", "true"},
          counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"})
      public static int[] testh(int[] out) {
          for (int i = 0; i < ITER-2; i+=2) {
              // Unrolled, with some swaps.
              out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1]));
              out[i+1] += ((sArr2[2*i+3] * sArr1[2*i+3]) + (sArr2[2*i+2] * sArr1[2*i+2])); // swap(1 4), swap(2 3)
          }
          return out;
      }
  
      @Test
< prev index next >