public class org.graalvm.compiler.replacements.amd64.AMD64LongSubstitutions
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.replacements.amd64.AMD64LongSubstitutions
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.amd64.AMD64LongSubstitutions this
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.replacements.amd64.AMD64LongSubstitutions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/amd64/AMD64LongSubstitutions;

  static boolean lzcnt(jdk.vm.ci.code.TargetDescription);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // jdk.vm.ci.code.TargetDescription target
         0: .line 46
            aload 0 /* target */
            getfield jdk.vm.ci.code.TargetDescription.arch:Ljdk/vm/ci/code/Architecture;
            checkcast jdk.vm.ci.amd64.AMD64
            astore 1 /* arch */
        start local 1 // jdk.vm.ci.amd64.AMD64 arch
         1: .line 47
            aload 1 /* arch */
            invokevirtual jdk.vm.ci.amd64.AMD64.getFeatures:()Ljava/util/EnumSet;
            getstatic jdk.vm.ci.amd64.AMD64$CPUFeature.LZCNT:Ljdk/vm/ci/amd64/AMD64$CPUFeature;
            invokevirtual java.util.EnumSet.contains:(Ljava/lang/Object;)Z
            ifeq 2
            aload 1 /* arch */
            invokevirtual jdk.vm.ci.amd64.AMD64.getFlags:()Ljava/util/EnumSet;
            getstatic jdk.vm.ci.amd64.AMD64$Flag.UseCountLeadingZerosInstruction:Ljdk/vm/ci/amd64/AMD64$Flag;
            invokevirtual java.util.EnumSet.contains:(Ljava/lang/Object;)Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: jdk.vm.ci.amd64.AMD64
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // jdk.vm.ci.amd64.AMD64 arch
        end local 0 // jdk.vm.ci.code.TargetDescription target
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  target  Ljdk/vm/ci/code/TargetDescription;
            1    3     1    arch  Ljdk/vm/ci/amd64/AMD64;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Fold()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.api.replacements.Fold$InjectedParameter()
    MethodParameters:
        Name  Flags
      target  

  static boolean tzcnt(jdk.vm.ci.code.TargetDescription);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // jdk.vm.ci.code.TargetDescription target
         0: .line 52
            aload 0 /* target */
            getfield jdk.vm.ci.code.TargetDescription.arch:Ljdk/vm/ci/code/Architecture;
            checkcast jdk.vm.ci.amd64.AMD64
            astore 1 /* arch */
        start local 1 // jdk.vm.ci.amd64.AMD64 arch
         1: .line 53
            aload 1 /* arch */
            invokevirtual jdk.vm.ci.amd64.AMD64.getFeatures:()Ljava/util/EnumSet;
            getstatic jdk.vm.ci.amd64.AMD64$CPUFeature.BMI1:Ljdk/vm/ci/amd64/AMD64$CPUFeature;
            invokevirtual java.util.EnumSet.contains:(Ljava/lang/Object;)Z
            ifeq 2
            aload 1 /* arch */
            invokevirtual jdk.vm.ci.amd64.AMD64.getFlags:()Ljava/util/EnumSet;
            getstatic jdk.vm.ci.amd64.AMD64$Flag.UseCountTrailingZerosInstruction:Ljdk/vm/ci/amd64/AMD64$Flag;
            invokevirtual java.util.EnumSet.contains:(Ljava/lang/Object;)Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: jdk.vm.ci.amd64.AMD64
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // jdk.vm.ci.amd64.AMD64 arch
        end local 0 // jdk.vm.ci.code.TargetDescription target
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  target  Ljdk/vm/ci/code/TargetDescription;
            1    3     1    arch  Ljdk/vm/ci/amd64/AMD64;
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.Fold()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.api.replacements.Fold$InjectedParameter()
    MethodParameters:
        Name  Flags
      target  

  public static int numberOfLeadingZeros(long);
    descriptor: (J)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long i
         0: .line 59
            getstatic org.graalvm.compiler.replacements.NodeIntrinsificationProvider.INJECTED_TARGET:Ljdk/vm/ci/code/TargetDescription;
            invokestatic org.graalvm.compiler.replacements.amd64.AMD64LongSubstitutions.lzcnt:(Ljdk/vm/ci/code/TargetDescription;)Z
            ifeq 2
         1: .line 60
            lload 0 /* i */
            invokestatic org.graalvm.compiler.replacements.amd64.AMD64CountLeadingZerosNode.countLeadingZeros:(J)I
            ireturn
         2: .line 62
      StackMap locals:
      StackMap stack:
            lload 0 /* i */
            lconst_0
            lcmp
            ifne 4
         3: .line 63
            bipush 64
            ireturn
         4: .line 65
      StackMap locals:
      StackMap stack:
            bipush 63
            lload 0 /* i */
            invokestatic org.graalvm.compiler.replacements.nodes.BitScanReverseNode.unsafeScan:(J)I
            isub
            ireturn
        end local 0 // long i
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     i  J
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.MethodSubstitution()
    RuntimeInvisibleAnnotations: 
      org.graalvm.compiler.core.common.SuppressFBWarnings(value = {"NP_NULL_PARAM_DEREF_NONVIRTUAL"}, justification = "foldable method parameters are injected")
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.graalvm.compiler.core.common.SuppressFBWarnings(value = {"NP_NULL_PARAM_DEREF_NONVIRTUAL"}, justification = "foldable method parameters are injected")
    MethodParameters:
      Name  Flags
      i     

  public static int numberOfTrailingZeros(long);
    descriptor: (J)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long i
         0: .line 71
            getstatic org.graalvm.compiler.replacements.NodeIntrinsificationProvider.INJECTED_TARGET:Ljdk/vm/ci/code/TargetDescription;
            invokestatic org.graalvm.compiler.replacements.amd64.AMD64LongSubstitutions.tzcnt:(Ljdk/vm/ci/code/TargetDescription;)Z
            ifeq 2
         1: .line 72
            lload 0 /* i */
            invokestatic org.graalvm.compiler.replacements.amd64.AMD64CountTrailingZerosNode.countTrailingZeros:(J)I
            ireturn
         2: .line 75
      StackMap locals:
      StackMap stack:
            lload 0 /* i */
            lconst_0
            lcmp
            ifne 4
         3: .line 76
            bipush 64
            ireturn
         4: .line 78
      StackMap locals:
      StackMap stack:
            lload 0 /* i */
            invokestatic org.graalvm.compiler.replacements.nodes.BitScanForwardNode.unsafeScan:(J)I
            ireturn
        end local 0 // long i
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     i  J
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.MethodSubstitution()
    RuntimeInvisibleAnnotations: 
      org.graalvm.compiler.core.common.SuppressFBWarnings(value = {"NP_NULL_PARAM_DEREF_NONVIRTUAL"}, justification = "foldable method parameters are injected")
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.graalvm.compiler.core.common.SuppressFBWarnings(value = {"NP_NULL_PARAM_DEREF_NONVIRTUAL"}, justification = "foldable method parameters are injected")
    MethodParameters:
      Name  Flags
      i     
}
SourceFile: "AMD64LongSubstitutions.java"
InnerClasses:
  public final CPUFeature = jdk.vm.ci.amd64.AMD64$CPUFeature of jdk.vm.ci.amd64.AMD64
  public final Flag = jdk.vm.ci.amd64.AMD64$Flag of jdk.vm.ci.amd64.AMD64
  public abstract InjectedParameter = org.graalvm.compiler.api.replacements.Fold$InjectedParameter of org.graalvm.compiler.api.replacements.Fold
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.api.replacements.ClassSubstitution(value = Ljava/lang/Long;)