Last active
December 3, 2019 08:01
-
-
Save tkf/d9397c14f8612f61be9ea72257c50591 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}},var"#27#29"})::Union{Missing, Base._InitialValue, Float64} | |
Body::Union{Missing, Base._InitialValue, Float64} | |
@ reduce.jl:53 within `_foldl_impl' | |
┌ @ generator.jl:44 within `iterate' | |
│┌ @ Base.jl:33 within `getproperty' | |
1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
│ │┌ @ Base.jl:33 within `getproperty' | |
│ ││ %2 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %3 = Base.bitcast(UInt64, 1)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %4 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %5 = Base.sub_int(%3, %4)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %6 = Base.arraylen(%2)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %7 = Base.sle_int(0, %6)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:370 within `unsigned' | |
│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %8 = Base.bitcast(UInt64, %6)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %9 = Base.ult_int(%5, %8)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %10 = Base.and_int(%7, %9)::Bool | |
│ │└└ | |
└───│ goto #3 if not %10 | |
│┌ @ array.jl:758 within `getindex' | |
2 ──││ %12 = Base.arrayref(false, %2, 1)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %13 = Base.add_int(1, 1)::Int64 | |
│ │└ | |
└───│ goto #4 | |
3 ──│ goto #4 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
4 ┄─│ %16 = φ (#2 => false, #3 => true)::Bool | |
│ │ %17 = φ (#2 => %12)::Union{Missing, Float64} | |
│ │ %18 = φ (#2 => %13)::Int64 | |
│ │ %19 = φ (#2 => false)::Bool | |
│ │ %20 = φ (#2 => %12)::Union{Missing, Float64} | |
│ │ %21 = φ (#2 => %13)::Int64 | |
└───│ goto #5 | |
5 ──│ nothing | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
6 ┄─│ %24 = φ (#5 => %16, #17 => %57)::Bool | |
│ │ %25 = φ (#5 => %17, #17 => %58)::Union{Missing, Float64} | |
│ │ %26 = φ (#5 => %18, #17 => %59)::Int64 | |
│ │ %27 = φ (#5 => %19, #17 => %60)::Bool | |
│ │ %28 = φ (#5 => %20, #17 => %61)::Union{Missing, Float64} | |
│ │ %29 = φ (#5 => %21, #17 => %62)::Int64 | |
│ │ %30 = Core.Intrinsics.not_int(%24)::Bool | |
└───│ goto #18 if not %30 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
7 ──│ %32 = (isa)(%25, Missing)::Bool | |
└───│ goto #9 if not %32 | |
8 ──│ goto #12 | |
9 ──│ %35 = (isa)(%25, Float64)::Bool | |
└───│ goto #11 if not %35 | |
10 ─│ goto #12 | |
11 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
12 ┄│ %40 = φ (#8 => false, #10 => true)::Bool | |
└───│ goto #14 if not %40 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:432 | |
13 ─│ goto #19 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
│┌ @ Base.jl:33 within `getproperty' | |
14 ─││ %43 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %44 = Base.bitcast(UInt64, %26)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %45 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %46 = Base.sub_int(%44, %45)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %47 = Base.arraylen(%43)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %48 = Base.sle_int(0, %47)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:370 within `unsigned' | |
│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %49 = Base.bitcast(UInt64, %47)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %50 = Base.ult_int(%46, %49)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %51 = Base.and_int(%48, %50)::Bool | |
│ │└└ | |
└───│ goto #16 if not %51 | |
│┌ @ array.jl:758 within `getindex' | |
15 ─││ %53 = Base.arrayref(false, %43, %26)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %54 = Base.add_int(%26, 1)::Int64 | |
│ │└ | |
└───│ goto #17 | |
16 ─│ goto #17 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
17 ┄│ %57 = φ (#15 => false, #16 => true)::Bool | |
│ │ %58 = φ (#15 => %53)::Union{Missing, Float64} | |
│ │ %59 = φ (#15 => %54)::Int64 | |
│ │ %60 = φ (#15 => false)::Bool | |
│ │ %61 = φ (#15 => %53)::Union{Missing, Float64} | |
│ │ %62 = φ (#15 => %54)::Int64 | |
└───│ goto #6 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:436 | |
18 ─│ goto #19 | |
│ @ generator.jl:44 within `iterate' | |
19 ┄│ %65 = φ (#13 => %27, #18 => true)::Bool | |
│ │ %66 = φ (#13 => %28)::Union{Missing, Float64} | |
│ │ %67 = φ (#13 => %29)::Int64 | |
│ │ @ generator.jl:45 within `iterate' | |
└───│ goto #21 if not %65 | |
20 ─│ goto #27 | |
│ @ generator.jl:47 within `iterate' | |
21 ─│ %70 = (isa)(%66, Missing)::Bool | |
└───│ goto #23 if not %70 | |
22 ─│ goto #26 | |
23 ─│ %73 = (isa)(%66, Float64)::Bool | |
└───│ goto #25 if not %73 | |
24 ─│ %75 = π (%66, Float64) | |
└───│ goto #26 | |
25 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
26 ┄│ %79 = φ (#22 => $(QuoteNode(missing)), #24 => %75)::Union{Missing, Float64} | |
└───│ goto #27 | |
└ | |
27 ┄ %81 = φ (#20 => true, #26 => false)::Bool | |
│ %82 = φ (#26 => %79)::Union{Missing, Float64} | |
│ %83 = φ (#26 => %67)::Int64 | |
│ @ reduce.jl:54 within `_foldl_impl' | |
└─── goto #29 if not %81 | |
28 ─ return init | |
@ reduce.jl:55 within `_foldl_impl' | |
29 ─ %86 = (isa)(%82, Missing)::Bool | |
└─── goto #31 if not %86 | |
30 ─ goto #34 | |
31 ─ %89 = (isa)(%82, Float64)::Bool | |
└─── goto #33 if not %89 | |
32 ─ %91 = π (%82, Float64) | |
└─── goto #34 | |
33 ─ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└─── $(Expr(:unreachable)) | |
34 ┄ %95 = φ (#30 => $(QuoteNode(missing)), #32 => %91)::Union{Missing, Float64} | |
@ reduce.jl:56 within `_foldl_impl' | |
35 ┄ %96 = φ (#34 => %83, #71 => %176)::Int64 | |
│ %97 = φ (#34 => %95, #71 => %206)::Union{Missing, Float64} | |
│ @ reduce.jl:57 within `_foldl_impl' | |
│ ┌ @ generator.jl:44 within `iterate' | |
│ │┌ @ Base.jl:33 within `getproperty' | |
│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
│ │┌ @ Base.jl:33 within `getproperty' | |
│ ││ %99 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %100 = Base.bitcast(UInt64, %96)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %101 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %102 = Base.sub_int(%100, %101)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %103 = Base.arraylen(%99)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %104 = Base.sle_int(0, %103)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:370 within `unsigned' | |
│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %105 = Base.bitcast(UInt64, %103)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %106 = Base.ult_int(%102, %105)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %107 = Base.and_int(%104, %106)::Bool | |
│ │└└ | |
└───│ goto #37 if not %107 | |
│┌ @ array.jl:758 within `getindex' | |
36 ─││ %109 = Base.arrayref(false, %99, %96)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %110 = Base.add_int(%96, 1)::Int64 | |
│ │└ | |
└───│ goto #38 | |
37 ─│ goto #38 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
38 ┄│ %113 = φ (#36 => false, #37 => true)::Bool | |
│ │ %114 = φ (#36 => %109)::Union{Missing, Float64} | |
│ │ %115 = φ (#36 => %110)::Int64 | |
│ │ %116 = φ (#36 => false)::Bool | |
│ │ %117 = φ (#36 => %109)::Union{Missing, Float64} | |
└───│ %118 = φ (#36 => %110)::Int64 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
39 ┄│ %119 = φ (#38 => %113, #50 => %152)::Bool | |
│ │ %120 = φ (#38 => %114, #50 => %153)::Union{Missing, Float64} | |
│ │ %121 = φ (#38 => %115, #50 => %154)::Int64 | |
│ │ %122 = φ (#38 => %116, #50 => %155)::Bool | |
│ │ %123 = φ (#38 => %117, #50 => %156)::Union{Missing, Float64} | |
│ │ %124 = φ (#38 => %118, #50 => %157)::Int64 | |
│ │ %125 = Core.Intrinsics.not_int(%119)::Bool | |
└───│ goto #51 if not %125 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
40 ─│ %127 = (isa)(%120, Missing)::Bool | |
└───│ goto #42 if not %127 | |
41 ─│ goto #45 | |
42 ─│ %130 = (isa)(%120, Float64)::Bool | |
└───│ goto #44 if not %130 | |
43 ─│ goto #45 | |
44 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
45 ┄│ %135 = φ (#41 => false, #43 => true)::Bool | |
└───│ goto #47 if not %135 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:432 | |
46 ─│ goto #52 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
│┌ @ Base.jl:33 within `getproperty' | |
47 ─││ %138 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %139 = Base.bitcast(UInt64, %121)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %140 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %141 = Base.sub_int(%139, %140)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %142 = Base.arraylen(%138)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %143 = Base.sle_int(0, %142)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:370 within `unsigned' | |
│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %144 = Base.bitcast(UInt64, %142)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %145 = Base.ult_int(%141, %144)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %146 = Base.and_int(%143, %145)::Bool | |
│ │└└ | |
└───│ goto #49 if not %146 | |
│┌ @ array.jl:758 within `getindex' | |
48 ─││ %148 = Base.arrayref(false, %138, %121)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %149 = Base.add_int(%121, 1)::Int64 | |
│ │└ | |
└───│ goto #50 | |
49 ─│ goto #50 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
50 ┄│ %152 = φ (#48 => false, #49 => true)::Bool | |
│ │ %153 = φ (#48 => %148)::Union{Missing, Float64} | |
│ │ %154 = φ (#48 => %149)::Int64 | |
│ │ %155 = φ (#48 => false)::Bool | |
│ │ %156 = φ (#48 => %148)::Union{Missing, Float64} | |
│ │ %157 = φ (#48 => %149)::Int64 | |
└───│ goto #39 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:436 | |
51 ─│ goto #52 | |
│ @ generator.jl:44 within `iterate' | |
52 ┄│ %160 = φ (#46 => %122, #51 => true)::Bool | |
│ │ %161 = φ (#46 => %123)::Union{Missing, Float64} | |
│ │ %162 = φ (#46 => %124)::Int64 | |
│ │ @ generator.jl:45 within `iterate' | |
└───│ goto #54 if not %160 | |
53 ─│ goto #60 | |
│ @ generator.jl:47 within `iterate' | |
54 ─│ %165 = (isa)(%161, Missing)::Bool | |
└───│ goto #56 if not %165 | |
55 ─│ goto #59 | |
56 ─│ %168 = (isa)(%161, Float64)::Bool | |
└───│ goto #58 if not %168 | |
57 ─│ %170 = π (%161, Float64) | |
└───│ goto #59 | |
58 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
59 ┄│ %174 = φ (#55 => $(QuoteNode(missing)), #57 => %170)::Union{Missing, Float64} | |
└───│ goto #60 | |
└ | |
60 ┄ %176 = φ (#59 => %162)::Int64 | |
│ %177 = φ (#53 => true, #59 => false)::Bool | |
│ %178 = φ (#59 => %174)::Union{Missing, Float64} | |
│ @ reduce.jl:58 within `_foldl_impl' | |
└─── goto #62 if not %177 | |
61 ─ goto #72 | |
@ reduce.jl:59 within `_foldl_impl' | |
62 ─ %181 = (isa)(%97, Missing)::Bool | |
│ %182 = (isa)(%178, Missing)::Bool | |
│ %183 = (Core.Intrinsics.and_int)(%181, %182)::Bool | |
└─── goto #64 if not %183 | |
63 ─ goto #71 | |
64 ─ %186 = (isa)(%97, Float64)::Bool | |
│ %187 = (isa)(%178, Missing)::Bool | |
│ %188 = (Core.Intrinsics.and_int)(%186, %187)::Bool | |
└─── goto #66 if not %188 | |
65 ─ goto #71 | |
66 ─ %191 = (isa)(%97, Missing)::Bool | |
│ %192 = (isa)(%178, Float64)::Bool | |
│ %193 = (Core.Intrinsics.and_int)(%191, %192)::Bool | |
└─── goto #68 if not %193 | |
67 ─ goto #71 | |
68 ─ %196 = (isa)(%97, Float64)::Bool | |
│ %197 = (isa)(%178, Float64)::Bool | |
│ %198 = (Core.Intrinsics.and_int)(%196, %197)::Bool | |
└─── goto #70 if not %198 | |
69 ─ %200 = π (%97, Float64) | |
│ %201 = π (%178, Float64) | |
│ ┌ @ reduce.jl:78 within `BottomRF' | |
│ │┌ @ float.jl:401 within `+' | |
│ ││ %202 = Base.add_float(%200, %201)::Float64 | |
│ └└ | |
└─── goto #71 | |
70 ─ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└─── $(Expr(:unreachable)) | |
71 ┄ %206 = φ (#63 => $(QuoteNode(missing)), #65 => $(QuoteNode(missing)), #67 => $(QuoteNode(missing)), #69 => %202)::Union{Missing, Float64} | |
└─── goto #35 | |
@ reduce.jl:61 within `_foldl_impl' | |
72 ─ return %97 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; @ reduce.jl:53 within `_foldl_impl' | |
define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17515([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) { | |
top: | |
%2 = alloca [1 x i64], align 8 | |
%3 = alloca [1 x i64], align 8 | |
; ┌ @ generator.jl:44 within `iterate' | |
; │┌ @ Base.jl:33 within `getproperty' | |
%4 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)* | |
%5 = bitcast %jl_value_t addrspace(11)* %4 to %jl_value_t addrspace(10)* addrspace(11)* | |
%6 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %5, align 8 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
; │┌ @ Base.jl:33 within `getproperty' | |
%7 = addrspacecast %jl_value_t addrspace(10)* %6 to %jl_value_t addrspace(11)* | |
%8 = bitcast %jl_value_t addrspace(11)* %7 to %jl_value_t addrspace(10)* addrspace(11)* | |
%9 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %8, align 8 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
; │┌ @ array.jl:214 within `length' | |
%10 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
%11 = bitcast %jl_value_t addrspace(11)* %10 to %jl_array_t addrspace(11)* | |
%12 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 1 | |
%13 = load i64, i64 addrspace(11)* %12, align 8 | |
; │└ | |
%14 = icmp slt i64 %13, 1 | |
br i1 %14, label %L85, label %L32.lr.ph | |
L32.lr.ph: ; preds = %top | |
; │┌ @ array.jl:758 within `getindex' | |
%15 = bitcast %jl_value_t addrspace(11)* %10 to [1 x i64] addrspace(13)* addrspace(11)* | |
%16 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %15, align 8 | |
%17 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 4 | |
%18 = load i32, i32 addrspace(11)* %17, align 4 | |
%19 = zext i32 %18 to i64 | |
%20 = bitcast %jl_value_t addrspace(11)* %10 to %jl_value_t addrspace(10)* addrspace(11)* | |
%21 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %20, i64 4 | |
%22 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %21 to i64 addrspace(11)* | |
%23 = load i64, i64 addrspace(11)* %22, align 8 | |
%24 = sub i64 %23, %19 | |
%25 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 %24 | |
%26 = bitcast [1 x i64] addrspace(13)* %25 to i8 addrspace(13)* | |
%27 = sext i32 %18 to i64 | |
%28 = getelementptr inbounds i8, i8 addrspace(13)* %26, i64 %27 | |
%29 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 0, i64 0 | |
%30 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
%31 = bitcast %jl_value_t addrspace(11)* %30 to %jl_array_t addrspace(11)* | |
%32 = bitcast %jl_value_t addrspace(11)* %30 to [1 x i64] addrspace(13)* addrspace(11)* | |
%33 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %31, i64 0, i32 4 | |
%34 = bitcast %jl_value_t addrspace(11)* %30 to %jl_value_t addrspace(10)* addrspace(11)* | |
%35 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %34, i64 4 | |
%36 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %35 to i64 addrspace(11)* | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L32 | |
L32: ; preds = %L57, %L32.lr.ph | |
%.sroa.0275.0.copyload277.in = phi i64 addrspace(13)* [ %29, %L32.lr.ph ], [ %52, %L57 ] | |
%value_phi9425 = phi i64 [ 2, %L32.lr.ph ], [ %53, %L57 ] | |
%tindex_phi7424.in.in = phi i8 addrspace(13)* [ %28, %L32.lr.ph ], [ %51, %L57 ] | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:0 | |
%tindex_phi7424.in = load i8, i8 addrspace(13)* %tindex_phi7424.in.in, align 1 | |
%.sroa.0275.0.copyload277 = load i64, i64 addrspace(13)* %.sroa.0275.0.copyload277.in, align 8 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
%trunc = icmp ne i8 %tindex_phi7424.in, 0 | |
%switch = icmp ult i1 %trunc, true | |
br i1 %switch, label %L43, label %L42 | |
L42: ; preds = %L32 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
%37 = icmp eq i8 %tindex_phi7424.in, 1 | |
br i1 %37, label %L73.thread, label %L95 | |
L43: ; preds = %L32 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
; │┌ @ int.jl:860 within `-' @ int.jl:52 | |
%38 = add i64 %value_phi9425, -1 | |
; │└ | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
%39 = icmp uge i64 %38, %13 | |
; ││ @ int.jl:416 within `<' | |
; ││┌ @ bool.jl:40 within `&' | |
%40 = icmp slt i64 %13, 0 | |
; │└└ | |
%41 = or i1 %40, %39 | |
br i1 %41, label %L85, label %L57 | |
L57: ; preds = %L43 | |
; │┌ @ array.jl:758 within `getindex' | |
%42 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %32, align 8 | |
%43 = load i32, i32 addrspace(11)* %33, align 4 | |
%44 = zext i32 %43 to i64 | |
%45 = load i64, i64 addrspace(11)* %36, align 8 | |
%46 = sub i64 %45, %44 | |
%47 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %46 | |
%48 = bitcast [1 x i64] addrspace(13)* %47 to i8 addrspace(13)* | |
%49 = sext i32 %43 to i64 | |
%50 = getelementptr inbounds i8, i8 addrspace(13)* %48, i64 %49 | |
%51 = getelementptr inbounds i8, i8 addrspace(13)* %50, i64 %38 | |
%52 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %38, i64 0 | |
; │└ | |
; │┌ @ int.jl:53 within `+' | |
%53 = add i64 %value_phi9425, 1 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L32 | |
L85: ; preds = %L43, %top, %union_move54 | |
%merge = phi { %jl_value_t addrspace(10)*, i8 } [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 3 }, %union_move54 ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %top ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %L43 ] | |
; └ | |
; @ reduce.jl:54 within `_foldl_impl' | |
ret { %jl_value_t addrspace(10)*, i8 } %merge | |
L95: ; preds = %L73.thread, %L42 | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:45 within `iterate' | |
%54 = bitcast [1 x i64]* %2 to double* | |
%55 = addrspacecast double* %54 to double addrspace(11)* | |
%56 = load double, double addrspace(11)* %55, align 8 | |
%.sroa.0228.0..sroa_idx360364 = getelementptr inbounds [1 x i64], [1 x i64]* %3, i64 0, i64 0 | |
; └ | |
; @ reduce.jl:53 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
br label %L96 | |
L96: ; preds = %L207, %L95 | |
%57 = phi double [ %56, %L95 ], [ %105, %L207 ] | |
%.sroa.0228.0 = phi i64 [ undef, %L95 ], [ %.sroa.0228.0.copyload230, %L207 ] | |
%value_phi25 = phi i64 [ %value_phi9425, %L95 ], [ %value_phi39417, %L207 ] | |
; └ | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
; │┌ @ int.jl:860 within `-' @ int.jl:52 | |
%58 = add i64 %value_phi25, -1 | |
; │└ | |
; │┌ @ array.jl:214 within `length' | |
%59 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
; │└ | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
%60 = icmp uge i64 %58, %13 | |
; ││ @ int.jl:416 within `<' | |
; ││┌ @ bool.jl:40 within `&' | |
%61 = icmp slt i64 %13, 0 | |
; │└└ | |
%62 = or i1 %61, %60 | |
br i1 %62, label %union_move54, label %L128.lr.ph | |
L128.lr.ph: ; preds = %L96 | |
; │┌ @ array.jl:214 within `length' | |
%63 = bitcast %jl_value_t addrspace(11)* %59 to %jl_array_t addrspace(11)* | |
; │└ | |
; │┌ @ array.jl:758 within `getindex' | |
%64 = bitcast %jl_value_t addrspace(11)* %59 to [1 x i64] addrspace(13)* addrspace(11)* | |
%65 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %64, align 8 | |
%66 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %63, i64 0, i32 4 | |
%67 = load i32, i32 addrspace(11)* %66, align 4 | |
%68 = zext i32 %67 to i64 | |
%69 = bitcast %jl_value_t addrspace(11)* %59 to %jl_value_t addrspace(10)* addrspace(11)* | |
%70 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %69, i64 4 | |
%71 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %70 to i64 addrspace(11)* | |
%72 = load i64, i64 addrspace(11)* %71, align 8 | |
%73 = sub i64 %72, %68 | |
%74 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %73 | |
%75 = bitcast [1 x i64] addrspace(13)* %74 to i8 addrspace(13)* | |
%76 = sext i32 %67 to i64 | |
%77 = getelementptr inbounds i8, i8 addrspace(13)* %75, i64 %76 | |
%78 = getelementptr inbounds i8, i8 addrspace(13)* %77, i64 %58 | |
%79 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %58, i64 0 | |
%80 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
%81 = bitcast %jl_value_t addrspace(11)* %80 to %jl_array_t addrspace(11)* | |
%82 = bitcast %jl_value_t addrspace(11)* %80 to [1 x i64] addrspace(13)* addrspace(11)* | |
%83 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %81, i64 0, i32 4 | |
%84 = bitcast %jl_value_t addrspace(11)* %80 to %jl_value_t addrspace(10)* addrspace(11)* | |
%85 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %84, i64 4 | |
%86 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %85 to i64 addrspace(11)* | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L128 | |
L128: ; preds = %L153, %L128.lr.ph | |
%.sroa.0228.0.copyload230.in = phi i64 addrspace(13)* [ %79, %L128.lr.ph ], [ %101, %L153 ] | |
%value_phi39417.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39417, %L153 ] | |
%tindex_phi37416.in.in = phi i8 addrspace(13)* [ %78, %L128.lr.ph ], [ %100, %L153 ] | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:0 | |
%tindex_phi37416.in = load i8, i8 addrspace(13)* %tindex_phi37416.in.in, align 1 | |
%value_phi39417 = add i64 %value_phi39417.in, 1 | |
%.sroa.0228.0.copyload230 = load i64, i64 addrspace(13)* %.sroa.0228.0.copyload230.in, align 8 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
%trunc478 = icmp ne i8 %tindex_phi37416.in, 0 | |
%switch497 = icmp ult i1 %trunc478, true | |
br i1 %switch497, label %L139, label %L138 | |
L138: ; preds = %L128 | |
; └ | |
; @ reduce.jl:53 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
%87 = icmp eq i8 %tindex_phi37416.in, 1 | |
br i1 %87, label %L169.thread, label %L207 | |
L139: ; preds = %L128 | |
; └ | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
%88 = icmp uge i64 %value_phi39417.in, %13 | |
; ││ @ int.jl:416 within `<' | |
; ││┌ @ bool.jl:40 within `&' | |
%89 = icmp slt i64 %13, 0 | |
; │└└ | |
%90 = or i1 %89, %88 | |
br i1 %90, label %union_move54, label %L153 | |
L153: ; preds = %L139 | |
; │┌ @ array.jl:758 within `getindex' | |
%91 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %82, align 8 | |
%92 = load i32, i32 addrspace(11)* %83, align 4 | |
%93 = zext i32 %92 to i64 | |
%94 = load i64, i64 addrspace(11)* %86, align 8 | |
%95 = sub i64 %94, %93 | |
%96 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %95 | |
%97 = bitcast [1 x i64] addrspace(13)* %96 to i8 addrspace(13)* | |
%98 = sext i32 %92 to i64 | |
%99 = getelementptr inbounds i8, i8 addrspace(13)* %97, i64 %98 | |
%100 = getelementptr inbounds i8, i8 addrspace(13)* %99, i64 %value_phi39417.in | |
%101 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %value_phi39417.in, i64 0 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L128 | |
L207: ; preds = %L169.thread, %L138 | |
; │ @ generator.jl:45 within `iterate' | |
%102 = bitcast [1 x i64]* %3 to double* | |
%103 = addrspacecast double* %102 to double addrspace(11)* | |
%104 = load double, double addrspace(11)* %103, align 8 | |
; └ | |
; @ reduce.jl:59 within `_foldl_impl' | |
; ┌ @ reduce.jl:78 within `BottomRF' | |
; │┌ @ float.jl:401 within `+' | |
%105 = fadd double %57, %104 | |
; └└ | |
; @ reduce.jl:53 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
br label %L96 | |
union_move54: ; preds = %L96, %L139 | |
; └ | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' | |
store i64 %.sroa.0228.0, i64* %.sroa.0228.0..sroa_idx360364, align 8 | |
; └ | |
; @ reduce.jl:61 within `_foldl_impl' | |
%106 = bitcast [8 x i8]* %0 to double* | |
store double %57, double* %106, align 8 | |
br label %L85 | |
L73.thread: ; preds = %L42 | |
; @ reduce.jl:53 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' | |
%.sroa.0275.0..sroa_idx353355 = getelementptr inbounds [1 x i64], [1 x i64]* %2, i64 0, i64 0 | |
store i64 %.sroa.0275.0.copyload277, i64* %.sroa.0275.0..sroa_idx353355, align 8 | |
; │ @ generator.jl:47 within `iterate' | |
br label %L95 | |
L169.thread: ; preds = %L138 | |
; └ | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' | |
store i64 %.sroa.0228.0.copyload230, i64* %.sroa.0228.0..sroa_idx360364, align 8 | |
; │ @ generator.jl:47 within `iterate' | |
br label %L207 | |
; └ | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}},var"#37#39"})::Union{Missing, Base._InitialValue, Float64} | |
Body::Union{Missing, Base._InitialValue, Float64} | |
@ reduce.jl:53 within `_foldl_impl' | |
┌ @ generator.jl:44 within `iterate' | |
│┌ @ Base.jl:33 within `getproperty' | |
1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
│ │┌ @ Base.jl:33 within `getproperty' | |
│ ││ %2 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %3 = Base.bitcast(UInt64, 1)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %4 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %5 = Base.sub_int(%3, %4)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %6 = Base.arraylen(%2)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %7 = Base.sle_int(0, %6)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:368 within `unsigned' | |
│ │││┌ @ essentials.jl:413 within `reinterpret' | |
│ ││││ %8 = Base.bitcast(UInt64, %6)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %9 = Base.ult_int(%5, %8)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %10 = Base.and_int(%7, %9)::Bool | |
│ │└└ | |
└───│ goto #3 if not %10 | |
│┌ @ array.jl:758 within `getindex' | |
2 ──││ %12 = Base.arrayref(false, %2, 1)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %13 = Base.add_int(1, 1)::Int64 | |
│ │└ | |
└───│ goto #4 | |
3 ──│ goto #4 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
4 ┄─│ %16 = φ (#2 => false, #3 => true)::Bool | |
│ │ %17 = φ (#2 => %12)::Union{Missing, Float64} | |
│ │ %18 = φ (#2 => %13)::Int64 | |
│ │ %19 = φ (#2 => false)::Bool | |
│ │ %20 = φ (#2 => %12)::Union{Missing, Float64} | |
│ │ %21 = φ (#2 => %13)::Int64 | |
└───│ goto #5 | |
5 ──│ nothing | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
6 ┄─│ %24 = φ (#5 => %16, #17 => %57)::Bool | |
│ │ %25 = φ (#5 => %17, #17 => %58)::Union{Missing, Float64} | |
│ │ %26 = φ (#5 => %18, #17 => %59)::Int64 | |
│ │ %27 = φ (#5 => %19, #17 => %60)::Bool | |
│ │ %28 = φ (#5 => %20, #17 => %61)::Union{Missing, Float64} | |
│ │ %29 = φ (#5 => %21, #17 => %62)::Int64 | |
│ │ %30 = Core.Intrinsics.not_int(%24)::Bool | |
└───│ goto #18 if not %30 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
7 ──│ %32 = (isa)(%25, Missing)::Bool | |
└───│ goto #9 if not %32 | |
8 ──│ goto #12 | |
9 ──│ %35 = (isa)(%25, Float64)::Bool | |
└───│ goto #11 if not %35 | |
10 ─│ goto #12 | |
11 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
12 ┄│ %40 = φ (#8 => false, #10 => true)::Bool | |
└───│ goto #14 if not %40 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:432 | |
13 ─│ goto #19 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
│┌ @ Base.jl:33 within `getproperty' | |
14 ─││ %43 = Base.getfield(%1, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %44 = Base.bitcast(UInt64, %26)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %45 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %46 = Base.sub_int(%44, %45)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %47 = Base.arraylen(%43)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %48 = Base.sle_int(0, %47)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:368 within `unsigned' | |
│ │││┌ @ essentials.jl:413 within `reinterpret' | |
│ ││││ %49 = Base.bitcast(UInt64, %47)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %50 = Base.ult_int(%46, %49)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %51 = Base.and_int(%48, %50)::Bool | |
│ │└└ | |
└───│ goto #16 if not %51 | |
│┌ @ array.jl:758 within `getindex' | |
15 ─││ %53 = Base.arrayref(false, %43, %26)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %54 = Base.add_int(%26, 1)::Int64 | |
│ │└ | |
└───│ goto #17 | |
16 ─│ goto #17 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
17 ┄│ %57 = φ (#15 => false, #16 => true)::Bool | |
│ │ %58 = φ (#15 => %53)::Union{Missing, Float64} | |
│ │ %59 = φ (#15 => %54)::Int64 | |
│ │ %60 = φ (#15 => false)::Bool | |
│ │ %61 = φ (#15 => %53)::Union{Missing, Float64} | |
│ │ %62 = φ (#15 => %54)::Int64 | |
└───│ goto #6 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:436 | |
18 ─│ goto #19 | |
│ @ generator.jl:44 within `iterate' | |
19 ┄│ %65 = φ (#13 => %27, #18 => true)::Bool | |
│ │ %66 = φ (#13 => %28)::Union{Missing, Float64} | |
│ │ %67 = φ (#13 => %29)::Int64 | |
│ │ @ generator.jl:45 within `iterate' | |
└───│ goto #21 if not %65 | |
20 ─│ goto #27 | |
│ @ generator.jl:47 within `iterate' | |
21 ─│ %70 = (isa)(%66, Missing)::Bool | |
└───│ goto #23 if not %70 | |
22 ─│ goto #26 | |
23 ─│ %73 = (isa)(%66, Float64)::Bool | |
└───│ goto #25 if not %73 | |
24 ─│ %75 = π (%66, Float64) | |
└───│ goto #26 | |
25 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
26 ┄│ %79 = φ (#22 => $(QuoteNode(missing)), #24 => %75)::Union{Missing, Float64} | |
└───│ goto #27 | |
└ | |
27 ┄ %81 = φ (#20 => true, #26 => false)::Bool | |
│ %82 = φ (#26 => %79)::Union{Missing, Float64} | |
│ %83 = φ (#26 => %67)::Int64 | |
│ @ reduce.jl:54 within `_foldl_impl' | |
└─── goto #29 if not %81 | |
28 ─ return init | |
@ reduce.jl:55 within `_foldl_impl' | |
29 ─ %86 = (isa)(%82, Missing)::Bool | |
└─── goto #31 if not %86 | |
30 ─ goto #34 | |
31 ─ %89 = (isa)(%82, Float64)::Bool | |
└─── goto #33 if not %89 | |
32 ─ %91 = π (%82, Float64) | |
└─── goto #34 | |
33 ─ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└─── $(Expr(:unreachable)) | |
34 ┄ %95 = φ (#30 => $(QuoteNode(missing)), #32 => %91)::Union{Missing, Float64} | |
@ reduce.jl:56 within `_foldl_impl' | |
35 ┄ %96 = φ (#34 => %83, #71 => %176)::Int64 | |
│ %97 = φ (#34 => %95, #71 => %206)::Union{Missing, Float64} | |
│ @ reduce.jl:57 within `_foldl_impl' | |
│ ┌ @ generator.jl:44 within `iterate' | |
│ │┌ @ Base.jl:33 within `getproperty' | |
│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
│ │┌ @ Base.jl:33 within `getproperty' | |
│ ││ %99 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %100 = Base.bitcast(UInt64, %96)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %101 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %102 = Base.sub_int(%100, %101)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %103 = Base.arraylen(%99)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %104 = Base.sle_int(0, %103)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:368 within `unsigned' | |
│ │││┌ @ essentials.jl:413 within `reinterpret' | |
│ ││││ %105 = Base.bitcast(UInt64, %103)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %106 = Base.ult_int(%102, %105)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %107 = Base.and_int(%104, %106)::Bool | |
│ │└└ | |
└───│ goto #37 if not %107 | |
│┌ @ array.jl:758 within `getindex' | |
36 ─││ %109 = Base.arrayref(false, %99, %96)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %110 = Base.add_int(%96, 1)::Int64 | |
│ │└ | |
└───│ goto #38 | |
37 ─│ goto #38 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
38 ┄│ %113 = φ (#36 => false, #37 => true)::Bool | |
│ │ %114 = φ (#36 => %109)::Union{Missing, Float64} | |
│ │ %115 = φ (#36 => %110)::Int64 | |
│ │ %116 = φ (#36 => false)::Bool | |
│ │ %117 = φ (#36 => %109)::Union{Missing, Float64} | |
└───│ %118 = φ (#36 => %110)::Int64 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
39 ┄│ %119 = φ (#38 => %113, #50 => %152)::Bool | |
│ │ %120 = φ (#38 => %114, #50 => %153)::Union{Missing, Float64} | |
│ │ %121 = φ (#38 => %115, #50 => %154)::Int64 | |
│ │ %122 = φ (#38 => %116, #50 => %155)::Bool | |
│ │ %123 = φ (#38 => %117, #50 => %156)::Union{Missing, Float64} | |
│ │ %124 = φ (#38 => %118, #50 => %157)::Int64 | |
│ │ %125 = Core.Intrinsics.not_int(%119)::Bool | |
└───│ goto #51 if not %125 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
40 ─│ %127 = (isa)(%120, Missing)::Bool | |
└───│ goto #42 if not %127 | |
41 ─│ goto #45 | |
42 ─│ %130 = (isa)(%120, Float64)::Bool | |
└───│ goto #44 if not %130 | |
43 ─│ goto #45 | |
44 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
45 ┄│ %135 = φ (#41 => false, #43 => true)::Bool | |
└───│ goto #47 if not %135 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:432 | |
46 ─│ goto #52 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
│┌ @ Base.jl:33 within `getproperty' | |
47 ─││ %138 = Base.getfield(%98, :itr)::Array{Union{Missing, Float64},1} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
│ │┌ @ int.jl:450 within `rem' | |
│ ││ %139 = Base.bitcast(UInt64, %121)::UInt64 | |
│ │└ | |
│ │┌ @ int.jl:858 within `-' | |
│ ││┌ @ int.jl:450 within `rem' | |
│ │││ %140 = Base.bitcast(UInt64, 1)::UInt64 | |
│ ││└ | |
│ ││ @ int.jl:860 within `-' @ int.jl:52 | |
│ ││ %141 = Base.sub_int(%139, %140)::UInt64 | |
│ │└ | |
│ │┌ @ array.jl:214 within `length' | |
│ ││ %142 = Base.arraylen(%138)::Int64 | |
│ │└ | |
│ │┌ @ int.jl:416 within `<' | |
│ ││┌ @ operators.jl:341 within `>=' | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %143 = Base.sle_int(0, %142)::Bool | |
│ ││└└ | |
│ ││┌ @ essentials.jl:368 within `unsigned' | |
│ │││┌ @ essentials.jl:413 within `reinterpret' | |
│ ││││ %144 = Base.bitcast(UInt64, %142)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
│ ││ %145 = Base.ult_int(%141, %144)::Bool | |
│ ││ @ int.jl:416 within `<' | |
│ ││┌ @ bool.jl:40 within `&' | |
│ │││ %146 = Base.and_int(%143, %145)::Bool | |
│ │└└ | |
└───│ goto #49 if not %146 | |
│┌ @ array.jl:758 within `getindex' | |
48 ─││ %148 = Base.arrayref(false, %138, %121)::Union{Missing, Float64} | |
│ │└ | |
│ │┌ @ int.jl:53 within `+' | |
│ ││ %149 = Base.add_int(%121, 1)::Int64 | |
│ │└ | |
└───│ goto #50 | |
49 ─│ goto #50 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:434 | |
50 ┄│ %152 = φ (#48 => false, #49 => true)::Bool | |
│ │ %153 = φ (#48 => %148)::Union{Missing, Float64} | |
│ │ %154 = φ (#48 => %149)::Int64 | |
│ │ %155 = φ (#48 => false)::Bool | |
│ │ %156 = φ (#48 => %148)::Union{Missing, Float64} | |
│ │ %157 = φ (#48 => %149)::Int64 | |
└───│ goto #39 | |
│ @ generator.jl:44 within `iterate' @ iterators.jl:436 | |
51 ─│ goto #52 | |
│ @ generator.jl:44 within `iterate' | |
52 ┄│ %160 = φ (#46 => %122, #51 => true)::Bool | |
│ │ %161 = φ (#46 => %123)::Union{Missing, Float64} | |
│ │ %162 = φ (#46 => %124)::Int64 | |
│ │ @ generator.jl:45 within `iterate' | |
└───│ goto #54 if not %160 | |
53 ─│ goto #60 | |
│ @ generator.jl:47 within `iterate' | |
54 ─│ %165 = (isa)(%161, Missing)::Bool | |
└───│ goto #56 if not %165 | |
55 ─│ goto #59 | |
56 ─│ %168 = (isa)(%161, Float64)::Bool | |
└───│ goto #58 if not %168 | |
57 ─│ %170 = π (%161, Float64) | |
└───│ goto #59 | |
58 ─│ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└───│ $(Expr(:unreachable)) | |
59 ┄│ %174 = φ (#55 => $(QuoteNode(missing)), #57 => %170)::Union{Missing, Float64} | |
└───│ goto #60 | |
└ | |
60 ┄ %176 = φ (#59 => %162)::Int64 | |
│ %177 = φ (#53 => true, #59 => false)::Bool | |
│ %178 = φ (#59 => %174)::Union{Missing, Float64} | |
│ @ reduce.jl:58 within `_foldl_impl' | |
└─── goto #62 if not %177 | |
61 ─ goto #72 | |
@ reduce.jl:59 within `_foldl_impl' | |
62 ─ %181 = (isa)(%97, Missing)::Bool | |
│ %182 = (isa)(%178, Missing)::Bool | |
│ %183 = (Core.Intrinsics.and_int)(%181, %182)::Bool | |
└─── goto #64 if not %183 | |
63 ─ goto #71 | |
64 ─ %186 = (isa)(%97, Float64)::Bool | |
│ %187 = (isa)(%178, Missing)::Bool | |
│ %188 = (Core.Intrinsics.and_int)(%186, %187)::Bool | |
└─── goto #66 if not %188 | |
65 ─ goto #71 | |
66 ─ %191 = (isa)(%97, Missing)::Bool | |
│ %192 = (isa)(%178, Float64)::Bool | |
│ %193 = (Core.Intrinsics.and_int)(%191, %192)::Bool | |
└─── goto #68 if not %193 | |
67 ─ goto #71 | |
68 ─ %196 = (isa)(%97, Float64)::Bool | |
│ %197 = (isa)(%178, Float64)::Bool | |
│ %198 = (Core.Intrinsics.and_int)(%196, %197)::Bool | |
└─── goto #70 if not %198 | |
69 ─ %200 = π (%97, Float64) | |
│ %201 = π (%178, Float64) | |
│ ┌ @ reduce.jl:78 within `BottomRF' | |
│ │┌ @ float.jl:401 within `+' | |
│ ││ %202 = Base.add_float(%200, %201)::Float64 | |
│ └└ | |
└─── goto #71 | |
70 ─ Core.throw(ErrorException("fatal error in type inference (type bound)")) | |
└─── $(Expr(:unreachable)) | |
71 ┄ %206 = φ (#63 => $(QuoteNode(missing)), #65 => $(QuoteNode(missing)), #67 => $(QuoteNode(missing)), #69 => %202)::Union{Missing, Float64} | |
└─── goto #35 | |
@ reduce.jl:61 within `_foldl_impl' | |
72 ─ return %97 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; @ reduce.jl:53 within `_foldl_impl' | |
define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17219([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) { | |
top: | |
; ┌ @ generator.jl:44 within `iterate' | |
; │┌ @ Base.jl:33 within `getproperty' | |
%2 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)* | |
%3 = bitcast %jl_value_t addrspace(11)* %2 to %jl_value_t addrspace(10)* addrspace(11)* | |
%4 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %3, align 8 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
; │┌ @ Base.jl:33 within `getproperty' | |
%5 = addrspacecast %jl_value_t addrspace(10)* %4 to %jl_value_t addrspace(11)* | |
%6 = bitcast %jl_value_t addrspace(11)* %5 to %jl_value_t addrspace(10)* addrspace(11)* | |
%7 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %6, align 8 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
; │┌ @ array.jl:214 within `length' | |
%8 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)* | |
%9 = bitcast %jl_value_t addrspace(11)* %8 to %jl_array_t addrspace(11)* | |
%10 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 1 | |
%11 = load i64, i64 addrspace(11)* %10, align 8 | |
; │└ | |
%12 = icmp slt i64 %11, 1 | |
br i1 %12, label %L85, label %L32.lr.ph | |
L32.lr.ph: ; preds = %top | |
; │┌ @ array.jl:758 within `getindex' | |
%13 = bitcast %jl_value_t addrspace(11)* %8 to [1 x i64] addrspace(13)* addrspace(11)* | |
%14 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %13, align 8 | |
%15 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 4 | |
%16 = load i32, i32 addrspace(11)* %15, align 4 | |
%17 = zext i32 %16 to i64 | |
%18 = bitcast %jl_value_t addrspace(11)* %8 to %jl_value_t addrspace(10)* addrspace(11)* | |
%19 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %18, i64 4 | |
%20 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %19 to i64 addrspace(11)* | |
%21 = load i64, i64 addrspace(11)* %20, align 8 | |
%22 = sub i64 %21, %17 | |
%23 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %14, i64 %22 | |
%24 = bitcast [1 x i64] addrspace(13)* %23 to i8 addrspace(13)* | |
%25 = sext i32 %16 to i64 | |
%26 = getelementptr inbounds i8, i8 addrspace(13)* %24, i64 %25 | |
%27 = bitcast [1 x i64] addrspace(13)* %14 to double addrspace(13)* | |
%28 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)* | |
%29 = bitcast %jl_value_t addrspace(11)* %28 to %jl_array_t addrspace(11)* | |
%30 = bitcast %jl_value_t addrspace(11)* %28 to [1 x i64] addrspace(13)* addrspace(11)* | |
%31 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %29, i64 0, i32 4 | |
%32 = bitcast %jl_value_t addrspace(11)* %28 to %jl_value_t addrspace(10)* addrspace(11)* | |
%33 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %32, i64 4 | |
%34 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %33 to i64 addrspace(11)* | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L32 | |
L32: ; preds = %L57, %L32.lr.ph | |
%.in = phi double addrspace(13)* [ %27, %L32.lr.ph ], [ %50, %L57 ] | |
%value_phi9381 = phi i64 [ 2, %L32.lr.ph ], [ %51, %L57 ] | |
%tindex_phi7380.in.in = phi i8 addrspace(13)* [ %26, %L32.lr.ph ], [ %48, %L57 ] | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
; │┌ @ array.jl:758 within `getindex' | |
%tindex_phi7380.in = load i8, i8 addrspace(13)* %tindex_phi7380.in.in, align 1 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
%trunc = icmp ne i8 %tindex_phi7380.in, 0 | |
%switch = icmp ult i1 %trunc, true | |
br i1 %switch, label %L43, label %L95.L95.split_crit_edge | |
L43: ; preds = %L32 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
; │┌ @ int.jl:860 within `-' @ int.jl:52 | |
%35 = add i64 %value_phi9381, -1 | |
; │└ | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
%36 = icmp uge i64 %35, %11 | |
; ││ @ int.jl:416 within `<' | |
; ││┌ @ bool.jl:40 within `&' | |
%37 = icmp slt i64 %11, 0 | |
; │└└ | |
%38 = or i1 %37, %36 | |
br i1 %38, label %L85, label %L57 | |
L57: ; preds = %L43 | |
; │┌ @ array.jl:758 within `getindex' | |
%39 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %30, align 8 | |
%40 = load i32, i32 addrspace(11)* %31, align 4 | |
%41 = zext i32 %40 to i64 | |
%42 = load i64, i64 addrspace(11)* %34, align 8 | |
%43 = sub i64 %42, %41 | |
%44 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %43 | |
%45 = bitcast [1 x i64] addrspace(13)* %44 to i8 addrspace(13)* | |
%46 = sext i32 %40 to i64 | |
%47 = getelementptr inbounds i8, i8 addrspace(13)* %45, i64 %46 | |
%48 = getelementptr inbounds i8, i8 addrspace(13)* %47, i64 %35 | |
%49 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %35, i64 0 | |
%50 = bitcast i64 addrspace(13)* %49 to double addrspace(13)* | |
; │└ | |
; │┌ @ int.jl:53 within `+' | |
%51 = add i64 %value_phi9381, 1 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L32 | |
L85: ; preds = %L43, %top, %union_move54 | |
%merge = phi { %jl_value_t addrspace(10)*, i8 } [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 3 }, %union_move54 ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %top ], [ { %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* null to %jl_value_t addrspace(10)*), i8 2 }, %L43 ] | |
; └ | |
; @ reduce.jl:54 within `_foldl_impl' | |
ret { %jl_value_t addrspace(10)*, i8 } %merge | |
L95.L95.split_crit_edge: ; preds = %L32 | |
; @ reduce.jl:53 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
; │┌ @ array.jl:758 within `getindex' | |
%52 = load double, double addrspace(13)* %.in, align 8 | |
%53 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)* | |
%54 = bitcast %jl_value_t addrspace(11)* %53 to %jl_array_t addrspace(11)* | |
%55 = bitcast %jl_value_t addrspace(11)* %53 to [1 x i64] addrspace(13)* addrspace(11)* | |
%56 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %55, align 8 | |
%57 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %54, i64 0, i32 4 | |
%58 = load i32, i32 addrspace(11)* %57, align 4 | |
%59 = zext i32 %58 to i64 | |
%60 = bitcast %jl_value_t addrspace(11)* %53 to %jl_value_t addrspace(10)* addrspace(11)* | |
%61 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %60, i64 4 | |
%62 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %61 to i64 addrspace(11)* | |
%63 = load i64, i64 addrspace(11)* %62, align 8 | |
%64 = sub i64 %63, %59 | |
%65 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %64 | |
%66 = bitcast [1 x i64] addrspace(13)* %65 to i8 addrspace(13)* | |
%67 = sext i32 %58 to i64 | |
%68 = getelementptr inbounds i8, i8 addrspace(13)* %66, i64 %67 | |
; └└ | |
; @ reduce.jl:55 within `_foldl_impl' | |
br label %L96 | |
L96: ; preds = %L207, %L95.L95.split_crit_edge | |
%69 = phi double [ %52, %L95.L95.split_crit_edge ], [ %74, %L207 ] | |
%value_phi25 = phi i64 [ %value_phi9381, %L95.L95.split_crit_edge ], [ %value_phi39373, %L207 ] | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
; │┌ @ int.jl:860 within `-' @ int.jl:52 | |
%70 = add i64 %value_phi25, -1 | |
; │└ | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
%71 = icmp ult i64 %70, %11 | |
; │└ | |
br i1 %71, label %L128.lr.ph, label %union_move54 | |
L128.lr.ph: ; preds = %L96 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L128 | |
L128: ; preds = %L153, %L128.lr.ph | |
%.pn = phi i64 [ %70, %L128.lr.ph ], [ %value_phi39373.in, %L153 ] | |
%value_phi39373.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39373, %L153 ] | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
; │┌ @ array.jl:758 within `getindex' | |
%tindex_phi37372.in.in = getelementptr inbounds i8, i8 addrspace(13)* %68, i64 %.pn | |
%tindex_phi37372.in = load i8, i8 addrspace(13)* %tindex_phi37372.in.in, align 1 | |
; │└ | |
; │┌ @ int.jl:53 within `+' | |
%value_phi39373 = add i64 %value_phi39373.in, 1 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
%trunc443 = icmp ne i8 %tindex_phi37372.in, 0 | |
%switch458 = icmp ult i1 %trunc443, true | |
br i1 %switch458, label %L139, label %L207 | |
L139: ; preds = %L128 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
%72 = icmp ult i64 %value_phi39373.in, %11 | |
; │└ | |
br i1 %72, label %L153, label %union_move54 | |
L153: ; preds = %L139 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L128 | |
L207: ; preds = %L128 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
; │┌ @ array.jl:758 within `getindex' | |
%.sroa.0223.0.copyload225.in = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %.pn, i64 0 | |
%73 = bitcast i64 addrspace(13)* %.sroa.0223.0.copyload225.in to double addrspace(13)* | |
%.sroa.0223.0.copyload225444 = load double, double addrspace(13)* %73, align 8 | |
; └└ | |
; @ reduce.jl:59 within `_foldl_impl' | |
; ┌ @ reduce.jl:78 within `BottomRF' | |
; │┌ @ float.jl:401 within `+' | |
%74 = fadd double %69, %.sroa.0223.0.copyload225444 | |
; └└ | |
br label %L96 | |
union_move54: ; preds = %L96, %L139 | |
; @ reduce.jl:61 within `_foldl_impl' | |
%75 = bitcast [8 x i8]* %0 to double* | |
store double %69, double* %75, align 8 | |
br label %L85 | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- _foldl_impl.dfcd79287d.ir 2019-12-02 23:59:13.009991656 -0800 | |
+++ _foldl_impl.d0b1c044f6.ir 2019-12-02 23:59:13.009991656 -0800 | |
@@ -1,9 +1,9 @@ | |
-│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}},var"#37#39"})::Union{Missing, Base._InitialValue, Float64} | |
+│ ─ %-1 = invoke _foldl_impl(::Base.BottomRF{typeof(+)},::Base._InitialValue,::Base.Generator{Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}},var"#27#29"})::Union{Missing, Base._InitialValue, Float64} | |
Body::Union{Missing, Base._InitialValue, Float64} | |
@ reduce.jl:53 within `_foldl_impl' | |
┌ @ generator.jl:44 within `iterate' | |
│┌ @ Base.jl:33 within `getproperty' | |
-1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}} | |
+1 ──││ %1 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
│ │┌ @ Base.jl:33 within `getproperty' | |
@@ -28,8 +28,8 @@ | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %7 = Base.sle_int(0, %6)::Bool | |
│ ││└└ | |
-│ ││┌ @ essentials.jl:368 within `unsigned' | |
-│ │││┌ @ essentials.jl:413 within `reinterpret' | |
+│ ││┌ @ essentials.jl:370 within `unsigned' | |
+│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %8 = Base.bitcast(UInt64, %6)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
@@ -101,8 +101,8 @@ | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %48 = Base.sle_int(0, %47)::Bool | |
│ ││└└ | |
-│ ││┌ @ essentials.jl:368 within `unsigned' | |
-│ │││┌ @ essentials.jl:413 within `reinterpret' | |
+│ ││┌ @ essentials.jl:370 within `unsigned' | |
+│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %49 = Base.bitcast(UInt64, %47)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
@@ -173,7 +173,7 @@ | |
│ @ reduce.jl:57 within `_foldl_impl' | |
│ ┌ @ generator.jl:44 within `iterate' | |
│ │┌ @ Base.jl:33 within `getproperty' | |
-│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#38#40",Array{Union{Missing, Float64},1}} | |
+│ ││ %98 = Base.getfield(itr, :iter)::Base.Iterators.Filter{var"#28#30",Array{Union{Missing, Float64},1}} | |
│ │└ | |
│ │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
│ │┌ @ Base.jl:33 within `getproperty' | |
@@ -198,8 +198,8 @@ | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %104 = Base.sle_int(0, %103)::Bool | |
│ ││└└ | |
-│ ││┌ @ essentials.jl:368 within `unsigned' | |
-│ │││┌ @ essentials.jl:413 within `reinterpret' | |
+│ ││┌ @ essentials.jl:370 within `unsigned' | |
+│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %105 = Base.bitcast(UInt64, %103)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 | |
@@ -269,8 +269,8 @@ | |
│ │││┌ @ int.jl:410 within `<=' | |
│ ││││ %143 = Base.sle_int(0, %142)::Bool | |
│ ││└└ | |
-│ ││┌ @ essentials.jl:368 within `unsigned' | |
-│ │││┌ @ essentials.jl:413 within `reinterpret' | |
+│ ││┌ @ essentials.jl:370 within `unsigned' | |
+│ │││┌ @ essentials.jl:415 within `reinterpret' | |
│ ││││ %144 = Base.bitcast(UInt64, %142)::UInt64 | |
│ ││└└ | |
│ ││ @ int.jl:416 within `<' @ int.jl:409 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- _foldl_impl.dfcd79287d.llvm 2019-12-02 23:59:13.009991656 -0800 | |
+++ _foldl_impl.d0b1c044f6.llvm 2019-12-02 23:59:13.009991656 -0800 | |
@@ -1,100 +1,105 @@ | |
; @ reduce.jl:53 within `_foldl_impl' | |
-define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17219([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) { | |
+define { %jl_value_t addrspace(10)*, i8 } @julia__foldl_impl_17515([8 x i8]* noalias nocapture align 8 dereferenceable(8), %jl_value_t addrspace(10)* nonnull align 8 dereferenceable(8)) { | |
top: | |
+ %2 = alloca [1 x i64], align 8 | |
+ %3 = alloca [1 x i64], align 8 | |
; ┌ @ generator.jl:44 within `iterate' | |
; │┌ @ Base.jl:33 within `getproperty' | |
- %2 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)* | |
- %3 = bitcast %jl_value_t addrspace(11)* %2 to %jl_value_t addrspace(10)* addrspace(11)* | |
- %4 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %3, align 8 | |
+ %4 = addrspacecast %jl_value_t addrspace(10)* %1 to %jl_value_t addrspace(11)* | |
+ %5 = bitcast %jl_value_t addrspace(11)* %4 to %jl_value_t addrspace(10)* addrspace(11)* | |
+ %6 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %5, align 8 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 | |
; │┌ @ Base.jl:33 within `getproperty' | |
- %5 = addrspacecast %jl_value_t addrspace(10)* %4 to %jl_value_t addrspace(11)* | |
- %6 = bitcast %jl_value_t addrspace(11)* %5 to %jl_value_t addrspace(10)* addrspace(11)* | |
- %7 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %6, align 8 | |
+ %7 = addrspacecast %jl_value_t addrspace(10)* %6 to %jl_value_t addrspace(11)* | |
+ %8 = bitcast %jl_value_t addrspace(11)* %7 to %jl_value_t addrspace(10)* addrspace(11)* | |
+ %9 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %8, align 8 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
; │┌ @ array.jl:214 within `length' | |
- %8 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)* | |
- %9 = bitcast %jl_value_t addrspace(11)* %8 to %jl_array_t addrspace(11)* | |
- %10 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 1 | |
- %11 = load i64, i64 addrspace(11)* %10, align 8 | |
+ %10 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
+ %11 = bitcast %jl_value_t addrspace(11)* %10 to %jl_array_t addrspace(11)* | |
+ %12 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 1 | |
+ %13 = load i64, i64 addrspace(11)* %12, align 8 | |
; │└ | |
- %12 = icmp slt i64 %11, 1 | |
- br i1 %12, label %L85, label %L32.lr.ph | |
+ %14 = icmp slt i64 %13, 1 | |
+ br i1 %14, label %L85, label %L32.lr.ph | |
L32.lr.ph: ; preds = %top | |
; │┌ @ array.jl:758 within `getindex' | |
- %13 = bitcast %jl_value_t addrspace(11)* %8 to [1 x i64] addrspace(13)* addrspace(11)* | |
- %14 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %13, align 8 | |
- %15 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %9, i64 0, i32 4 | |
- %16 = load i32, i32 addrspace(11)* %15, align 4 | |
- %17 = zext i32 %16 to i64 | |
- %18 = bitcast %jl_value_t addrspace(11)* %8 to %jl_value_t addrspace(10)* addrspace(11)* | |
- %19 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %18, i64 4 | |
- %20 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %19 to i64 addrspace(11)* | |
- %21 = load i64, i64 addrspace(11)* %20, align 8 | |
- %22 = sub i64 %21, %17 | |
- %23 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %14, i64 %22 | |
- %24 = bitcast [1 x i64] addrspace(13)* %23 to i8 addrspace(13)* | |
- %25 = sext i32 %16 to i64 | |
- %26 = getelementptr inbounds i8, i8 addrspace(13)* %24, i64 %25 | |
- %27 = bitcast [1 x i64] addrspace(13)* %14 to double addrspace(13)* | |
- %28 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)* | |
- %29 = bitcast %jl_value_t addrspace(11)* %28 to %jl_array_t addrspace(11)* | |
- %30 = bitcast %jl_value_t addrspace(11)* %28 to [1 x i64] addrspace(13)* addrspace(11)* | |
- %31 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %29, i64 0, i32 4 | |
- %32 = bitcast %jl_value_t addrspace(11)* %28 to %jl_value_t addrspace(10)* addrspace(11)* | |
- %33 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %32, i64 4 | |
- %34 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %33 to i64 addrspace(11)* | |
+ %15 = bitcast %jl_value_t addrspace(11)* %10 to [1 x i64] addrspace(13)* addrspace(11)* | |
+ %16 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %15, align 8 | |
+ %17 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %11, i64 0, i32 4 | |
+ %18 = load i32, i32 addrspace(11)* %17, align 4 | |
+ %19 = zext i32 %18 to i64 | |
+ %20 = bitcast %jl_value_t addrspace(11)* %10 to %jl_value_t addrspace(10)* addrspace(11)* | |
+ %21 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %20, i64 4 | |
+ %22 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %21 to i64 addrspace(11)* | |
+ %23 = load i64, i64 addrspace(11)* %22, align 8 | |
+ %24 = sub i64 %23, %19 | |
+ %25 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 %24 | |
+ %26 = bitcast [1 x i64] addrspace(13)* %25 to i8 addrspace(13)* | |
+ %27 = sext i32 %18 to i64 | |
+ %28 = getelementptr inbounds i8, i8 addrspace(13)* %26, i64 %27 | |
+ %29 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %16, i64 0, i64 0 | |
+ %30 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
+ %31 = bitcast %jl_value_t addrspace(11)* %30 to %jl_array_t addrspace(11)* | |
+ %32 = bitcast %jl_value_t addrspace(11)* %30 to [1 x i64] addrspace(13)* addrspace(11)* | |
+ %33 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %31, i64 0, i32 4 | |
+ %34 = bitcast %jl_value_t addrspace(11)* %30 to %jl_value_t addrspace(10)* addrspace(11)* | |
+ %35 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %34, i64 4 | |
+ %36 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %35 to i64 addrspace(11)* | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L32 | |
L32: ; preds = %L57, %L32.lr.ph | |
- %.in = phi double addrspace(13)* [ %27, %L32.lr.ph ], [ %50, %L57 ] | |
- %value_phi9381 = phi i64 [ 2, %L32.lr.ph ], [ %51, %L57 ] | |
- %tindex_phi7380.in.in = phi i8 addrspace(13)* [ %26, %L32.lr.ph ], [ %48, %L57 ] | |
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
-; │┌ @ array.jl:758 within `getindex' | |
- %tindex_phi7380.in = load i8, i8 addrspace(13)* %tindex_phi7380.in.in, align 1 | |
-; │└ | |
+ %.sroa.0275.0.copyload277.in = phi i64 addrspace(13)* [ %29, %L32.lr.ph ], [ %52, %L57 ] | |
+ %value_phi9425 = phi i64 [ 2, %L32.lr.ph ], [ %53, %L57 ] | |
+ %tindex_phi7424.in.in = phi i8 addrspace(13)* [ %28, %L32.lr.ph ], [ %51, %L57 ] | |
+; │ @ generator.jl:44 within `iterate' @ iterators.jl:0 | |
+ %tindex_phi7424.in = load i8, i8 addrspace(13)* %tindex_phi7424.in.in, align 1 | |
+ %.sroa.0275.0.copyload277 = load i64, i64 addrspace(13)* %.sroa.0275.0.copyload277.in, align 8 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
- %trunc = icmp ne i8 %tindex_phi7380.in, 0 | |
+ %trunc = icmp ne i8 %tindex_phi7424.in, 0 | |
%switch = icmp ult i1 %trunc, true | |
- br i1 %switch, label %L43, label %L95.L95.split_crit_edge | |
+ br i1 %switch, label %L43, label %L42 | |
+ | |
+L42: ; preds = %L32 | |
+; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
+ %37 = icmp eq i8 %tindex_phi7424.in, 1 | |
+ br i1 %37, label %L73.thread, label %L95 | |
L43: ; preds = %L32 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
; │┌ @ int.jl:860 within `-' @ int.jl:52 | |
- %35 = add i64 %value_phi9381, -1 | |
+ %38 = add i64 %value_phi9425, -1 | |
; │└ | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
- %36 = icmp uge i64 %35, %11 | |
+ %39 = icmp uge i64 %38, %13 | |
; ││ @ int.jl:416 within `<' | |
; ││┌ @ bool.jl:40 within `&' | |
- %37 = icmp slt i64 %11, 0 | |
+ %40 = icmp slt i64 %13, 0 | |
; │└└ | |
- %38 = or i1 %37, %36 | |
- br i1 %38, label %L85, label %L57 | |
+ %41 = or i1 %40, %39 | |
+ br i1 %41, label %L85, label %L57 | |
L57: ; preds = %L43 | |
; │┌ @ array.jl:758 within `getindex' | |
- %39 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %30, align 8 | |
- %40 = load i32, i32 addrspace(11)* %31, align 4 | |
- %41 = zext i32 %40 to i64 | |
- %42 = load i64, i64 addrspace(11)* %34, align 8 | |
- %43 = sub i64 %42, %41 | |
- %44 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %43 | |
- %45 = bitcast [1 x i64] addrspace(13)* %44 to i8 addrspace(13)* | |
- %46 = sext i32 %40 to i64 | |
- %47 = getelementptr inbounds i8, i8 addrspace(13)* %45, i64 %46 | |
- %48 = getelementptr inbounds i8, i8 addrspace(13)* %47, i64 %35 | |
- %49 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %39, i64 %35, i64 0 | |
- %50 = bitcast i64 addrspace(13)* %49 to double addrspace(13)* | |
+ %42 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %32, align 8 | |
+ %43 = load i32, i32 addrspace(11)* %33, align 4 | |
+ %44 = zext i32 %43 to i64 | |
+ %45 = load i64, i64 addrspace(11)* %36, align 8 | |
+ %46 = sub i64 %45, %44 | |
+ %47 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %46 | |
+ %48 = bitcast [1 x i64] addrspace(13)* %47 to i8 addrspace(13)* | |
+ %49 = sext i32 %43 to i64 | |
+ %50 = getelementptr inbounds i8, i8 addrspace(13)* %48, i64 %49 | |
+ %51 = getelementptr inbounds i8, i8 addrspace(13)* %50, i64 %38 | |
+ %52 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %42, i64 %38, i64 0 | |
; │└ | |
; │┌ @ int.jl:53 within `+' | |
- %51 = add i64 %value_phi9381, 1 | |
+ %53 = add i64 %value_phi9425, 1 | |
; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L32 | |
@@ -105,92 +110,162 @@ | |
; @ reduce.jl:54 within `_foldl_impl' | |
ret { %jl_value_t addrspace(10)*, i8 } %merge | |
-L95.L95.split_crit_edge: ; preds = %L32 | |
+L95: ; preds = %L73.thread, %L42 | |
+; @ reduce.jl:57 within `_foldl_impl' | |
+; ┌ @ generator.jl:45 within `iterate' | |
+ %54 = bitcast [1 x i64]* %2 to double* | |
+ %55 = addrspacecast double* %54 to double addrspace(11)* | |
+ %56 = load double, double addrspace(11)* %55, align 8 | |
+ %.sroa.0228.0..sroa_idx360364 = getelementptr inbounds [1 x i64], [1 x i64]* %3, i64 0, i64 0 | |
+; └ | |
; @ reduce.jl:53 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
-; │┌ @ array.jl:758 within `getindex' | |
- %52 = load double, double addrspace(13)* %.in, align 8 | |
- %53 = addrspacecast %jl_value_t addrspace(10)* %7 to %jl_value_t addrspace(11)* | |
- %54 = bitcast %jl_value_t addrspace(11)* %53 to %jl_array_t addrspace(11)* | |
- %55 = bitcast %jl_value_t addrspace(11)* %53 to [1 x i64] addrspace(13)* addrspace(11)* | |
- %56 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %55, align 8 | |
- %57 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %54, i64 0, i32 4 | |
- %58 = load i32, i32 addrspace(11)* %57, align 4 | |
- %59 = zext i32 %58 to i64 | |
- %60 = bitcast %jl_value_t addrspace(11)* %53 to %jl_value_t addrspace(10)* addrspace(11)* | |
- %61 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %60, i64 4 | |
- %62 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %61 to i64 addrspace(11)* | |
- %63 = load i64, i64 addrspace(11)* %62, align 8 | |
- %64 = sub i64 %63, %59 | |
- %65 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %64 | |
- %66 = bitcast [1 x i64] addrspace(13)* %65 to i8 addrspace(13)* | |
- %67 = sext i32 %58 to i64 | |
- %68 = getelementptr inbounds i8, i8 addrspace(13)* %66, i64 %67 | |
-; └└ | |
-; @ reduce.jl:55 within `_foldl_impl' | |
- br label %L96 | |
+ br label %L96 | |
-L96: ; preds = %L207, %L95.L95.split_crit_edge | |
- %69 = phi double [ %52, %L95.L95.split_crit_edge ], [ %74, %L207 ] | |
- %value_phi25 = phi i64 [ %value_phi9381, %L95.L95.split_crit_edge ], [ %value_phi39373, %L207 ] | |
+L96: ; preds = %L207, %L95 | |
+ %57 = phi double [ %56, %L95 ], [ %105, %L207 ] | |
+ %.sroa.0228.0 = phi i64 [ undef, %L95 ], [ %.sroa.0228.0.copyload230, %L207 ] | |
+ %value_phi25 = phi i64 [ %value_phi9425, %L95 ], [ %value_phi39417, %L207 ] | |
+; └ | |
; @ reduce.jl:57 within `_foldl_impl' | |
; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
; │┌ @ int.jl:860 within `-' @ int.jl:52 | |
- %70 = add i64 %value_phi25, -1 | |
+ %58 = add i64 %value_phi25, -1 | |
; │└ | |
-; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
- %71 = icmp ult i64 %70, %11 | |
+; │┌ @ array.jl:214 within `length' | |
+ %59 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
; │└ | |
- br i1 %71, label %L128.lr.ph, label %union_move54 | |
+; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
+ %60 = icmp uge i64 %58, %13 | |
+; ││ @ int.jl:416 within `<' | |
+; ││┌ @ bool.jl:40 within `&' | |
+ %61 = icmp slt i64 %13, 0 | |
+; │└└ | |
+ %62 = or i1 %61, %60 | |
+ br i1 %62, label %union_move54, label %L128.lr.ph | |
L128.lr.ph: ; preds = %L96 | |
+; │┌ @ array.jl:214 within `length' | |
+ %63 = bitcast %jl_value_t addrspace(11)* %59 to %jl_array_t addrspace(11)* | |
+; │└ | |
+; │┌ @ array.jl:758 within `getindex' | |
+ %64 = bitcast %jl_value_t addrspace(11)* %59 to [1 x i64] addrspace(13)* addrspace(11)* | |
+ %65 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %64, align 8 | |
+ %66 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %63, i64 0, i32 4 | |
+ %67 = load i32, i32 addrspace(11)* %66, align 4 | |
+ %68 = zext i32 %67 to i64 | |
+ %69 = bitcast %jl_value_t addrspace(11)* %59 to %jl_value_t addrspace(10)* addrspace(11)* | |
+ %70 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %69, i64 4 | |
+ %71 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %70 to i64 addrspace(11)* | |
+ %72 = load i64, i64 addrspace(11)* %71, align 8 | |
+ %73 = sub i64 %72, %68 | |
+ %74 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %73 | |
+ %75 = bitcast [1 x i64] addrspace(13)* %74 to i8 addrspace(13)* | |
+ %76 = sext i32 %67 to i64 | |
+ %77 = getelementptr inbounds i8, i8 addrspace(13)* %75, i64 %76 | |
+ %78 = getelementptr inbounds i8, i8 addrspace(13)* %77, i64 %58 | |
+ %79 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %65, i64 %58, i64 0 | |
+ %80 = addrspacecast %jl_value_t addrspace(10)* %9 to %jl_value_t addrspace(11)* | |
+ %81 = bitcast %jl_value_t addrspace(11)* %80 to %jl_array_t addrspace(11)* | |
+ %82 = bitcast %jl_value_t addrspace(11)* %80 to [1 x i64] addrspace(13)* addrspace(11)* | |
+ %83 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %81, i64 0, i32 4 | |
+ %84 = bitcast %jl_value_t addrspace(11)* %80 to %jl_value_t addrspace(10)* addrspace(11)* | |
+ %85 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)* %84, i64 4 | |
+ %86 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %85 to i64 addrspace(11)* | |
+; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L128 | |
L128: ; preds = %L153, %L128.lr.ph | |
- %.pn = phi i64 [ %70, %L128.lr.ph ], [ %value_phi39373.in, %L153 ] | |
- %value_phi39373.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39373, %L153 ] | |
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
-; │┌ @ array.jl:758 within `getindex' | |
- %tindex_phi37372.in.in = getelementptr inbounds i8, i8 addrspace(13)* %68, i64 %.pn | |
- %tindex_phi37372.in = load i8, i8 addrspace(13)* %tindex_phi37372.in.in, align 1 | |
-; │└ | |
-; │┌ @ int.jl:53 within `+' | |
- %value_phi39373 = add i64 %value_phi39373.in, 1 | |
-; │└ | |
+ %.sroa.0228.0.copyload230.in = phi i64 addrspace(13)* [ %79, %L128.lr.ph ], [ %101, %L153 ] | |
+ %value_phi39417.in = phi i64 [ %value_phi25, %L128.lr.ph ], [ %value_phi39417, %L153 ] | |
+ %tindex_phi37416.in.in = phi i8 addrspace(13)* [ %78, %L128.lr.ph ], [ %100, %L153 ] | |
+; │ @ generator.jl:44 within `iterate' @ iterators.jl:0 | |
+ %tindex_phi37416.in = load i8, i8 addrspace(13)* %tindex_phi37416.in.in, align 1 | |
+ %value_phi39417 = add i64 %value_phi39417.in, 1 | |
+ %.sroa.0228.0.copyload230 = load i64, i64 addrspace(13)* %.sroa.0228.0.copyload230.in, align 8 | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:431 | |
- %trunc443 = icmp ne i8 %tindex_phi37372.in, 0 | |
- %switch458 = icmp ult i1 %trunc443, true | |
- br i1 %switch458, label %L139, label %L207 | |
+ %trunc478 = icmp ne i8 %tindex_phi37416.in, 0 | |
+ %switch497 = icmp ult i1 %trunc478, true | |
+ br i1 %switch497, label %L139, label %L138 | |
+ | |
+L138: ; preds = %L128 | |
+; └ | |
+; @ reduce.jl:53 within `_foldl_impl' | |
+; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
+ %87 = icmp eq i8 %tindex_phi37416.in, 1 | |
+ br i1 %87, label %L169.thread, label %L207 | |
L139: ; preds = %L128 | |
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
+; └ | |
+; @ reduce.jl:57 within `_foldl_impl' | |
+; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:434 @ array.jl:734 | |
; │┌ @ int.jl:416 within `<' @ int.jl:409 | |
- %72 = icmp ult i64 %value_phi39373.in, %11 | |
-; │└ | |
- br i1 %72, label %L153, label %union_move54 | |
+ %88 = icmp uge i64 %value_phi39417.in, %13 | |
+; ││ @ int.jl:416 within `<' | |
+; ││┌ @ bool.jl:40 within `&' | |
+ %89 = icmp slt i64 %13, 0 | |
+; │└└ | |
+ %90 = or i1 %89, %88 | |
+ br i1 %90, label %union_move54, label %L153 | |
L153: ; preds = %L139 | |
+; │┌ @ array.jl:758 within `getindex' | |
+ %91 = load [1 x i64] addrspace(13)*, [1 x i64] addrspace(13)* addrspace(11)* %82, align 8 | |
+ %92 = load i32, i32 addrspace(11)* %83, align 4 | |
+ %93 = zext i32 %92 to i64 | |
+ %94 = load i64, i64 addrspace(11)* %86, align 8 | |
+ %95 = sub i64 %94, %93 | |
+ %96 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %95 | |
+ %97 = bitcast [1 x i64] addrspace(13)* %96 to i8 addrspace(13)* | |
+ %98 = sext i32 %92 to i64 | |
+ %99 = getelementptr inbounds i8, i8 addrspace(13)* %97, i64 %98 | |
+ %100 = getelementptr inbounds i8, i8 addrspace(13)* %99, i64 %value_phi39417.in | |
+ %101 = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %91, i64 %value_phi39417.in, i64 0 | |
+; │└ | |
; │ @ generator.jl:44 within `iterate' @ iterators.jl:430 | |
br label %L128 | |
-L207: ; preds = %L128 | |
-; │ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 | |
-; │┌ @ array.jl:758 within `getindex' | |
- %.sroa.0223.0.copyload225.in = getelementptr inbounds [1 x i64], [1 x i64] addrspace(13)* %56, i64 %.pn, i64 0 | |
- %73 = bitcast i64 addrspace(13)* %.sroa.0223.0.copyload225.in to double addrspace(13)* | |
- %.sroa.0223.0.copyload225444 = load double, double addrspace(13)* %73, align 8 | |
-; └└ | |
+L207: ; preds = %L169.thread, %L138 | |
+; │ @ generator.jl:45 within `iterate' | |
+ %102 = bitcast [1 x i64]* %3 to double* | |
+ %103 = addrspacecast double* %102 to double addrspace(11)* | |
+ %104 = load double, double addrspace(11)* %103, align 8 | |
+; └ | |
; @ reduce.jl:59 within `_foldl_impl' | |
; ┌ @ reduce.jl:78 within `BottomRF' | |
; │┌ @ float.jl:401 within `+' | |
- %74 = fadd double %69, %.sroa.0223.0.copyload225444 | |
+ %105 = fadd double %57, %104 | |
; └└ | |
- br label %L96 | |
+; @ reduce.jl:53 within `_foldl_impl' | |
+; ┌ @ generator.jl:44 within `iterate' @ iterators.jl:429 @ array.jl:734 @ array.jl:734 | |
+ br label %L96 | |
union_move54: ; preds = %L96, %L139 | |
+; └ | |
+; @ reduce.jl:57 within `_foldl_impl' | |
+; ┌ @ generator.jl:44 within `iterate' | |
+ store i64 %.sroa.0228.0, i64* %.sroa.0228.0..sroa_idx360364, align 8 | |
+; └ | |
; @ reduce.jl:61 within `_foldl_impl' | |
- %75 = bitcast [8 x i8]* %0 to double* | |
- store double %69, double* %75, align 8 | |
+ %106 = bitcast [8 x i8]* %0 to double* | |
+ store double %57, double* %106, align 8 | |
br label %L85 | |
+ | |
+L73.thread: ; preds = %L42 | |
+; @ reduce.jl:53 within `_foldl_impl' | |
+; ┌ @ generator.jl:44 within `iterate' | |
+ %.sroa.0275.0..sroa_idx353355 = getelementptr inbounds [1 x i64], [1 x i64]* %2, i64 0, i64 0 | |
+ store i64 %.sroa.0275.0.copyload277, i64* %.sroa.0275.0..sroa_idx353355, align 8 | |
+; │ @ generator.jl:47 within `iterate' | |
+ br label %L95 | |
+ | |
+L169.thread: ; preds = %L138 | |
+; └ | |
+; @ reduce.jl:57 within `_foldl_impl' | |
+; ┌ @ generator.jl:44 within `iterate' | |
+ store i64 %.sroa.0228.0.copyload230, i64* %.sroa.0228.0..sroa_idx360364, align 8 | |
+; │ @ generator.jl:47 within `iterate' | |
+ br label %L207 | |
+; └ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment