< prev index next >

test/hotspot/jtreg/compiler/igvn/TestMaskedStoreIdealization.java

Print this page
*** 140,10 ***
--- 140,19 ---
                                  applyIfCPUFeatureOr = {"avx512", "true", "sve", "true"})
                          """
                      );
                  });
  
+                 if (op == Operation.STORE_MASK && vec.elementType.name().equals("int") && vec.length == 4) {
+                     return scope(
+                         """
+                             // No IR-verification for testInteger4Mask because it intermittently
+                             // compiles to a different code shape. Probably due to a fully set mask.
+                         """
+                     );
+                 }
+ 
                  return scope(
                      let("pty", vec.elementType.name()),
                      let("ptyIR", ptyIR),
                      let("idx", idx),
                      switch (op) {

*** 154,18 ***
                          // } else {
                          //     intoArray(a, offset, mask);
                          // }
                          // leading to both stores of the diamond being live. This is highly profile dependent and cannot be predicted.
                          """
!                             @IR(counts = {IRNode.START + "Store#{ptyIR}" + IRNode.MID + "(Memory: @aryptr:#{pty}\\\\[int:#{arraySize}\\\\]).*(:NotNull:exact\\\\[\\\\d+\\\\]).*" + IRNode.END, ">=1",
!                                           IRNode.START + "Store#{ptyIR}" + IRNode.MID + "(Memory: @aryptr:#{pty}\\\\[int:#{arraySize}\\\\]).*(:NotNull:exact\\\\[\\\\d+\\\\]).*" + IRNode.END, "<=2"},
                                  applyIfCPUFeatureOr = {"avx512", "true", "sve", "true"},
                                  phase = CompilePhase.BEFORE_MATCHING)
                          """;
                          case STORE_SCATTER ->
                          """
!                             @IR(counts = {IRNode.START + "Store#{ptyIR}" + IRNode.MID + "(Memory: @aryptr:#{pty}\\\\[int:#{arraySize}\\\\]).*(:NotNull:exact\\\\[\\\\d+\\\\]).*" + IRNode.END, "=1"},
                                  applyIfCPUFeatureOr = {"avx512", "true", "sve", "true"},
                                  phase = CompilePhase.BEFORE_MATCHING)
                          """;
                          case STORE_VECTOR_AFTER_SCATTER -> opVerification.asToken();
                          case  RANDOM -> "";
--- 163,18 ---
                          // } else {
                          //     intoArray(a, offset, mask);
                          // }
                          // leading to both stores of the diamond being live. This is highly profile dependent and cannot be predicted.
                          """
!                             @IR(counts = {IRNode.START + "Store#{ptyIR}" + IRNode.MID + "(Memory: @aryptr:[a-z_]*:#{pty}\\\\[int:#{arraySize}\\\\]).*(:NotNull:exact:[a-z_:]*\\\\[\\\\d+\\\\]).*" + IRNode.END, ">=1",
!                                           IRNode.START + "Store#{ptyIR}" + IRNode.MID + "(Memory: @aryptr:[a-z_]*:#{pty}\\\\[int:#{arraySize}\\\\]).*(:NotNull:exact:[a-z_:].*\\\\[\\\\d+\\\\]).*" + IRNode.END, "<=2"},
                                  applyIfCPUFeatureOr = {"avx512", "true", "sve", "true"},
                                  phase = CompilePhase.BEFORE_MATCHING)
                          """;
                          case STORE_SCATTER ->
                          """
!                             @IR(counts = {IRNode.START + "Store#{ptyIR}" + IRNode.MID + "(Memory: @aryptr:[a-z_]*:#{pty}\\\\[int:#{arraySize}\\\\]).*(:NotNull:exact:[a-z_:]*\\\\[\\\\d+\\\\]).*" + IRNode.END, "=1"},
                                  applyIfCPUFeatureOr = {"avx512", "true", "sve", "true"},
                                  phase = CompilePhase.BEFORE_MATCHING)
                          """;
                          case STORE_VECTOR_AFTER_SCATTER -> opVerification.asToken();
                          case  RANDOM -> "";
< prev index next >