Skip to content

Instantly share code, notes, and snippets.

@nasser
Created November 2, 2018 23:18
Show Gist options
  • Save nasser/273a6e30b9fd16c17239f0a5b6223ff9 to your computer and use it in GitHub Desktop.
Save nasser/273a6e30b9fd16c17239f0a5b6223ff9 to your computer and use it in GitHub Desktop.
; Function Attrs: uwtable
define hidden cc16 float @DynVsIface_Benches_ThroughExact_DynVsIface_TaskDoer(i64* %this, i64* %arg_doer) #3 {
BB0:
br label %BB3
BB3: ; preds = %BB0
br label %BB2
BB2: ; preds = %BB3
%0 = load volatile i64* %arg_doer
br label %BB1
BB1: ; preds = %BB2
ret float 1.500000e+02
}
; Function Attrs: uwtable
define hidden cc16 float @DynVsIface_Benches_ThroughInterface_DynVsIface_IDoTask(i64* %this, i64* %arg_doer) #3 {
BB0:
br label %BB3
BB3: ; preds = %BB0
br label %BB2
BB2: ; preds = %BB3
%t26 = load volatile i64* %arg_doer
%METHODCONST_26 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 26), !invariant.load !26
%0 = inttoptr i64 %t26 to i64**
%1 = getelementptr i64** %0, i32 -17
%2 = load i64** %1
%3 = bitcast i64* %2 to float (i64*, i64*, float, float)*
%4 = call cc16 float %3(i64* inreg %METHODCONST_26, i64* %arg_doer, float 1.000000e+01, float 1.500000e+01)
%5 = fpext float %4 to double
%6 = fptrunc double %5 to float
br label %BB1
BB1: ; preds = %BB2
ret float %6
}
; Function Attrs: uwtable
define hidden cc16 float @DynVsIface_Benches_ThroughDynamic_object(i64* %this, i64* %arg_doer) #3 {
BB0:
br label %BB3
BB3: ; preds = %BB0
br label %BB2
BB2: ; preds = %BB3
%SFLDA_27 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27), !invariant.load !26
%t20 = load i64* %SFLDA_27
%0 = icmp ne i64 %t20, 0
br i1 %0, label %BB4, label %BB5
BB5: ; preds = %BB2
%TYPE_FROM_HANDLE_33 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 33), !invariant.load !26
%TYPE_FROM_HANDLE_306 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 30), !invariant.load !26
%1 = call cc16 i64* @.Lp_6_plt_Microsoft_CSharp_RuntimeBinder_Binder_Convert_Microsoft_CSharp_RuntimeBinder_CSharpBinderFlags_System_Type_System_Type_llvm(i32 0, i64* %TYPE_FROM_HANDLE_33, i64* %TYPE_FROM_HANDLE_306)
%VTABLE_34 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 34), !invariant.load !26
%2 = call cc16 i64* @.Lp_7_plt_System_Runtime_CompilerServices_CallSite_1_System_Func_3_System_Runtime_CompilerServices_CallSite_object_single_Create_System_Runtime_CompilerServices_CallSiteBinder_llvm(i64* inreg %VTABLE_34, i64* %1)
%SFLDA_277 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27), !invariant.load !26
%3 = getelementptr i64* %SFLDA_277, i32 0
%4 = ptrtoint i64* %2 to i64
store i64 %4, i64* %3
br label %BB4
BB4: ; preds = %BB5, %BB2
%SFLDA_271 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27), !invariant.load !26
%t34 = load i64* %SFLDA_271
%5 = inttoptr i64 %t34 to i64*
%6 = getelementptr i64* %5, i32 4
%t35 = load volatile i64* %6
%SFLDA_272 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27), !invariant.load !26
%t37 = load i64* %SFLDA_272
%SFLDA_28 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28), !invariant.load !26
%t39 = load i64* %SFLDA_28
%7 = icmp ne i64 %t39, 0
br i1 %7, label %BB6, label %BB7
BB7: ; preds = %BB4
%LDSTR_29 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 29), !invariant.load !26
%TYPE_FROM_HANDLE_30 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 30), !invariant.load !26
%VTABLE_31 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 31), !invariant.load !26
%8 = ptrtoint i64* %VTABLE_31 to i64
%9 = call cc16 i64* @.Lp_2_plt_wrapper_alloc_object_AllocVector_intptr_intptr_llvm(i64 %8, i64 3)
%10 = call cc16 i64* @.Lp_3_plt_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_Create_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfoFlags_string_llvm(i32 0, i64* null)
%t75 = load i64* %9
%11 = inttoptr i64 %t75 to i64**
%12 = getelementptr i64** %11, i32 32
%13 = load i64** %12
%14 = bitcast i64* %13 to void (i64*, i64, i64*)*
call cc16 void %14(i64* %9, i64 0, i64* %10)
%15 = call cc16 i64* @.Lp_3_plt_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_Create_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfoFlags_string_llvm(i32 3, i64* null)
%t101 = load volatile i64* %9
%16 = inttoptr i64 %t101 to i64**
%17 = getelementptr i64** %16, i32 32
%18 = load i64** %17
%19 = bitcast i64* %18 to void (i64*, i64, i64*)*
call cc16 void %19(i64* %9, i64 1, i64* %15)
%20 = call cc16 i64* @.Lp_3_plt_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_Create_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfoFlags_string_llvm(i32 3, i64* null)
%t127 = load volatile i64* %9
%21 = inttoptr i64 %t127 to i64**
%22 = getelementptr i64** %21, i32 32
%23 = load i64** %22
%24 = bitcast i64* %23 to void (i64*, i64, i64*)*
call cc16 void %24(i64* %9, i64 2, i64* %20)
%25 = call cc16 i64* @.Lp_4_plt_Microsoft_CSharp_RuntimeBinder_Binder_InvokeMember_Microsoft_CSharp_RuntimeBinder_CSharpBinderFlags_string_System_Collections_Generic_IEnumerable_1_System_Type_System_Type_System_Collections_Generic_IEnumerable_1_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_llvm(i32 0, i64* %LDSTR_29, i64* null, i64* %TYPE_FROM_HANDLE_30, i64* %9)
%VTABLE_32 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 32), !invariant.load !26
%26 = call cc16 i64* @.Lp_5_plt_System_Runtime_CompilerServices_CallSite_1_System_Func_5_System_Runtime_CompilerServices_CallSite_object_int_int_object_Create_System_Runtime_CompilerServices_CallSiteBinder_llvm(i64* inreg %VTABLE_32, i64* %25)
%SFLDA_285 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28), !invariant.load !26
%27 = getelementptr i64* %SFLDA_285, i32 0
%28 = ptrtoint i64* %26 to i64
store i64 %28, i64* %27
br label %BB6
BB6: ; preds = %BB7, %BB4
%SFLDA_283 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28), !invariant.load !26
%t142 = load i64* %SFLDA_283
%29 = inttoptr i64 %t142 to i64*
%30 = getelementptr i64* %29, i32 4
%t143 = load volatile i64* %30
%SFLDA_284 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28), !invariant.load !26
%t145 = load i64* %SFLDA_284
%31 = inttoptr i64 %t143 to i64**
%32 = getelementptr i64** %31, i32 3
%33 = load i64** %32
%34 = bitcast i64* %33 to i64* (i64*, i64*, i64*, i32, i32)*
%35 = inttoptr i64 %t143 to i64*
%36 = inttoptr i64 %t145 to i64*
%37 = call cc16 i64* %34(i64* %35, i64* %36, i64* %arg_doer, i32 10, i32 15)
%38 = inttoptr i64 %t35 to i64**
%39 = getelementptr i64** %38, i32 3
%40 = load i64** %39
%41 = bitcast i64* %40 to float (i64*, i64*, i64*)*
%42 = inttoptr i64 %t35 to i64*
%43 = inttoptr i64 %t37 to i64*
%44 = call cc16 float %41(i64* %42, i64* %43, i64* %37)
%45 = fpext float %44 to double
%46 = fptrunc double %45 to float
br label %BB1
BB1: ; preds = %BB6
ret float %46
}
; Function Attrs: uwtable
define hidden cc16 float @DynVsIface_Benches_ThroughExact_DynVsIface_TaskDoer(i64* %this, i64* %arg_doer) #1 {
BB0:
%0 = load volatile i64* %arg_doer
ret float 1.500000e+02
}
; Function Attrs: uwtable
define hidden cc16 float @DynVsIface_Benches_ThroughInterface_DynVsIface_IDoTask(i64* %this, i64* %arg_doer) #1 {
BB0:
%t26 = load volatile i64* %arg_doer
%METHODCONST_26 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 26), !invariant.load !26
%0 = inttoptr i64 %t26 to i64**
%1 = getelementptr i64** %0, i32 -17
%2 = load i64** %1
%3 = bitcast i64* %2 to float (i64*, i64*, float, float)*
%4 = call cc16 float %3(i64* inreg %METHODCONST_26, i64* %arg_doer, float 1.000000e+01, float 1.500000e+01)
ret float %4
}
; Function Attrs: uwtable
define hidden cc16 float @DynVsIface_Benches_ThroughDynamic_object(i64* %this, i64* %arg_doer) #1 {
BB0:
%SFLDA_27 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27), !invariant.load !26
%t20 = load i64* %SFLDA_27
%0 = icmp eq i64 %t20, 0
br i1 %0, label %BB5, label %BB4
BB5: ; preds = %BB0
%TYPE_FROM_HANDLE_33 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 33), !invariant.load !26
%TYPE_FROM_HANDLE_306 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 30), !invariant.load !26
%1 = call cc16 i64* @.Lp_6_plt_Microsoft_CSharp_RuntimeBinder_Binder_Convert_Microsoft_CSharp_RuntimeBinder_CSharpBinderFlags_System_Type_System_Type_llvm(i32 0, i64* %TYPE_FROM_HANDLE_33, i64* %TYPE_FROM_HANDLE_306)
%VTABLE_34 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 34), !invariant.load !26
%2 = call cc16 i64* @.Lp_7_plt_System_Runtime_CompilerServices_CallSite_1_System_Func_3_System_Runtime_CompilerServices_CallSite_object_single_Create_System_Runtime_CompilerServices_CallSiteBinder_llvm(i64* inreg %VTABLE_34, i64* %1)
%SFLDA_277 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27), !invariant.load !26
%3 = ptrtoint i64* %2 to i64
store i64 %3, i64* %SFLDA_277
%SFLDA_271.pre = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 27)
%t34.pre = load i64* %SFLDA_271.pre
br label %BB4
BB4: ; preds = %BB5, %BB0
%t34 = phi i64 [ %t20, %BB0 ], [ %t34.pre, %BB5 ]
%4 = inttoptr i64 %t34 to i64*
%5 = getelementptr i64* %4, i32 4
%t35 = load volatile i64* %5
%SFLDA_28 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28), !invariant.load !26
%t39 = load i64* %SFLDA_28
%6 = icmp eq i64 %t39, 0
br i1 %6, label %BB7, label %BB6
BB7: ; preds = %BB4
%LDSTR_29 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 29), !invariant.load !26
%TYPE_FROM_HANDLE_30 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 30), !invariant.load !26
%VTABLE_31 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 31), !invariant.load !26
%7 = ptrtoint i64* %VTABLE_31 to i64
%8 = call cc16 i64* @.Lp_2_plt_wrapper_alloc_object_AllocVector_intptr_intptr_llvm(i64 %7, i64 3)
%9 = call cc16 i64* @.Lp_3_plt_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_Create_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfoFlags_string_llvm(i32 0, i64* null)
%t75 = load i64* %8
%10 = inttoptr i64 %t75 to i64**
%11 = getelementptr i64** %10, i32 32
%12 = load i64** %11
%13 = bitcast i64* %12 to void (i64*, i64, i64*)*
call cc16 void %13(i64* %8, i64 0, i64* %9)
%14 = call cc16 i64* @.Lp_3_plt_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_Create_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfoFlags_string_llvm(i32 3, i64* null)
%t101 = load volatile i64* %8
%15 = inttoptr i64 %t101 to i64**
%16 = getelementptr i64** %15, i32 32
%17 = load i64** %16
%18 = bitcast i64* %17 to void (i64*, i64, i64*)*
call cc16 void %18(i64* %8, i64 1, i64* %14)
%19 = call cc16 i64* @.Lp_3_plt_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_Create_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfoFlags_string_llvm(i32 3, i64* null)
%t127 = load volatile i64* %8
%20 = inttoptr i64 %t127 to i64**
%21 = getelementptr i64** %20, i32 32
%22 = load i64** %21
%23 = bitcast i64* %22 to void (i64*, i64, i64*)*
call cc16 void %23(i64* %8, i64 2, i64* %19)
%24 = call cc16 i64* @.Lp_4_plt_Microsoft_CSharp_RuntimeBinder_Binder_InvokeMember_Microsoft_CSharp_RuntimeBinder_CSharpBinderFlags_string_System_Collections_Generic_IEnumerable_1_System_Type_System_Type_System_Collections_Generic_IEnumerable_1_Microsoft_CSharp_RuntimeBinder_CSharpArgumentInfo_llvm(i32 0, i64* %LDSTR_29, i64* null, i64* %TYPE_FROM_HANDLE_30, i64* %8)
%VTABLE_32 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 32), !invariant.load !26
%25 = call cc16 i64* @.Lp_5_plt_System_Runtime_CompilerServices_CallSite_1_System_Func_5_System_Runtime_CompilerServices_CallSite_object_int_int_object_Create_System_Runtime_CompilerServices_CallSiteBinder_llvm(i64* inreg %VTABLE_32, i64* %24)
%SFLDA_285 = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28), !invariant.load !26
%26 = ptrtoint i64* %25 to i64
store i64 %26, i64* %SFLDA_285
%SFLDA_283.pre = load i64** getelementptr inbounds ([43 x i64*]* @mono_aot_ConsoleApplication1_llvm_got, i32 0, i32 28)
%t142.pre = load i64* %SFLDA_283.pre
br label %BB6
BB6: ; preds = %BB7, %BB4
%t142 = phi i64 [ %t39, %BB4 ], [ %t142.pre, %BB7 ]
%27 = inttoptr i64 %t142 to i64*
%28 = getelementptr i64* %27, i32 4
%t143 = load volatile i64* %28
%29 = inttoptr i64 %t143 to i64**
%30 = getelementptr i64** %29, i32 3
%31 = load i64** %30
%32 = bitcast i64* %31 to i64* (i64*, i64*, i64*, i32, i32)*
%33 = inttoptr i64 %t143 to i64*
%34 = call cc16 i64* %32(i64* %33, i64* %27, i64* %arg_doer, i32 10, i32 15)
%35 = inttoptr i64 %t35 to i64**
%36 = getelementptr i64** %35, i32 3
%37 = load i64** %36
%38 = bitcast i64* %37 to float (i64*, i64*, i64*)*
%39 = inttoptr i64 %t35 to i64*
%40 = call cc16 float %38(i64* %39, i64* %4, i64* %34)
ret float %40
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment