public class org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest extends org.graalvm.compiler.core.aarch64.test.AArch64MatchRuleTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest
  super_class: org.graalvm.compiler.core.aarch64.test.AArch64MatchRuleTest
{
  private static final java.util.function.Predicate<org.graalvm.compiler.lir.LIRInstruction> PRED_EXTEND_ADD_SHIFT;
    descriptor: Ljava/util/function/Predicate;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Predicate<Lorg/graalvm/compiler/lir/LIRInstruction;>;

  private static final java.util.function.Predicate<org.graalvm.compiler.lir.LIRInstruction> PRED_EXTEND_SUB_SHIFT;
    descriptor: Ljava/util/function/Predicate;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Predicate<Lorg/graalvm/compiler/lir/LIRInstruction;>;

  private static final java.lang.Long[] LONG_VALUES;
    descriptor: [Ljava/lang/Long;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Integer[] INT_VALUES;
    descriptor: [Ljava/lang/Integer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 36
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest.lambda$0(Lorg/graalvm/compiler/lir/LIRInstruction;)Z (6)
                  (Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            putstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_ADD_SHIFT:Ljava/util/function/Predicate;
         1: .line 37
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest.lambda$1(Lorg/graalvm/compiler/lir/LIRInstruction;)Z (6)
                  (Lorg/graalvm/compiler/lir/LIRInstruction;)Z
            putstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_SUB_SHIFT:Ljava/util/function/Predicate;
         2: .line 39
            bipush 8
            anewarray java.lang.Long
            dup
            iconst_0
            ldc -1
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            lconst_0
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
            ldc 1311768465173141112
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_3
            ldc 4294967295
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_4
            ldc 18
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_5
            ldc 4660
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            bipush 6
            ldc -9223372036854775808
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            bipush 7
            ldc 9223372036854775807
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            putstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.LONG_VALUES:[Ljava/lang/Long;
         3: .line 40
            bipush 6
            anewarray java.lang.Integer
            dup
            iconst_0
            iconst_m1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            sipush 4660
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            ldc 305419896
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
            ldc -2147483648
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_5
            ldc 2147483647
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            putstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.INT_VALUES:[Ljava/lang/Integer;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
         0: .line 34
            aload 0 /* this */
            invokespecial org.graalvm.compiler.core.aarch64.test.AArch64MatchRuleTest.<init>:()V
            return
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;

  private <T> void predicateExist(java.lang.String[], T[], java.util.function.Predicate<org.graalvm.compiler.lir.LIRInstruction>);
    descriptor: ([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // java.lang.String[] testCases
        start local 2 // java.lang.Object[] values
        start local 3 // java.util.function.Predicate predicate
         0: .line 43
            aload 1 /* testCases */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 9
      StackMap locals: org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest java.lang.String[] java.lang.Object[] java.util.function.Predicate top int int java.lang.String[]
      StackMap stack:
         1: aload 7
            iload 5
            aaload
            astore 4 /* t */
        start local 4 // java.lang.String t
         2: .line 44
            aload 2 /* values */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 7
      StackMap locals: org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest java.lang.String[] java.lang.Object[] java.util.function.Predicate java.lang.String int int java.lang.String[] top int int java.lang.Object[]
      StackMap stack:
         3: aload 11
            iload 9
            aaload
            astore 8 /* value */
        start local 8 // java.lang.Object value
         4: .line 45
            aload 0 /* this */
            aload 4 /* t */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 8 /* value */
            aastore
            dup
            iconst_1
            aload 8 /* value */
            aastore
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.test:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/compiler/core/test/GraalCompilerTest$Result;
            pop
         5: .line 46
            aload 0 /* this */
            aload 4 /* t */
            aload 3 /* predicate */
            iconst_1
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.checkLIR:(Ljava/lang/String;Ljava/util/function/Predicate;I)V
        end local 8 // java.lang.Object value
         6: .line 44
            iinc 9 1
      StackMap locals:
      StackMap stack:
         7: iload 9
            iload 10
            if_icmplt 3
        end local 4 // java.lang.String t
         8: .line 43
            iinc 5 1
      StackMap locals: org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest java.lang.String[] java.lang.Object[] java.util.function.Predicate top int int java.lang.String[]
      StackMap stack:
         9: iload 5
            iload 6
            if_icmplt 1
        10: .line 49
            return
        end local 3 // java.util.function.Predicate predicate
        end local 2 // java.lang.Object[] values
        end local 1 // java.lang.String[] testCases
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0   11     1  testCases  [Ljava/lang/String;
            0   11     2     values  [Ljava/lang/Object;
            0   11     3  predicate  Ljava/util/function/Predicate<Lorg/graalvm/compiler/lir/LIRInstruction;>;
            2    8     4          t  Ljava/lang/String;
            4    6     8      value  TT;
    Signature: <T:Ljava/lang/Object;>([Ljava/lang/String;[TT;Ljava/util/function/Predicate<Lorg/graalvm/compiler/lir/LIRInstruction;>;)V
    MethodParameters:
           Name  Flags
      testCases  
      values     
      predicate  

  public long addI2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 52
            lload 3 /* y */
            l2i
            istore 5 /* z */
        start local 5 // int z
         1: .line 53
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_3
            lshl
            ladd
            lreturn
        end local 5 // int z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  I
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addB2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 57
            lload 3 /* y */
            l2i
            i2b
            istore 5 /* z */
        start local 5 // byte z
         1: .line 58
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_2
            lshl
            ladd
            lreturn
        end local 5 // byte z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addC2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 62
            lload 3 /* y */
            l2i
            i2c
            istore 5 /* z */
        start local 5 // char z
         1: .line 63
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_1
            lshl
            ladd
            lreturn
        end local 5 // char z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addS2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 67
            lload 3 /* y */
            l2i
            i2s
            istore 5 /* z */
        start local 5 // short z
         1: .line 68
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_4
            lshl
            ladd
            lreturn
        end local 5 // short z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subI2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 72
            lload 3 /* y */
            l2i
            istore 5 /* z */
        start local 5 // int z
         1: .line 73
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_1
            lshl
            lsub
            lreturn
        end local 5 // int z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  I
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subB2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 77
            lload 3 /* y */
            l2i
            i2b
            istore 5 /* z */
        start local 5 // byte z
         1: .line 78
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_2
            lshl
            lsub
            lreturn
        end local 5 // byte z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subC2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 82
            lload 3 /* y */
            l2i
            i2c
            istore 5 /* z */
        start local 5 // char z
         1: .line 83
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_3
            lshl
            lsub
            lreturn
        end local 5 // char z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subS2LShift(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 87
            lload 3 /* y */
            l2i
            i2s
            istore 5 /* z */
        start local 5 // short z
         1: .line 88
            lload 1 /* x */
            iload 5 /* z */
            i2l
            iconst_4
            lshl
            lsub
            lreturn
        end local 5 // short z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addI2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 92
            lload 3 /* y */
            l2i
            istore 5 /* z */
        start local 5 // int z
         1: .line 93
            lload 1 /* x */
            iload 5 /* z */
            i2l
            ladd
            lreturn
        end local 5 // int z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  I
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addB2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 97
            lload 3 /* y */
            l2i
            i2b
            istore 5 /* z */
        start local 5 // byte z
         1: .line 98
            lload 1 /* x */
            iload 5 /* z */
            i2l
            ladd
            lreturn
        end local 5 // byte z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addC2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 102
            lload 3 /* y */
            l2i
            i2c
            istore 5 /* z */
        start local 5 // char z
         1: .line 103
            lload 1 /* x */
            iload 5 /* z */
            i2l
            ladd
            lreturn
        end local 5 // char z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public long addS2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 107
            lload 3 /* y */
            l2i
            i2s
            istore 5 /* z */
        start local 5 // short z
         1: .line 108
            lload 1 /* x */
            iload 5 /* z */
            i2l
            ladd
            lreturn
        end local 5 // short z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addB2S(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 112
            iload 1 /* x */
            i2s
            istore 3 /* a */
        start local 3 // short a
         1: .line 113
            iload 2 /* y */
            i2b
            istore 4 /* b */
        start local 4 // byte b
         2: .line 114
            iload 3 /* a */
            iload 4 /* b */
            iadd
            ireturn
        end local 4 // byte b
        end local 3 // short a
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    3     1     x  I
            0    3     2     y  I
            1    3     3     a  S
            2    3     4     b  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addB2SShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 118
            iload 1 /* x */
            i2s
            istore 3 /* a */
        start local 3 // short a
         1: .line 119
            iload 2 /* y */
            i2b
            istore 4 /* b */
        start local 4 // byte b
         2: .line 120
            iload 3 /* a */
            iload 4 /* b */
            iconst_2
            ishl
            iadd
            ireturn
        end local 4 // byte b
        end local 3 // short a
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    3     1     x  I
            0    3     2     y  I
            1    3     3     a  S
            2    3     4     b  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addB2I(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 124
            iload 2 /* y */
            i2b
            istore 3 /* z */
        start local 3 // byte z
         1: .line 125
            iload 1 /* x */
            iload 3 /* z */
            iadd
            ireturn
        end local 3 // byte z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addB2IShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 129
            iload 2 /* y */
            i2b
            istore 3 /* z */
        start local 3 // byte z
         1: .line 130
            iload 1 /* x */
            iload 3 /* z */
            iconst_3
            ishl
            iadd
            ireturn
        end local 3 // byte z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addS2I(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 134
            iload 2 /* y */
            i2s
            istore 3 /* z */
        start local 3 // short z
         1: .line 135
            iload 1 /* x */
            iload 3 /* z */
            iadd
            ireturn
        end local 3 // short z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addS2IShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 139
            iload 2 /* y */
            i2s
            istore 3 /* z */
        start local 3 // short z
         1: .line 140
            iload 1 /* x */
            iload 3 /* z */
            iconst_2
            ishl
            iadd
            ireturn
        end local 3 // short z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addC2I(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 144
            iload 2 /* y */
            i2c
            istore 3 /* z */
        start local 3 // char z
         1: .line 145
            iload 1 /* x */
            iload 3 /* z */
            iadd
            ireturn
        end local 3 // char z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public int addC2IShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 149
            iload 2 /* y */
            i2c
            istore 3 /* z */
        start local 3 // char z
         1: .line 150
            iload 1 /* x */
            iload 3 /* z */
            iconst_1
            ishl
            iadd
            ireturn
        end local 3 // char z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public void mergeSignExtendIntoAdd();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
         0: .line 155
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "addB2S"
            aastore
            dup
            iconst_1
            ldc "addB2I"
            aastore
            dup
            iconst_2
            ldc "addS2I"
            aastore
            dup
            iconst_3
            ldc "addC2I"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.INT_VALUES:[Ljava/lang/Integer;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_ADD_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         1: .line 156
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "addB2L"
            aastore
            dup
            iconst_1
            ldc "addC2L"
            aastore
            dup
            iconst_2
            ldc "addI2L"
            aastore
            dup
            iconst_3
            ldc "addS2L"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.LONG_VALUES:[Ljava/lang/Long;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_ADD_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         2: .line 157
            return
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void mergeSignExtendShiftIntoAdd();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
         0: .line 161
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "addB2SShift"
            aastore
            dup
            iconst_1
            ldc "addB2IShift"
            aastore
            dup
            iconst_2
            ldc "addS2IShift"
            aastore
            dup
            iconst_3
            ldc "addC2IShift"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.INT_VALUES:[Ljava/lang/Integer;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_ADD_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         1: .line 162
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "addB2LShift"
            aastore
            dup
            iconst_1
            ldc "addC2LShift"
            aastore
            dup
            iconst_2
            ldc "addI2LShift"
            aastore
            dup
            iconst_3
            ldc "addS2LShift"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.LONG_VALUES:[Ljava/lang/Long;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_ADD_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         2: .line 163
            return
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public long subI2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 166
            lload 3 /* y */
            l2i
            istore 5 /* z */
        start local 5 // int z
         1: .line 167
            lload 1 /* x */
            iload 5 /* z */
            i2l
            lsub
            lreturn
        end local 5 // int z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  I
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subB2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 171
            lload 3 /* y */
            l2i
            i2b
            istore 5 /* z */
        start local 5 // byte z
         1: .line 172
            lload 1 /* x */
            iload 5 /* z */
            i2l
            lsub
            lreturn
        end local 5 // byte z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subC2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 176
            lload 3 /* y */
            l2i
            i2c
            istore 5 /* z */
        start local 5 // char z
         1: .line 177
            lload 1 /* x */
            iload 5 /* z */
            i2l
            lsub
            lreturn
        end local 5 // char z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public long subS2L(long, long);
    descriptor: (JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // long x
        start local 3 // long y
         0: .line 181
            lload 3 /* y */
            l2i
            i2s
            istore 5 /* z */
        start local 5 // short z
         1: .line 182
            lload 1 /* x */
            iload 5 /* z */
            i2l
            lsub
            lreturn
        end local 5 // short z
        end local 3 // long y
        end local 1 // long x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  J
            0    2     3     y  J
            1    2     5     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subB2S(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 186
            iload 1 /* x */
            i2s
            istore 3 /* a */
        start local 3 // short a
         1: .line 187
            iload 2 /* y */
            i2b
            istore 4 /* b */
        start local 4 // byte b
         2: .line 188
            iload 3 /* a */
            iload 4 /* b */
            isub
            ireturn
        end local 4 // byte b
        end local 3 // short a
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    3     1     x  I
            0    3     2     y  I
            1    3     3     a  S
            2    3     4     b  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subB2SShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 192
            iload 1 /* x */
            i2s
            istore 3 /* a */
        start local 3 // short a
         1: .line 193
            iload 2 /* y */
            i2b
            istore 4 /* b */
        start local 4 // byte b
         2: .line 194
            iload 3 /* a */
            iload 4 /* b */
            iconst_2
            ishl
            isub
            ireturn
        end local 4 // byte b
        end local 3 // short a
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    3     1     x  I
            0    3     2     y  I
            1    3     3     a  S
            2    3     4     b  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subB2I(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 198
            iload 2 /* y */
            i2b
            istore 3 /* z */
        start local 3 // byte z
         1: .line 199
            iload 1 /* x */
            iload 3 /* z */
            isub
            ireturn
        end local 3 // byte z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subB2IShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 203
            iload 2 /* y */
            i2b
            istore 3 /* z */
        start local 3 // byte z
         1: .line 204
            iload 1 /* x */
            iload 3 /* z */
            iconst_3
            ishl
            isub
            ireturn
        end local 3 // byte z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  B
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subS2I(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 208
            iload 2 /* y */
            i2s
            istore 3 /* z */
        start local 3 // short z
         1: .line 209
            iload 1 /* x */
            iload 3 /* z */
            isub
            ireturn
        end local 3 // short z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subS2IShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 213
            iload 2 /* y */
            i2s
            istore 3 /* z */
        start local 3 // short z
         1: .line 214
            iload 1 /* x */
            iload 3 /* z */
            iconst_2
            ishl
            isub
            ireturn
        end local 3 // short z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  S
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subC2I(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 218
            iload 2 /* y */
            i2c
            istore 3 /* z */
        start local 3 // char z
         1: .line 219
            iload 1 /* x */
            iload 3 /* z */
            isub
            ireturn
        end local 3 // char z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public int subC2IShift(int, int);
    descriptor: (II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
        start local 1 // int x
        start local 2 // int y
         0: .line 223
            iload 2 /* y */
            i2c
            istore 3 /* z */
        start local 3 // char z
         1: .line 224
            iload 1 /* x */
            iload 3 /* z */
            iconst_1
            ishl
            isub
            ireturn
        end local 3 // char z
        end local 2 // int y
        end local 1 // int x
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
            0    2     1     x  I
            0    2     2     y  I
            1    2     3     z  C
    MethodParameters:
      Name  Flags
      x     
      y     

  public void mergeSignExtendShiftIntoSub();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
         0: .line 229
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "subB2SShift"
            aastore
            dup
            iconst_1
            ldc "subB2IShift"
            aastore
            dup
            iconst_2
            ldc "subS2IShift"
            aastore
            dup
            iconst_3
            ldc "subC2IShift"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.INT_VALUES:[Ljava/lang/Integer;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_SUB_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         1: .line 230
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "subB2LShift"
            aastore
            dup
            iconst_1
            ldc "subC2LShift"
            aastore
            dup
            iconst_2
            ldc "subI2LShift"
            aastore
            dup
            iconst_3
            ldc "subS2LShift"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.LONG_VALUES:[Ljava/lang/Long;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_SUB_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         2: .line 231
            return
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void mergeSignExtendIntoSub();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
         0: .line 235
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "subB2S"
            aastore
            dup
            iconst_1
            ldc "subB2I"
            aastore
            dup
            iconst_2
            ldc "subS2I"
            aastore
            dup
            iconst_3
            ldc "subC2I"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.INT_VALUES:[Ljava/lang/Integer;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_SUB_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         1: .line 236
            aload 0 /* this */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "subB2L"
            aastore
            dup
            iconst_1
            ldc "subC2L"
            aastore
            dup
            iconst_2
            ldc "subI2L"
            aastore
            dup
            iconst_3
            ldc "subS2L"
            aastore
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.LONG_VALUES:[Ljava/lang/Long;
            getstatic org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.PRED_EXTEND_SUB_SHIFT:Ljava/util/function/Predicate;
            invokevirtual org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest.predicateExist:([Ljava/lang/String;[Ljava/lang/Object;Ljava/util/function/Predicate;)V
         2: .line 237
            return
        end local 0 // org.graalvm.compiler.core.aarch64.test.AArch64MergeExtendWithAddSubTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/core/aarch64/test/AArch64MergeExtendWithAddSubTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static boolean lambda$0(org.graalvm.compiler.lir.LIRInstruction);
    descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.LIRInstruction op
         0: .line 36
            aload 0 /* op */
            instanceof org.graalvm.compiler.lir.aarch64.AArch64ArithmeticOp$ExtendedAddSubShiftOp
            ifeq 1
            aload 0 /* op */
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.name:()Ljava/lang/String;
            ldc "ADD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // org.graalvm.compiler.lir.LIRInstruction op
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    op  Lorg/graalvm/compiler/lir/LIRInstruction;

  private static boolean lambda$1(org.graalvm.compiler.lir.LIRInstruction);
    descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.LIRInstruction op
         0: .line 37
            aload 0 /* op */
            instanceof org.graalvm.compiler.lir.aarch64.AArch64ArithmeticOp$ExtendedAddSubShiftOp
            ifeq 1
            aload 0 /* op */
            invokevirtual org.graalvm.compiler.lir.LIRInstruction.name:()Ljava/lang/String;
            ldc "SUB"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // org.graalvm.compiler.lir.LIRInstruction op
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    op  Lorg/graalvm/compiler/lir/LIRInstruction;
}
SourceFile: "AArch64MergeExtendWithAddSubTest.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Result = org.graalvm.compiler.core.test.GraalCompilerTest$Result of org.graalvm.compiler.core.test.GraalCompilerTest
  public ExtendedAddSubShiftOp = org.graalvm.compiler.lir.aarch64.AArch64ArithmeticOp$ExtendedAddSubShiftOp of org.graalvm.compiler.lir.aarch64.AArch64ArithmeticOp