public interface org.graalvm.compiler.lir.gen.LIRGeneratorTool extends org.graalvm.compiler.lir.gen.DiagnosticLIRGeneratorTool, jdk.vm.ci.code.ValueKindFactory<org.graalvm.compiler.core.common.LIRKind>
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: org.graalvm.compiler.lir.gen.LIRGeneratorTool
  super_class: java.lang.Object
{
  public abstract org.graalvm.compiler.lir.gen.ArithmeticLIRGeneratorTool getArithmetic();
    descriptor: ()Lorg/graalvm/compiler/lir/gen/ArithmeticLIRGeneratorTool;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.graalvm.compiler.core.common.spi.CodeGenProviders getProviders();
    descriptor: ()Lorg/graalvm/compiler/core/common/spi/CodeGenProviders;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract jdk.vm.ci.code.TargetDescription target();
    descriptor: ()Ljdk/vm/ci/code/TargetDescription;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract jdk.vm.ci.meta.MetaAccessProvider getMetaAccess();
    descriptor: ()Ljdk/vm/ci/meta/MetaAccessProvider;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract jdk.vm.ci.code.CodeCacheProvider getCodeCache();
    descriptor: ()Ljdk/vm/ci/code/CodeCacheProvider;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.graalvm.compiler.core.common.spi.ForeignCallsProvider getForeignCalls();
    descriptor: ()Lorg/graalvm/compiler/core/common/spi/ForeignCallsProvider;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?> getCurrentBlock();
    descriptor: ()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;

  public abstract org.graalvm.compiler.lir.gen.LIRGenerationResult getResult();
    descriptor: ()Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract jdk.vm.ci.code.RegisterConfig getRegisterConfig();
    descriptor: ()Ljdk/vm/ci/code/RegisterConfig;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory getMoveFactory();
    descriptor: ()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory getSpillMoveFactory();
    descriptor: ()Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean canInlineConstant(jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/Constant;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      constant  

  public abstract boolean mayEmbedConstantLoad(jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/Constant;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      constant  

  public abstract jdk.vm.ci.meta.Value emitConstant(org.graalvm.compiler.core.common.LIRKind, jdk.vm.ci.meta.Constant);
    descriptor: (Lorg/graalvm/compiler/core/common/LIRKind;Ljdk/vm/ci/meta/Constant;)Ljdk/vm/ci/meta/Value;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      kind      
      constant  

  public abstract jdk.vm.ci.meta.Value emitJavaConstant(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)Ljdk/vm/ci/meta/Value;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      constant  

  public abstract <K extends jdk.vm.ci.meta.ValueKind<K>> K toRegisterKind();
    descriptor: (Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/meta/ValueKind;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <K:Ljdk/vm/ci/meta/ValueKind<TK;>;>(TK;)TK;
    MethodParameters:
      Name  Flags
      kind  

  public abstract jdk.vm.ci.meta.AllocatableValue emitLoadConstant(jdk.vm.ci.meta.ValueKind<?>, jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/Constant;)Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljdk/vm/ci/meta/ValueKind<*>;Ljdk/vm/ci/meta/Constant;)Ljdk/vm/ci/meta/AllocatableValue;
    MethodParameters:
          Name  Flags
      kind      
      constant  

  public abstract void emitNullCheck(jdk.vm.ci.meta.Value, org.graalvm.compiler.lir.LIRFrameState);
    descriptor: (Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/lir/LIRFrameState;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      address  
      state    

  public abstract org.graalvm.compiler.lir.Variable emitLogicCompareAndSwap(org.graalvm.compiler.core.common.LIRKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Lorg/graalvm/compiler/core/common/LIRKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      accessKind     
      address        
      expectedValue  
      newValue       
      trueValue      
      falseValue     

  public abstract jdk.vm.ci.meta.Value emitValueCompareAndSwap(org.graalvm.compiler.core.common.LIRKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Lorg/graalvm/compiler/core/common/LIRKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      accessKind     
      address        
      expectedValue  
      newValue       

  public jdk.vm.ci.meta.Value emitAtomicReadAndAdd(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.ValueKind<?>, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.Value address
        start local 2 // jdk.vm.ci.meta.ValueKind valueKind
        start local 3 // jdk.vm.ci.meta.Value delta
         0: .line 166
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:()Ljava/lang/RuntimeException;
            athrow
        end local 3 // jdk.vm.ci.meta.Value delta
        end local 2 // jdk.vm.ci.meta.ValueKind valueKind
        end local 1 // jdk.vm.ci.meta.Value address
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1    address  Ljdk/vm/ci/meta/Value;
            0    1     2  valueKind  Ljdk/vm/ci/meta/ValueKind<*>;
            0    1     3      delta  Ljdk/vm/ci/meta/Value;
    Signature: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/ValueKind<*>;Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
    MethodParameters:
           Name  Flags
      address    
      valueKind  
      delta      

  public jdk.vm.ci.meta.Value emitAtomicReadAndWrite(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.ValueKind<?>, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/ValueKind;Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.Value address
        start local 2 // jdk.vm.ci.meta.ValueKind valueKind
        start local 3 // jdk.vm.ci.meta.Value newValue
         0: .line 177
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:()Ljava/lang/RuntimeException;
            athrow
        end local 3 // jdk.vm.ci.meta.Value newValue
        end local 2 // jdk.vm.ci.meta.ValueKind valueKind
        end local 1 // jdk.vm.ci.meta.Value address
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1    address  Ljdk/vm/ci/meta/Value;
            0    1     2  valueKind  Ljdk/vm/ci/meta/ValueKind<*>;
            0    1     3   newValue  Ljdk/vm/ci/meta/Value;
    Signature: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/ValueKind<*>;Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
    MethodParameters:
           Name  Flags
      address    
      valueKind  
      newValue   

  public abstract void emitDeoptimize(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, org.graalvm.compiler.lir.LIRFrameState);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/lir/LIRFrameState;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                   Name  Flags
      actionAndReason    
      failedSpeculation  
      state              

  public abstract org.graalvm.compiler.lir.Variable emitForeignCall(org.graalvm.compiler.core.common.spi.ForeignCallLinkage, org.graalvm.compiler.lir.LIRFrameState, jdk.vm.ci.meta.Value[]);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/ForeignCallLinkage;Lorg/graalvm/compiler/lir/LIRFrameState;[Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0481) ACC_PUBLIC, ACC_VARARGS, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      linkage  
      state    
      args     

  public abstract org.graalvm.compiler.lir.Variable newVariable(jdk.vm.ci.meta.ValueKind<?>);
    descriptor: (Ljdk/vm/ci/meta/ValueKind;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljdk/vm/ci/meta/ValueKind<*>;)Lorg/graalvm/compiler/lir/Variable;
    MethodParameters:
      Name  Flags
      kind  

  public abstract org.graalvm.compiler.lir.Variable emitMove(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      input  

  public abstract void emitMove(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      dst   
      src   

  public abstract org.graalvm.compiler.lir.Variable emitReadRegister(jdk.vm.ci.code.Register, jdk.vm.ci.meta.ValueKind<?>);
    descriptor: (Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/ValueKind;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/ValueKind<*>;)Lorg/graalvm/compiler/lir/Variable;
    MethodParameters:
          Name  Flags
      register  
      kind      

  public abstract void emitWriteRegister(jdk.vm.ci.code.Register, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.ValueKind<?>);
    descriptor: (Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/ValueKind;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljdk/vm/ci/code/Register;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/ValueKind<*>;)V
    MethodParameters:
           Name  Flags
      dst        
      src        
      wordStamp  

  public abstract void emitMoveConstant(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Constant;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      dst   
      src   

  public abstract org.graalvm.compiler.lir.Variable emitAddress(jdk.vm.ci.meta.AllocatableValue);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
           Name  Flags
      stackslot  

  public abstract void emitMembar(int);
    descriptor: (I)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      barriers  

  public abstract void emitUnwind(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      operand  

  public abstract void emitReturn(jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/Value;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      javaKind  
      input     

  public abstract jdk.vm.ci.meta.AllocatableValue asAllocatable(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  public abstract org.graalvm.compiler.lir.Variable load(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  public abstract <I extends org.graalvm.compiler.lir.LIRInstruction> I append();
    descriptor: (Lorg/graalvm/compiler/lir/LIRInstruction;)Lorg/graalvm/compiler/lir/LIRInstruction;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <I:Lorg/graalvm/compiler/lir/LIRInstruction;>(TI;)TI;
    MethodParameters:
      Name  Flags
      op    

  public abstract void emitJump(org.graalvm.compiler.lir.LabelRef);
    descriptor: (Lorg/graalvm/compiler/lir/LabelRef;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      label  

  public abstract org.graalvm.compiler.lir.Variable emitConditionalMove(jdk.vm.ci.meta.PlatformKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, org.graalvm.compiler.core.common.calc.Condition, boolean, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/PlatformKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/core/common/calc/Condition;ZLjdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                 Name  Flags
      cmpKind          
      leftVal          
      right            
      cond             
      unorderedIsTrue  
      trueValue        
      falseValue       

  public abstract org.graalvm.compiler.lir.Variable emitIntegerTestMove(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
            Name  Flags
      leftVal     
      right       
      trueValue   
      falseValue  

  public abstract org.graalvm.compiler.lir.Variable emitByteSwap(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      operand  

  public org.graalvm.compiler.lir.Variable emitArrayCompareTo(jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=7, args_size=7
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.JavaKind kind1
        start local 2 // jdk.vm.ci.meta.JavaKind kind2
        start local 3 // jdk.vm.ci.meta.Value array1
        start local 4 // jdk.vm.ci.meta.Value array2
        start local 5 // jdk.vm.ci.meta.Value length1
        start local 6 // jdk.vm.ci.meta.Value length2
         0: .line 232
            ldc "String.compareTo substitution is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 6 // jdk.vm.ci.meta.Value length2
        end local 5 // jdk.vm.ci.meta.Value length1
        end local 4 // jdk.vm.ci.meta.Value array2
        end local 3 // jdk.vm.ci.meta.Value array1
        end local 2 // jdk.vm.ci.meta.JavaKind kind2
        end local 1 // jdk.vm.ci.meta.JavaKind kind1
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1    kind1  Ljdk/vm/ci/meta/JavaKind;
            0    1     2    kind2  Ljdk/vm/ci/meta/JavaKind;
            0    1     3   array1  Ljdk/vm/ci/meta/Value;
            0    1     4   array2  Ljdk/vm/ci/meta/Value;
            0    1     5  length1  Ljdk/vm/ci/meta/Value;
            0    1     6  length2  Ljdk/vm/ci/meta/Value;
    MethodParameters:
         Name  Flags
      kind1    
      kind2    
      array1   
      array2   
      length1  
      length2  

  public org.graalvm.compiler.lir.Variable emitArrayEquals(jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, boolean);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Z)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=6, args_size=6
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.JavaKind kind
        start local 2 // jdk.vm.ci.meta.Value array1
        start local 3 // jdk.vm.ci.meta.Value array2
        start local 4 // jdk.vm.ci.meta.Value length
        start local 5 // boolean directPointers
         0: .line 237
            ldc "Array.equals substitution is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 5 // boolean directPointers
        end local 4 // jdk.vm.ci.meta.Value length
        end local 3 // jdk.vm.ci.meta.Value array2
        end local 2 // jdk.vm.ci.meta.Value array1
        end local 1 // jdk.vm.ci.meta.JavaKind kind
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1            kind  Ljdk/vm/ci/meta/JavaKind;
            0    1     2          array1  Ljdk/vm/ci/meta/Value;
            0    1     3          array2  Ljdk/vm/ci/meta/Value;
            0    1     4          length  Ljdk/vm/ci/meta/Value;
            0    1     5  directPointers  Z
    MethodParameters:
                Name  Flags
      kind            
      array1          
      array2          
      length          
      directPointers  

  public org.graalvm.compiler.lir.Variable emitArrayEquals(jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, boolean);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Z)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=7, args_size=7
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.JavaKind kind1
        start local 2 // jdk.vm.ci.meta.JavaKind kind2
        start local 3 // jdk.vm.ci.meta.Value array1
        start local 4 // jdk.vm.ci.meta.Value array2
        start local 5 // jdk.vm.ci.meta.Value length
        start local 6 // boolean directPointers
         0: .line 242
            ldc "Array.equals with different types substitution is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 6 // boolean directPointers
        end local 5 // jdk.vm.ci.meta.Value length
        end local 4 // jdk.vm.ci.meta.Value array2
        end local 3 // jdk.vm.ci.meta.Value array1
        end local 2 // jdk.vm.ci.meta.JavaKind kind2
        end local 1 // jdk.vm.ci.meta.JavaKind kind1
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1           kind1  Ljdk/vm/ci/meta/JavaKind;
            0    1     2           kind2  Ljdk/vm/ci/meta/JavaKind;
            0    1     3          array1  Ljdk/vm/ci/meta/Value;
            0    1     4          array2  Ljdk/vm/ci/meta/Value;
            0    1     5          length  Ljdk/vm/ci/meta/Value;
            0    1     6  directPointers  Z
    MethodParameters:
                Name  Flags
      kind1           
      kind2           
      array1          
      array2          
      length          
      directPointers  

  public org.graalvm.compiler.lir.Variable emitArrayIndexOf(jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.JavaKind, boolean, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value[]);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/JavaKind;ZLjdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;[Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=1, locals=8, args_size=8
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.JavaKind arrayKind
        start local 2 // jdk.vm.ci.meta.JavaKind valueKind
        start local 3 // boolean findTwoConsecutive
        start local 4 // jdk.vm.ci.meta.Value sourcePointer
        start local 5 // jdk.vm.ci.meta.Value sourceCount
        start local 6 // jdk.vm.ci.meta.Value fromIndex
        start local 7 // jdk.vm.ci.meta.Value[] searchValues
         0: .line 247
            ldc "String.indexOf substitution is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 7 // jdk.vm.ci.meta.Value[] searchValues
        end local 6 // jdk.vm.ci.meta.Value fromIndex
        end local 5 // jdk.vm.ci.meta.Value sourceCount
        end local 4 // jdk.vm.ci.meta.Value sourcePointer
        end local 3 // boolean findTwoConsecutive
        end local 2 // jdk.vm.ci.meta.JavaKind valueKind
        end local 1 // jdk.vm.ci.meta.JavaKind arrayKind
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1           arrayKind  Ljdk/vm/ci/meta/JavaKind;
            0    1     2           valueKind  Ljdk/vm/ci/meta/JavaKind;
            0    1     3  findTwoConsecutive  Z
            0    1     4       sourcePointer  Ljdk/vm/ci/meta/Value;
            0    1     5         sourceCount  Ljdk/vm/ci/meta/Value;
            0    1     6           fromIndex  Ljdk/vm/ci/meta/Value;
            0    1     7        searchValues  [Ljdk/vm/ci/meta/Value;
    MethodParameters:
                    Name  Flags
      arrayKind           
      valueKind           
      findTwoConsecutive  
      sourcePointer       
      sourceCount         
      fromIndex           
      searchValues        

  public void emitStringLatin1Inflate(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.Value src
        start local 2 // jdk.vm.ci.meta.Value dst
        start local 3 // jdk.vm.ci.meta.Value len
         0: .line 262
            ldc "StringLatin1.inflate substitution is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // jdk.vm.ci.meta.Value len
        end local 2 // jdk.vm.ci.meta.Value dst
        end local 1 // jdk.vm.ci.meta.Value src
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1   src  Ljdk/vm/ci/meta/Value;
            0    1     2   dst  Ljdk/vm/ci/meta/Value;
            0    1     3   len  Ljdk/vm/ci/meta/Value;
    MethodParameters:
      Name  Flags
      src   
      dst   
      len   

  public org.graalvm.compiler.lir.Variable emitStringUTF16Compress(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.Value src
        start local 2 // jdk.vm.ci.meta.Value dst
        start local 3 // jdk.vm.ci.meta.Value len
         0: .line 267
            ldc "StringUTF16.compress substitution is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // jdk.vm.ci.meta.Value len
        end local 2 // jdk.vm.ci.meta.Value dst
        end local 1 // jdk.vm.ci.meta.Value src
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1   src  Ljdk/vm/ci/meta/Value;
            0    1     2   dst  Ljdk/vm/ci/meta/Value;
            0    1     3   len  Ljdk/vm/ci/meta/Value;
    MethodParameters:
      Name  Flags
      src   
      dst   
      len   

  public abstract void emitBlackhole(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      operand  

  public abstract org.graalvm.compiler.core.common.LIRKind getLIRKind(org.graalvm.compiler.core.common.type.Stamp);
    descriptor: (Lorg/graalvm/compiler/core/common/type/Stamp;)Lorg/graalvm/compiler/core/common/LIRKind;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      stamp  

  public abstract void emitPause();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract void emitPrefetchAllocate(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      address  

  public abstract jdk.vm.ci.meta.Value emitCompress(jdk.vm.ci.meta.Value, org.graalvm.compiler.core.common.CompressEncoding, boolean);
    descriptor: (Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/core/common/CompressEncoding;Z)Ljdk/vm/ci/meta/Value;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      pointer   
      encoding  
      nonNull   

  public abstract jdk.vm.ci.meta.Value emitUncompress(jdk.vm.ci.meta.Value, org.graalvm.compiler.core.common.CompressEncoding, boolean);
    descriptor: (Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/core/common/CompressEncoding;Z)Ljdk/vm/ci/meta/Value;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      pointer   
      encoding  
      nonNull   

  public void emitConvertNullToZero(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.AllocatableValue result
        start local 2 // jdk.vm.ci.meta.Value input
         0: .line 283
            aload 0 /* this */
            aload 1 /* result */
            aload 2 /* input */
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.emitMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)V
         1: .line 284
            return
        end local 2 // jdk.vm.ci.meta.Value input
        end local 1 // jdk.vm.ci.meta.AllocatableValue result
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    2     1  result  Ljdk/vm/ci/meta/AllocatableValue;
            0    2     2   input  Ljdk/vm/ci/meta/Value;
    MethodParameters:
        Name  Flags
      result  
      input   

  public void emitConvertZeroToNull(jdk.vm.ci.meta.AllocatableValue, jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.AllocatableValue result
        start local 2 // jdk.vm.ci.meta.Value input
         0: .line 287
            aload 0 /* this */
            aload 1 /* result */
            aload 2 /* input */
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.emitMove:(Ljdk/vm/ci/meta/AllocatableValue;Ljdk/vm/ci/meta/Value;)V
         1: .line 288
            return
        end local 2 // jdk.vm.ci.meta.Value input
        end local 1 // jdk.vm.ci.meta.AllocatableValue result
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    2     1  result  Ljdk/vm/ci/meta/AllocatableValue;
            0    2     2   input  Ljdk/vm/ci/meta/Value;
    MethodParameters:
        Name  Flags
      result  
      input   

  public abstract void emitSpeculationFence();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public org.graalvm.compiler.lir.VirtualStackSlot allocateStackSlots(int);
    descriptor: (I)Lorg/graalvm/compiler/lir/VirtualStackSlot;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // int slots
         0: .line 297
            aload 0 /* this */
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.getResult:()Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getFrameMapBuilder:()Lorg/graalvm/compiler/lir/framemap/FrameMapBuilder;
            iload 1 /* slots */
            invokevirtual org.graalvm.compiler.lir.framemap.FrameMapBuilder.allocateStackSlots:(I)Lorg/graalvm/compiler/lir/VirtualStackSlot;
            areturn
        end local 1 // int slots
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1  slots  I
    MethodParameters:
       Name  Flags
      slots  

  public jdk.vm.ci.meta.Value emitReadCallerStackPointer(org.graalvm.compiler.core.common.type.Stamp);
    descriptor: (Lorg/graalvm/compiler/core/common/type/Stamp;)Ljdk/vm/ci/meta/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // org.graalvm.compiler.core.common.type.Stamp wordStamp
         0: .line 306
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* wordStamp */
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.getLIRKind:(Lorg/graalvm/compiler/core/common/type/Stamp;)Lorg/graalvm/compiler/core/common/LIRKind;
            iconst_0
            iconst_1
            invokestatic jdk.vm.ci.code.StackSlot.get:(Ljdk/vm/ci/meta/ValueKind;IZ)Ljdk/vm/ci/code/StackSlot;
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.emitAddress:(Ljdk/vm/ci/meta/AllocatableValue;)Lorg/graalvm/compiler/lir/Variable;
            areturn
        end local 1 // org.graalvm.compiler.core.common.type.Stamp wordStamp
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1  wordStamp  Lorg/graalvm/compiler/core/common/type/Stamp;
    MethodParameters:
           Name  Flags
      wordStamp  

  public jdk.vm.ci.meta.Value emitReadReturnAddress(org.graalvm.compiler.core.common.type.Stamp, int);
    descriptor: (Lorg/graalvm/compiler/core/common/type/Stamp;I)Ljdk/vm/ci/meta/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // org.graalvm.compiler.core.common.type.Stamp wordStamp
        start local 2 // int returnAddressSize
         0: .line 310
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* wordStamp */
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.getLIRKind:(Lorg/graalvm/compiler/core/common/type/Stamp;)Lorg/graalvm/compiler/core/common/LIRKind;
            iload 2 /* returnAddressSize */
            ineg
            iconst_1
            invokestatic jdk.vm.ci.code.StackSlot.get:(Ljdk/vm/ci/meta/ValueKind;IZ)Ljdk/vm/ci/code/StackSlot;
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.emitMove:(Ljdk/vm/ci/meta/Value;)Lorg/graalvm/compiler/lir/Variable;
            areturn
        end local 2 // int returnAddressSize
        end local 1 // org.graalvm.compiler.core.common.type.Stamp wordStamp
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1          wordStamp  Lorg/graalvm/compiler/core/common/type/Stamp;
            0    1     2  returnAddressSize  I
    MethodParameters:
                   Name  Flags
      wordStamp          
      returnAddressSize  

  public void emitZeroMemory(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, boolean);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
        start local 1 // jdk.vm.ci.meta.Value address
        start local 2 // jdk.vm.ci.meta.Value length
        start local 3 // boolean isAligned
         0: .line 315
            ldc "Bulk zeroing is not implemented on this architecture"
            invokestatic org.graalvm.compiler.debug.GraalError.unimplemented:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // boolean isAligned
        end local 2 // jdk.vm.ci.meta.Value length
        end local 1 // jdk.vm.ci.meta.Value address
        end local 0 // org.graalvm.compiler.lir.gen.LIRGeneratorTool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            0    1     1    address  Ljdk/vm/ci/meta/Value;
            0    1     2     length  Ljdk/vm/ci/meta/Value;
            0    1     3  isAligned  Z
    MethodParameters:
           Name  Flags
      address    
      length     
      isAligned  
}
Signature: Ljava/lang/Object;Lorg/graalvm/compiler/lir/gen/DiagnosticLIRGeneratorTool;Ljdk/vm/ci/code/ValueKindFactory<Lorg/graalvm/compiler/core/common/LIRKind;>;
SourceFile: "LIRGeneratorTool.java"
NestMembers:
  org.graalvm.compiler.lir.gen.LIRGeneratorTool$BlockScope  org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory
InnerClasses:
  public abstract BlockScope = org.graalvm.compiler.lir.gen.LIRGeneratorTool$BlockScope of org.graalvm.compiler.lir.gen.LIRGeneratorTool
  public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool