ARM64: Adjust SIMD checker tests for SVE.

Adds SVE-specific checker line for SIMD tests
using isaHasFeature() function.

Test: test-art-target with Neon.
Test: art tests on FVP (steps in test/README.arm_fvp.md)
      with FVP arg:
      -C SVE.ScalableVectorExtension.veclen=[2,4]
      (SVE vector [128,256] bits wide)

Change-Id: I8f2134861b47437823797da48a3ffb680bafc544
diff --git a/test/527-checker-array-access-simd/src/Main.java b/test/527-checker-array-access-simd/src/Main.java
index 8af5465..173165a 100644
--- a/test/527-checker-array-access-simd/src/Main.java
+++ b/test/527-checker-array-access-simd/src/Main.java
@@ -25,47 +25,105 @@
   /// CHECK-START-ARM64: void Main.checkIntCase(int[]) instruction_simplifier_arm64 (before)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>]
-  /// CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>,<<LoopP>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkIntCase(int[]) instruction_simplifier_arm64 (after)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
-  /// CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
-  /// CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
-  /// CHECK-DAG:             <<Address2:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Address2>>,<<Add>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>,<<LoopP>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
+  ///     CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
+  ///     CHECK-DAG:             <<Address2:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Address2>>,<<Add>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkIntCase(int[]) GVN$after_arch (after)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
-  /// CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
-  /// CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
-  /// CHECK-NOT:                                    IntermediateAddress
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Address1>>,<<Add>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>,<<LoopP>>]
+  ///     CHECK-NOT:                                    IntermediateAddress
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
+  ///     CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
+  ///     CHECK-NOT:                                    IntermediateAddress
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Address1>>,<<Add>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkIntCase(int[]) disassembly (after)
-  /// CHECK:                                        IntermediateAddressIndex
-  /// CHECK-NEXT:                                   add w{{[0-9]+}}, w{{[0-9]+}}, w{{[0-9]+}}, lsl #2
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-NOT:                                    IntermediateAddressIndex
+  ///     CHECK-NOT:                                    IntermediateAddress
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK:                                        IntermediateAddressIndex
+  ///     CHECK-NEXT:                                   add w{{[0-9]+}}, w{{[0-9]+}}, w{{[0-9]+}}, lsl #2
+  //
+  /// CHECK-FI:
   public static void checkIntCase(int[] a) {
     for (int i = 0; i < 128; i++) {
       a[i] += 5;
@@ -75,51 +133,109 @@
   /// CHECK-START-ARM64: void Main.checkByteCase(byte[]) instruction_simplifier_arm64 (before)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>]
-  /// CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>,<<LoopP>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
+
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkByteCase(byte[]) instruction_simplifier_arm64 (after)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const0:i\d+>>        IntConstant 0
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const0>>]
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
-  /// CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
-  /// CHECK-DAG:             <<Address2:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const0>>]
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Address2>>,<<Add>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>,<<LoopP>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const0>>]
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
+  ///     CHECK-DAG:             <<Address2:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const0>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Address2>>,<<Add>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkByteCase(byte[]) GVN$after_arch (after)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const0:i\d+>>        IntConstant 0
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const0>>]
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
-  /// CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
-  /// CHECK-NOT:                                    IntermediateAddress
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Address1>>,<<Add>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>,<<LoopP>>]
+  ///     CHECK-NOT:                                    IntermediateAddress
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Add>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const0>>]
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array>>,<<Address1>>]
+  ///     CHECK-DAG:             <<Add:d\d+>>           VecAdd [<<Load>>,<<Repl>>]
+  ///     CHECK-NOT:                                    IntermediateAddress
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Address1>>,<<Add>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkByteCase(byte[]) disassembly (after)
-  /// CHECK:                                        IntermediateAddressIndex
-  /// CHECK-NEXT:                                   add w{{[0-9]+}}, w{{[0-9]+}}, #0x{{[0-9a-fA-F]+}}
-  /// CHECK:                                        VecLoad
-  /// CHECK-NEXT:                                   ldr q{{[0-9]+}}, [x{{[0-9]+}}, x{{[0-9]+}}]
-  /// CHECK:                                        VecStore
-  /// CHECK-NEXT:                                   str q{{[0-9]+}}, [x{{[0-9]+}}, x{{[0-9]+}}]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-NOT:                                    IntermediateAddressIndex
+  ///     CHECK-NOT:                                    IntermediateAddress
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK:                                        IntermediateAddressIndex
+  ///     CHECK-NEXT:                                   add w{{[0-9]+}}, w{{[0-9]+}}, #0x{{[0-9a-fA-F]+}}
+  ///     CHECK:                                        VecLoad
+  ///     CHECK-NEXT:                                   ldr q{{[0-9]+}}, [x{{[0-9]+}}, x{{[0-9]+}}]
+  ///     CHECK:                                        VecStore
+  ///     CHECK-NEXT:                                   str q{{[0-9]+}}, [x{{[0-9]+}}, x{{[0-9]+}}]
+  //
+  /// CHECK-FI:
   public static void checkByteCase(byte[] a) {
     for (int i = 0; i < 128; i++) {
       a[i] += 5;
@@ -129,21 +245,48 @@
   /// CHECK-START-ARM64: void Main.checkSingleAccess(int[]) instruction_simplifier_arm64 (before)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Repl>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Repl>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Repl>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkSingleAccess(int[]) instruction_simplifier_arm64 (after)
   /// CHECK-DAG:             <<Array:l\d+>>         ParameterValue
   /// CHECK-DAG:             <<Const0:i\d+>>        IntConstant 0
   /// CHECK-DAG:             <<Const5:i\d+>>        IntConstant 5
-  /// CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Repl>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>,{{j\d+}}]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Repl>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<Repl:d\d+>>          VecReplicateScalar [<<Const5>>]
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:                                    VecStore [<<Array>>,<<Index>>,<<Repl>>]
+  //
+  /// CHECK-FI:
+  //
   /// CHECK-NOT:                                    IntermediateAddress
   public static void checkSingleAccess(int[] a) {
     for (int i = 0; i < 128; i++) {
@@ -155,43 +298,97 @@
   /// CHECK-DAG:             <<Array1:l\d+>>        ParameterValue
   /// CHECK-DAG:             <<Array2:l\d+>>        ParameterValue
   //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Index>>]
-  /// CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>]
-  /// CHECK-DAG:                                    VecStore [<<Array2>>,<<Index>>,<<Cnv>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>,<<LoopP>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array2>>,<<Index>>,<<Cnv>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Index>>]
+  ///     CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array2>>,<<Index>>,<<Cnv>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkInt2Float(int[], float[]) instruction_simplifier_arm64 (after)
   /// CHECK-DAG:             <<Array1:l\d+>>        ParameterValue
   /// CHECK-DAG:             <<Array2:l\d+>>        ParameterValue
-  /// CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
-  /// CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Address1>>]
-  /// CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>]
-  /// CHECK-DAG:             <<Address2:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
-  /// CHECK-DAG:                                    VecStore [<<Array2>>,<<Address2>>,<<Cnv>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>,<<LoopP>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array2>>,<<Index>>,<<Cnv>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
+  ///     CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Address1>>]
+  ///     CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>]
+  ///     CHECK-DAG:             <<Address2:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
+  ///     CHECK-DAG:                                    VecStore [<<Array2>>,<<Address2>>,<<Cnv>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkInt2Float(int[], float[]) GVN$after_arch (after)
   /// CHECK-DAG:             <<Array1:l\d+>>        ParameterValue
   /// CHECK-DAG:             <<Array2:l\d+>>        ParameterValue
-  /// CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
-  /// CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
-  //  -------------- Loop
-  /// CHECK-DAG:             <<Index:i\d+>>         Phi
-  /// CHECK-DAG:                                    If
-  /// CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
-  /// CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Address1>>]
-  /// CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>]
-  /// CHECK-NOT:                                    IntermediateAddress
-  /// CHECK-DAG:                                    VecStore [<<Array2>>,<<Address1>>,<<Cnv>>]
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<LoopP:j\d+>>         VecPredWhile
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Index>>,<<LoopP>>]
+  ///     CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>,<<LoopP>>]
+  ///     CHECK-NOT:                                    IntermediateAddress
+  ///     CHECK-DAG:                                    VecStore [<<Array2>>,<<Index>>,<<Cnv>>,<<LoopP>>]
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK-DAG:             <<DataOffset:i\d+>>    IntConstant 12
+  ///     CHECK-DAG:             <<Const2:i\d+>>        IntConstant 2
+  //      -------------- Loop
+  ///     CHECK-DAG:             <<Index:i\d+>>         Phi
+  ///     CHECK-DAG:                                    If
+  ///     CHECK-DAG:             <<Address1:i\d+>>      IntermediateAddressIndex [<<Index>>,<<DataOffset>>,<<Const2>>]
+  ///     CHECK-DAG:             <<Load:d\d+>>          VecLoad [<<Array1>>,<<Address1>>]
+  ///     CHECK-DAG:             <<Cnv:d\d+>>           VecCnv [<<Load>>]
+  ///     CHECK-NOT:                                    IntermediateAddress
+  ///     CHECK-DAG:                                    VecStore [<<Array2>>,<<Address1>>,<<Cnv>>]
+  //
+  /// CHECK-FI:
 
   /// CHECK-START-ARM64: void Main.checkInt2Float(int[], float[]) disassembly (after)
-  /// CHECK:                                        IntermediateAddressIndex
-  /// CHECK-NEXT:                                   add w{{[0-9]+}}, w{{[0-9]+}}, w{{[0-9]+}}, lsl #2
+  /// CHECK-IF:     hasIsaFeature("sve")
+  //
+  //      IntermediateAddressIndex is not supported for SVE.
+  ///     CHECK-NOT:                                    IntermediateAddressIndex
+  ///     CHECK-NOT:                                    IntermediateAddress
+  //
+  /// CHECK-ELSE:
+  //
+  ///     CHECK:                                        IntermediateAddressIndex
+  ///     CHECK-NEXT:                                   add w{{[0-9]+}}, w{{[0-9]+}}, w{{[0-9]+}}, lsl #2
+  //
+  /// CHECK-FI:
   public static void checkInt2Float(int[] a, float[] b) {
     for (int i = 0; i < 128; i++) {
       b[i] = (float) a[i];