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 boolean hasBlockEnd(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Z
    MethodParameters:
       Name  Flags
      block  

  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 org.graalvm.compiler.lir.gen.LIRGeneratorTool$BlockScope getBlockScope(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$BlockScope;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$BlockScope;
    MethodParameters:
       Name  Flags
      block  

  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 159
            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 170
            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 jdk.vm.ci.code.RegisterAttributes attributes(jdk.vm.ci.code.Register);
    descriptor: (Ljdk/vm/ci/code/Register;)Ljdk/vm/ci/code/RegisterAttributes;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      register  

  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 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 beforeRegisterAllocation();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

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

  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 jdk.vm.ci.meta.Value loadNonConst(jdk.vm.ci.meta.Value);
    descriptor: (Ljdk/vm/ci/meta/Value;)Ljdk/vm/ci/meta/Value;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  public abstract boolean needOnlyOopMaps();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract jdk.vm.ci.meta.AllocatableValue resultOperandFor(jdk.vm.ci.meta.JavaKind, jdk.vm.ci.meta.ValueKind<?>);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/ValueKind;)Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljdk/vm/ci/meta/JavaKind;Ljdk/vm/ci/meta/ValueKind<*>;)Ljdk/vm/ci/meta/AllocatableValue;
    MethodParameters:
           Name  Flags
      javaKind   
      valueKind  

  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 setSourcePosition(org.graalvm.compiler.graph.NodeSourcePosition);
    descriptor: (Lorg/graalvm/compiler/graph/NodeSourcePosition;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      position  

  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 void emitCompareBranch(jdk.vm.ci.meta.PlatformKind, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, org.graalvm.compiler.core.common.calc.Condition, boolean, org.graalvm.compiler.lir.LabelRef, org.graalvm.compiler.lir.LabelRef, double);
    descriptor: (Ljdk/vm/ci/meta/PlatformKind;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/core/common/calc/Condition;ZLorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/lir/LabelRef;D)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                            Name  Flags
      cmpKind                     
      left                        
      right                       
      cond                        
      unorderedIsTrue             
      trueDestination             
      falseDestination            
      trueDestinationProbability  

  public abstract void emitOverflowCheckBranch(org.graalvm.compiler.lir.LabelRef, org.graalvm.compiler.lir.LabelRef, org.graalvm.compiler.core.common.LIRKind, double);
    descriptor: (Lorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/core/common/LIRKind;D)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                     Name  Flags
      overflow             
      noOverflow           
      cmpKind              
      overflowProbability  

  public abstract void emitIntegerTestBranch(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, org.graalvm.compiler.lir.LabelRef, org.graalvm.compiler.lir.LabelRef, double);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Lorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/lir/LabelRef;D)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                          Name  Flags
      left                      
      right                     
      trueDestination           
      falseDestination          
      trueSuccessorProbability  

  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 void emitStrategySwitch(jdk.vm.ci.meta.JavaConstant[], double[], org.graalvm.compiler.lir.LabelRef[], org.graalvm.compiler.lir.LabelRef, org.graalvm.compiler.lir.Variable);
    descriptor: ([Ljdk/vm/ci/meta/JavaConstant;[D[Lorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/lir/Variable;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                  Name  Flags
      keyConstants      
      keyProbabilities  
      keyTargets        
      defaultTarget     
      value             

  public abstract void emitStrategySwitch(org.graalvm.compiler.lir.SwitchStrategy, org.graalvm.compiler.lir.Variable, org.graalvm.compiler.lir.LabelRef[], org.graalvm.compiler.lir.LabelRef);
    descriptor: (Lorg/graalvm/compiler/lir/SwitchStrategy;Lorg/graalvm/compiler/lir/Variable;[Lorg/graalvm/compiler/lir/LabelRef;Lorg/graalvm/compiler/lir/LabelRef;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      strategy       
      key            
      keyTargets     
      defaultTarget  

  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 261
            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 abstract 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);
    descriptor: (Ljdk/vm/ci/meta/JavaKind;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
      kind    
      array1  
      array2  
      length  

  public org.graalvm.compiler.lir.Variable emitStringIndexOf(jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, jdk.vm.ci.meta.Value, int);
    descriptor: (Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;Ljdk/vm/ci/meta/Value;I)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.Value sourcePointer
        start local 2 // jdk.vm.ci.meta.Value sourceCount
        start local 3 // jdk.vm.ci.meta.Value targetPointer
        start local 4 // jdk.vm.ci.meta.Value targetCount
        start local 5 // int constantTargetCount
         0: .line 268
            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 5 // int constantTargetCount
        end local 4 // jdk.vm.ci.meta.Value targetCount
        end local 3 // jdk.vm.ci.meta.Value targetPointer
        end local 2 // jdk.vm.ci.meta.Value sourceCount
        end local 1 // jdk.vm.ci.meta.Value sourcePointer
        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        sourcePointer  Ljdk/vm/ci/meta/Value;
            0    1     2          sourceCount  Ljdk/vm/ci/meta/Value;
            0    1     3        targetPointer  Ljdk/vm/ci/meta/Value;
            0    1     4          targetCount  Ljdk/vm/ci/meta/Value;
            0    1     5  constantTargetCount  I
    MethodParameters:
                     Name  Flags
      sourcePointer        
      sourceCount          
      targetPointer        
      targetCount          
      constantTargetCount  

  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 284
            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 285
            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 288
            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 289
            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   
}
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