Skip to content

Instantly share code, notes, and snippets.

@YingboMa
Last active January 15, 2020 03:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save YingboMa/63c47fc7f64678af87e63aa7b393ba61 to your computer and use it in GitHub Desktop.
Save YingboMa/63c47fc7f64678af87e63aa7b393ba61 to your computer and use it in GitHub Desktop.
define void @"julia_perform_step!_19254"(%jl_value_t addrspace(10)* nonnull align 8 dereferenceable(304), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(544), i8) {
top:
%3 = addrspacecast %jl_value_t addrspace(10)* %0 to %jl_value_t addrspace(11)*
%4 = bitcast %jl_value_t addrspace(11)* %3 to i8 addrspace(11)*
%5 = getelementptr inbounds i8, i8 addrspace(11)* %4, i64 32
%6 = bitcast i8 addrspace(11)* %5 to double addrspace(11)*
%7 = load double, double addrspace(11)* %6, align 8
%8 = getelementptr inbounds i8, i8 addrspace(11)* %4, i64 48
%9 = bitcast i8 addrspace(11)* %8 to %jl_value_t addrspace(10)* addrspace(11)*
%10 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %9, align 8
%11 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)*
%12 = bitcast %jl_value_t addrspace(11)* %11 to i8 addrspace(11)*
%13 = getelementptr inbounds i8, i8 addrspace(11)* %12, i64 152
%14 = bitcast i8 addrspace(11)* %13 to double addrspace(11)*
%15 = getelementptr inbounds i8, i8 addrspace(11)* %12, i64 160
%16 = bitcast i8 addrspace(11)* %15 to double addrspace(11)*
%17 = getelementptr inbounds i8, i8 addrspace(11)* %12, i64 16
%18 = bitcast i8 addrspace(11)* %17 to %jl_value_t addrspace(10)* addrspace(11)*
%19 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %18, align 8
%20 = getelementptr inbounds i8, i8 addrspace(11)* %12, i64 24
%21 = bitcast i8 addrspace(11)* %20 to %jl_value_t addrspace(10)* addrspace(11)*
%22 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %21, align 8
%23 = getelementptr inbounds i8, i8 addrspace(11)* %12, i64 80
%24 = bitcast i8 addrspace(11)* %23 to %jl_value_t addrspace(10)* addrspace(11)*
%25 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %24, align 8
%26 = addrspacecast %jl_value_t addrspace(10)* %22 to %jl_value_t addrspace(11)*
%27 = bitcast %jl_value_t addrspace(11)* %26 to { double, { [4 x double] } } addrspace(13)* addrspace(11)*
%28 = load { double, { [4 x double] } } addrspace(13)*, { double, { [4 x double] } } addrspace(13)* addrspace(11)* %27, align 8
%29 = addrspacecast %jl_value_t addrspace(10)* %19 to %jl_value_t addrspace(11)*
%30 = bitcast %jl_value_t addrspace(11)* %29 to { double, { [4 x double] } } addrspace(13)* addrspace(11)*
%31 = load { double, { [4 x double] } } addrspace(13)*, { double, { [4 x double] } } addrspace(13)* addrspace(11)* %30, align 8
%32 = load double, double addrspace(11)* %14, align 8
%33 = load double, double addrspace(11)* %16, align 8
%34 = addrspacecast %jl_value_t addrspace(10)* %10 to %jl_value_t addrspace(11)*
%35 = bitcast %jl_value_t addrspace(11)* %34 to { double, { [4 x double] } } addrspace(13)* addrspace(11)*
%36 = load { double, { [4 x double] } } addrspace(13)*, { double, { [4 x double] } } addrspace(13)* addrspace(11)* %35, align 8
%37 = addrspacecast %jl_value_t addrspace(10)* %25 to %jl_value_t addrspace(11)*
%38 = bitcast %jl_value_t addrspace(11)* %37 to { double, { [4 x double] } } addrspace(13)* addrspace(11)*
%39 = load { double, { [4 x double] } } addrspace(13)*, { double, { [4 x double] } } addrspace(13)* addrspace(11)* %38, align 8
%40 = insertelement <4 x double> undef, double %7, i32 0
%41 = shufflevector <4 x double> %40, <4 x double> undef, <4 x i32> zeroinitializer
%42 = insertelement <4 x double> undef, double %32, i32 0
%43 = shufflevector <4 x double> %42, <4 x double> undef, <4 x i32> zeroinitializer
%44 = insertelement <4 x double> undef, double %33, i32 0
%45 = shufflevector <4 x double> %44, <4 x double> undef, <4 x i32> zeroinitializer
br label %L10
L10: ; preds = %L10, %top
%value_phi = phi i64 [ 1, %top ], [ %69, %L10 ]
%46 = add nsw i64 %value_phi, -1
%.elt = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %28, i64 %46, i32 0
%47 = bitcast double addrspace(13)* %.elt to <4 x double> addrspace(13)*
%48 = load <4 x double>, <4 x double> addrspace(13)* %47, align 8
%49 = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %28, i64 %46, i32 1, i32 0, i64 3
%.unpack47.unpack.unpack54 = load double, double addrspace(13)* %49, align 8
%.elt56 = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %31, i64 %46, i32 0
%50 = bitcast double addrspace(13)* %.elt56 to <4 x double> addrspace(13)*
%51 = load <4 x double>, <4 x double> addrspace(13)* %50, align 8
%52 = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %31, i64 %46, i32 1, i32 0, i64 3
%.unpack59.unpack.unpack66 = load double, double addrspace(13)* %52, align 8
%53 = fmul <4 x double> %51, %43
%54 = fmul double %.unpack59.unpack.unpack66, %32
%55 = fmul contract <4 x double> %48, %45
%56 = fadd contract <4 x double> %53, %55
%57 = fmul contract double %.unpack47.unpack.unpack54, %33
%58 = fadd contract double %54, %57
%.elt68 = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %36, i64 %46, i32 0
%59 = bitcast double addrspace(13)* %.elt68 to <4 x double> addrspace(13)*
%60 = load <4 x double>, <4 x double> addrspace(13)* %59, align 8
%61 = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %36, i64 %46, i32 1, i32 0, i64 3
%.unpack71.unpack.unpack78 = load double, double addrspace(13)* %61, align 8
%62 = fmul contract <4 x double> %41, %56
%63 = fadd contract <4 x double> %62, %60
%64 = fmul contract double %7, %58
%65 = fadd contract double %64, %.unpack71.unpack.unpack78
%.repack = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %39, i64 %46, i32 0
%66 = bitcast double addrspace(13)* %.repack to <4 x double> addrspace(13)*
store <4 x double> %63, <4 x double> addrspace(13)* %66, align 8
%67 = getelementptr inbounds { double, { [4 x double] } }, { double, { [4 x double] } } addrspace(13)* %39, i64 %46, i32 1, i32 0, i64 3
store double %65, double addrspace(13)* %67, align 8
%68 = icmp eq i64 %value_phi, 3
%69 = add nuw nsw i64 %value_phi, 1
br i1 %68, label %L78, label %L10
L78: ; preds = %L10
ret void
}
Select a call to descend into or ↩ to ascend. [q]uit.
Toggles: [o]ptimize, [w]arn, [d]ebuginfo, [s]yntax highlight for LLVM/Native.
Show: [L]LVM IR, [N]ative code
Advanced: dump [P]arams cache.
• ↩
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment