Skip to content

Instantly share code, notes, and snippets.

@ChrisRackauckas
Created November 12, 2018 13:44
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 ChrisRackauckas/340094507c4370c0a4446edb6cb0691c to your computer and use it in GitHub Desktop.
Save ChrisRackauckas/340094507c4370c0a4446edb6cb0691c to your computer and use it in GitHub Desktop.
; Function muladd2!
; Location: C:\Users\Chris Rackauckas\OneDrive\Computer\Desktop\test.jl:21
; Function Attrs: uwtable
define nonnull %jl_value_t addrspace(10)* @"japi1_muladd2!_35788"(%jl_value_t addrspace(10)*, %jl_va
lue_t addrspace(10)**, i32) #0 {
top:
%gcframe = alloca %jl_value_t addrspace(10)*, i32 3 %3 = bitcast %jl_value_t addrspace(10)** %gcframe to i8*
call void @llvm.memset.p0i8.i32(i8* %3, i8 0, i32 24, i32 0, i1 false)
%4 = alloca %jl_value_t addrspace(10)**, align 8
store volatile %jl_value_t addrspace(10)** %1, %jl_value_t addrspace(10)*** %4, align 8
%5 = call %jl_value_t*** inttoptr (i64 1801310064 to %jl_value_t*** ()*)() #5
%6 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 0
%7 = bitcast %jl_value_t addrspace(10)** %6 to i64* store i64 2, i64* %7
%8 = getelementptr %jl_value_t**, %jl_value_t*** %5, i32 0
%9 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 1
%10 = bitcast %jl_value_t addrspace(10)** %9 to %jl_value_t***
%11 = load %jl_value_t**, %jl_value_t*** %8
store %jl_value_t** %11, %jl_value_t*** %10
%12 = bitcast %jl_value_t*** %8 to %jl_value_t addrspace(10)***
store %jl_value_t addrspace(10)** %gcframe, %jl_value_t addrspace(10)*** %12
%13 = load %jl_value_t addrspace(10)*, %jl_value_taddrspace(10)** %1, align 8
%14 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i64 3
%15 = load %jl_value_t addrspace(10)*, %jl_value_taddrspace(10)** %14, align 8
; Location: C:\Users\Chris Rackauckas\OneDrive\Computer\Desktop\test.jl:22
; Function eachindex; {
; Location: abstractarray.jl:165
; Function axes1; {
; Location: abstractarray.jl:93
; Function axes; {
; Location: abstractarray.jl:75
; Function size; {
; Location: array.jl:155
%16 = addrspacecast %jl_value_t addrspace(10)* %13to %jl_value_t addrspace(11)*
%17 = bitcast %jl_value_t addrspace(11)* %16 to %jl_value_t addrspace(10)* addrspace(11)*
%18 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)*
%17, i64 3
%19 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %18 to i64 addrspace(11)*
%20 = load i64, i64 addrspace(11)* %19, align 8
;}
; Function map; {
; Location: tuple.jl:162
; Function Type; {
; Location: range.jl:298
; Function Type; {
; Location: range.jl:289
; Function max; {
; Location: promotion.jl:436
%21 = icmp sgt i64 %20, 0
%22 = select i1 %21, i64 %20, i64 0
;}}}}}}}
br i1 %21, label %L9.L14_crit_edge, label %L52
L9.L14_crit_edge: ; preds = %top
%23 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i64 1
%24 = load %jl_value_t addrspace(10)*, %jl_value_taddrspace(10)** %23, align 8
; Location: C:\Users\Chris Rackauckas\OneDrive\Computer\Desktop\test.jl:21
; Function getproperty; {
; Location: sysimg.jl:18
%25 = addrspacecast %jl_value_t addrspace(10)* %24to %jl_value_t addrspace(11)*
%26 = bitcast %jl_value_t addrspace(11)* %25 to %jl_value_t addrspace(10)* addrspace(11)*
%27 = load %jl_value_t addrspace(10)*, %jl_value_taddrspace(10)* addrspace(11)* %26, align 8
;}
; Location: C:\Users\Chris Rackauckas\OneDrive\Computer\Desktop\test.jl:23
; Function getindex; {
; Location: array.jl:731
%28 = addrspacecast %jl_value_t addrspace(10)* %27to %jl_value_t addrspace(11)*
%29 = bitcast %jl_value_t addrspace(11)* %28 to %jl_array_t addrspace(11)*
%30 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %29, i64 0, i32 1
%31 = load i64, i64 addrspace(11)* %30, align 8
%32 = icmp eq i64 %31, 0
br i1 %32, label %oob, label %idxend.lr.ph
idxend.lr.ph: ; preds = %L9.L14_crit_edge
%33 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %1, i64 2
%34 = load %jl_value_t addrspace(10)*, %jl_value_taddrspace(10)** %33, align 8
%35 = addrspacecast %jl_value_t addrspace(10)* %34to %jl_value_t addrspace(11)*
%36 = bitcast %jl_value_t addrspace(11)* %35 to %jl_array_t addrspace(11)*
%37 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %36, i64 0, i32 1
%38 = load i64, i64 addrspace(11)* %37, align 8
%39 = bitcast %jl_value_t addrspace(11)* %16 to %jl_array_t addrspace(11)*
%40 = getelementptr inbounds %jl_array_t, %jl_array_t addrspace(11)* %39, i64 0, i32 1
%41 = load i64, i64 addrspace(11)* %40, align 8
%42 = bitcast %jl_value_t addrspace(11)* %28 to double addrspace(13)* addrspace(11)*
%43 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %42, align 8
%44 = bitcast %jl_value_t addrspace(11)* %35 to double addrspace(13)* addrspace(11)*
%45 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %44, align 8
%46 = bitcast %jl_value_t addrspace(11)* %16 to double addrspace(13)* addrspace(11)*
%47 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %46, align 8
br label %idxend
L30: ; preds = %idxend8
;}
; Function iterate; {
; Location: range.jl:576
; Function +; {
; Location: int.jl:53
%48 = add nuw i64 %value_phi344, 1
;}}
; Function getindex; {
; Location: array.jl:731
%49 = icmp ult i64 %value_phi344, %31
br i1 %49, label %idxend, label %oob
L52: ; preds = %idxend8, %top
;}
; Location: C:\Users\Chris Rackauckas\OneDrive\Computer\Desktop\test.jl:25
; Function materialize!; {
; Location: broadcast.jl:727
; Function instantiate; {
; Location: broadcast.jl:269
; Function check_broadcast_axes; {
; Location: broadcast.jl:459
; Function check_broadcast_axes; {
; Location: broadcast.jl:455
; Function broadcast_axes; {
; Location: broadcast.jl:206
; Function axes; {
; Location: abstractarray.jl:75
; Function size; {
; Location: array.jl:155
%50 = addrspacecast %jl_value_t addrspace(10)* %15to %jl_value_t addrspace(11)*
%51 = bitcast %jl_value_t addrspace(11)* %50 to %jl_value_t addrspace(10)* addrspace(11)*
%52 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(11)*
%51, i64 3
%53 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %52 to i64 addrspace(11)*
%54 = load i64, i64 addrspace(11)* %53, align 8
;}
; Function map; {
; Location: tuple.jl:162
; Function Type; {
; Location: range.jl:298
; Function Type; {
; Location: range.jl:289
; Function max; {
; Location: promotion.jl:436
%55 = icmp sgt i64 %54, 0
%56 = select i1 %55, i64 %54, i64 0
;}}}}}}
; Function check_broadcast_shape; {
; Location: broadcast.jl:452
; Function _bcsm; {
; Location: broadcast.jl:441
; Function ==; {
; Location: range.jl:698
; Function ==; {
; Location: promotion.jl:425
%57 = icmp eq i64 %22, %56
;}}
; Function ==; {
; Location: promotion.jl:425
%58 = icmp eq i64 %56, 1
;}
%value_phi13.v = or i1 %57, %58
;}
br i1 %value_phi13.v, label %L98, label %L64
L64: ; preds = %L52
; Function Type; {
; Location: array.jl:12
%59 = bitcast %jl_value_t*** %5 to i8*
%60 = call noalias nonnull %jl_value_t addrspace(10)* @jl_gc_pool_alloc(i8* %59, i32 1488, i32 16)
#3
%61 = bitcast %jl_value_t addrspace(10)* %60 to %jl_value_t addrspace(10)* addrspace(10)*
%62 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)* addrspace(10)* %61, i64
-1
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 97671184 to %jl_value_t
*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)* addrspace(10)* %62
%63 = bitcast %jl_value_t addrspace(10)* %60 to %jl_value_t addrspace(10)* addrspace(10)*
store %jl_value_t addrspace(10)* addrspacecast (%jl_value_t* inttoptr (i64 105104928 to %jl_value_
t*) to %jl_value_t addrspace(10)*), %jl_value_t addrspace(10)* addrspace(10)* %63, align 8
;}
%64 = addrspacecast %jl_value_t addrspace(10)* %60to %jl_value_t addrspace(12)*
%65 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 2
store %jl_value_t addrspace(10)* %60, %jl_value_t addrspace(10)** %65
call void @jl_throw(%jl_value_t addrspace(12)* %64) unreachable
L98: ; preds = %L52
;}}}}
; Function copyto!; {
; Location: broadcast.jl:768
; Function copyto!; {
; Location: broadcast.jl:812
; Function preprocess; {
; Location: broadcast.jl:795
; Function preprocess_args; {
; Location: broadcast.jl:798
; Function preprocess_args; {
; Location: broadcast.jl:799
; Function preprocess; {
; Location: broadcast.jl:796
; Function broadcast_unalias; {
; Location: broadcast.jl:789
%66 = icmp eq %jl_value_t addrspace(11)* %16, %50
br i1 %66, label %L124, label %L111
L111: ; preds = %L98
%67 = addrspacecast %jl_value_t addrspace(11)* %16to %jl_value_t*
; Function unalias; {
; Location: abstractarray.jl:1079
; Function mightalias; {
; Location: abstractarray.jl:1113
; Function dataids; {
; Location: abstractarray.jl:1137
; Function pointer; {
; Location: abstractarray.jl:858
; Function unsafe_convert; {
; Location: pointer.jl:65
%68 = bitcast %jl_value_t* %67 to i64*
%69 = load i64, i64* %68, align 8
%70 = addrspacecast %jl_value_t addrspace(11)* %50to %jl_value_t*
%71 = bitcast %jl_value_t* %70 to i64*
%72 = load i64, i64* %71, align 8
;}}}
; Function _isdisjoint; {
; Location: abstractarray.jl:1120
; Function !=; {
; Location: operators.jl:185
; Function ==; {
; Location: promotion.jl:425
%73 = icmp eq i64 %69, %72
;}}}}
br i1 %73, label %L119, label %L124
L119: ; preds = %L111
; Function unaliascopy; {
; Location: abstractarray.jl:1095
; Function copy; {
; Location: array.jl:299
%74 = call %jl_value_t addrspace(10)* inttoptr (i64 1801141856 to %jl_value_t addrspace(10)* (%jl_
value_t addrspace(10)*)*)(%jl_value_t addrspace(10)*nonnull %15)
%.phi.trans.insert = addrspacecast %jl_value_t addrspace(10)* %74 to %jl_value_t addrspace(11)*
%.phi.trans.insert60 = bitcast %jl_value_t addrspace(11)* %.phi.trans.insert to %jl_value_t addrsp
ace(10)* addrspace(11)*
%.phi.trans.insert61 = getelementptr inbounds %jl_value_t addrspace(10)*, %jl_value_t addrspace(10
)* addrspace(11)* %.phi.trans.insert60, i64 3
%.phi.trans.insert62 = bitcast %jl_value_t addrspace(10)* addrspace(11)* %.phi.trans.insert61 to i
64 addrspace(11)*
;}}}}
; Function extrude; {
; Location: broadcast.jl:541
; Function newindexer; {
; Location: broadcast.jl:496
; Function broadcast_axes; {
; Location: broadcast.jl:206
; Function axes; {
; Location: abstractarray.jl:75
; Function size; {
; Location: array.jl:155
%.pre = load i64, i64 addrspace(11)* %.phi.trans.insert62, align 8
;}}}}}
; Function broadcast_unalias; {
; Location: broadcast.jl:789
; Function unalias; {
; Location: abstractarray.jl:1079
br label %L124
L124: ; preds = %L111, %L98, %L119
;}}
; Function extrude; {
; Location: broadcast.jl:541
; Function newindexer; {
; Location: broadcast.jl:496
; Function broadcast_axes; {
; Location: broadcast.jl:206
; Function axes; {
; Location: abstractarray.jl:75
; Function size; {
; Location: array.jl:155
%75 = phi i64 [ %54, %L98 ], [ %.pre, %L119 ], [ %54, %L111 ]
%value_phi16 = phi %jl_value_t addrspace(10)* [ %15, %L98 ], [ %74, %L119 ], [ %15, %L111 ]
;}}}}}}}}}
; Location: broadcast.jl:813
; Function macro expansion; {
; Location: simdloop.jl:66
br i1 %21, label %L155.lr.ph.us, label %L211
L155.lr.ph.us: ; preds = %L124
;}
; Location: broadcast.jl:812
; Function preprocess; {
; Location: broadcast.jl:795
; Function preprocess_args; {
; Location: broadcast.jl:798
; Function preprocess; {
; Location: broadcast.jl:796
; Function extrude; {
; Location: broadcast.jl:541
; Function newindexer; {
; Location: broadcast.jl:496
; Function shapeindexer; {
; Location: broadcast.jl:497
; Function _newindexer; {
; Location: broadcast.jl:502
; Function !=; {
; Location: operators.jl:185
; Function ==; {
; Location: promotion.jl:425
%76 = icmp eq i64 %20, 1
;}}}}}}}
; Function preprocess_args; {
; Location: broadcast.jl:799
; Function preprocess; {
; Location: broadcast.jl:796
; Function extrude; {
; Location: broadcast.jl:541
; Function newindexer; {
; Location: broadcast.jl:496
; Function broadcast_axes; {
; Location: broadcast.jl:206
; Function axes; {
; Location: abstractarray.jl:75
; Function size; {
; Location: array.jl:155
%77 = addrspacecast %jl_value_t addrspace(10)* %value_phi16 to %jl_value_t addrspace(11)*
;}}}
; Function shapeindexer; {
; Location: broadcast.jl:497
; Function _newindexer; {
; Location: broadcast.jl:502
; Function !=; {
; Location: operators.jl:185
; Function ==; {
; Location: promotion.jl:425
%78 = icmp eq i64 %75, 1
%79 = bitcast %jl_value_t addrspace(11)* %16 to double addrspace(13)* addrspace(11)*
%80 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %79, align 8
%81 = bitcast double addrspace(13)* %80 to i8 addrspace(13)*
%82 = bitcast %jl_value_t addrspace(11)* %77 to double addrspace(13)* addrspace(11)*
%83 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %82, align 8
%84 = bitcast double addrspace(13)* %83 to i8 addrspace(13)*
;}}}}}}}}}}
; Location: broadcast.jl:813
; Function macro expansion; {
; Location: simdloop.jl:71
br i1 %76, label %L155.lr.ph.split.us.us, label %L155.lr.ph.L155.lr.ph.split_crit_edge.us
L155.us47: ; preds = %scalar.ph, %L155.us47
%value_phi2043.us48 = phi i64 [ %bc.resume.val, %scalar.ph ], [ %90, %L155.us47 ]
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: broadcast.jl:814
; Function getindex; {
; Location: broadcast.jl:507
; Function _broadcast_getindex; {
; Location: broadcast.jl:546
; Function _getindex; {
; Location: broadcast.jl:570
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%85 = getelementptr inbounds double, double addrspace(13)* %80, i64 %value_phi2043.us48
%86 = load double, double addrspace(13)* %85, align 8
;}}
; Function _getindex; {
; Location: broadcast.jl:571
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%87 = getelementptr inbounds double, double addrspace(13)* %83, i64 %value_phi2043.us48
%88 = load double, double addrspace(13)* %87, align 8
;}}}}
; Location: broadcast.jl:547
; Function _broadcast_getindex_evalf; {
; Location: broadcast.jl:574
; Function +; {
; Location: float.jl:395
%89 = fadd double %86, %88
;}}}}
; Function setindex!; {
; Location: array.jl:769
store double %89, double addrspace(13)* %85, align8
;}
; Function +; {
; Location: int.jl:53
%90 = add nuw nsw i64 %value_phi2043.us48, 1
;}}
; Location: simdloop.jl:71
; Function <; {
; Location: int.jl:49
%91 = icmp ult i64 %90, %22
;}
br i1 %91, label %L155.us47, label %L211
L155.us.us51: ; preds = %L155.lr.ph.split.us.L155.lr.ph.split.us
.split_crit_edge.us, %L155.us.us51
%value_phi2043.us.us52 = phi i64 [ 0, %L155.lr.ph.split.us.L155.lr.ph.split.us.split_crit_edge.us
], [ %97, %L155.us.us51 ]
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: broadcast.jl:814
; Function getindex; {
; Location: broadcast.jl:507
; Function _broadcast_getindex; {
; Location: broadcast.jl:546
; Function _getindex; {
; Location: broadcast.jl:570
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%92 = load double, double addrspace(13)* %80, align 8
;}}
; Function _getindex; {
; Location: broadcast.jl:571
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%93 = getelementptr inbounds double, double addrspace(13)* %83, i64 %value_phi2043.us.us52
%94 = load double, double addrspace(13)* %93, align 8
;}}}}
; Location: broadcast.jl:547
; Function _broadcast_getindex_evalf; {
; Location: broadcast.jl:574
; Function +; {
; Location: float.jl:395
%95 = fadd double %92, %94
;}}}}
; Function setindex!; {
; Location: array.jl:769
%96 = getelementptr inbounds double, double addrspace(13)* %80, i64 %value_phi2043.us.us52
store double %95, double addrspace(13)* %96, align8
;}
; Function +; {
; Location: int.jl:53
%97 = add nuw nsw i64 %value_phi2043.us.us52, 1
;}}
; Location: simdloop.jl:71
; Function <; {
; Location: int.jl:49
%98 = icmp ult i64 %97, %22
;}
br i1 %98, label %L155.us.us51, label %L211
L155.lr.ph.split.us.us: ; preds = %L155.lr.ph.us
br i1 %78, label %L155.lr.ph.split.us.split.us.us,label %L155.lr.ph.split.us.L155.lr.ph.split.us.
split_crit_edge.us
L155.lr.ph.L155.lr.ph.split_crit_edge.us: ; preds = %L155.lr.ph.us
%min.iters.check91 = icmp ult i64 %22, 16
br i1 %78, label %L155.lr.ph.split.split.us.us, label %L155.lr.ph.split.L155.lr.ph.split.split_cri
t_edge.us
L155.us45.us: ; preds = %scalar.ph90, %L155.us45.us
%value_phi2043.us46.us = phi i64 [ %bc.resume.val105, %scalar.ph90 ], [ %103, %L155.us45.us ]
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: broadcast.jl:814
; Function getindex; {
; Location: broadcast.jl:507
; Function _broadcast_getindex; {
; Location: broadcast.jl:546
; Function _getindex; {
; Location: broadcast.jl:570
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%99 = getelementptr inbounds double, double addrspace(13)* %80, i64 %value_phi2043.us46.us
%100 = load double, double addrspace(13)* %99, align 8
;}}
; Function _getindex; {
; Location: broadcast.jl:571
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%101 = load double, double addrspace(13)* %83, align 8
;}}}}
; Location: broadcast.jl:547
; Function _broadcast_getindex_evalf; {
; Location: broadcast.jl:574
; Function +; {
; Location: float.jl:395
%102 = fadd double %100, %101
;}}}}
; Function setindex!; {
; Location: array.jl:769
store double %102, double addrspace(13)* %99, align 8
;}
; Function +; {
; Location: int.jl:53
%103 = add nuw nsw i64 %value_phi2043.us46.us, 1
;}}
; Location: simdloop.jl:71
; Function <; {
; Location: int.jl:49
%104 = icmp ult i64 %103, %22
;}
br i1 %104, label %L155.us45.us, label %L211
L155.lr.ph.split.split.us.us: ; preds = %L155.lr.ph.L155.lr.ph.split_crit_edge.u
s
br i1 %min.iters.check91, label %scalar.ph90, label %vector.memcheck99
vector.memcheck99: ; preds = %L155.lr.ph.split.split.us.us
%scevgep93 = getelementptr double, double addrspace(13)* %80, i64 %22
%uglygep = getelementptr i8, i8 addrspace(13)* %84, i64 1
%bound095 = icmp ugt i8 addrspace(13)* %uglygep, %81
%bound196 = icmp ult double addrspace(13)* %83, %scevgep93
%memcheck.conflict98 = and i1 %bound095, %bound196
br i1 %memcheck.conflict98, label %scalar.ph90, label %vector.ph100
vector.ph100: ; preds = %vector.memcheck99
%n.vec102 = and i64 %22, 9223372036854775792
br label %vector.body88
vector.body88: ; preds = %vector.body88, %vector.ph100
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: broadcast.jl:814
; Function +; {
; Location: int.jl:53
%index103 = phi i64 [ 0, %vector.ph100 ], [ %index.next104, %vector.body88 ]
;}
; Function getindex; {
; Location: broadcast.jl:507
; Function _broadcast_getindex; {
; Location: broadcast.jl:546
; Function _getindex; {
; Location: broadcast.jl:570
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%105 = getelementptr inbounds double, double addrspace(13)* %80, i64 %index103
%106 = bitcast double addrspace(13)* %105 to <4 x double> addrspace(13)*
%wide.load113 = load <4 x double>, <4 x double> addrspace(13)* %106, align 8
%107 = getelementptr double, double addrspace(13)*%105, i64 4
%108 = bitcast double addrspace(13)* %107 to <4 x double> addrspace(13)*
%wide.load114 = load <4 x double>, <4 x double> addrspace(13)* %108, align 8
%109 = getelementptr double, double addrspace(13)*%105, i64 8
%110 = bitcast double addrspace(13)* %109 to <4 x double> addrspace(13)*
%wide.load115 = load <4 x double>, <4 x double> addrspace(13)* %110, align 8
%111 = getelementptr double, double addrspace(13)*%105, i64 12
%112 = bitcast double addrspace(13)* %111 to <4 x double> addrspace(13)*
%wide.load116 = load <4 x double>, <4 x double> addrspace(13)* %112, align 8
;}}
; Function _getindex; {
; Location: broadcast.jl:571
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%113 = load double, double addrspace(13)* %83, align 8
%114 = insertelement <4 x double> undef, double %113, i32 0
%115 = shufflevector <4 x double> %114, <4 x double> undef, <4 x i32> zeroinitializer
%116 = insertelement <4 x double> undef, double %113, i32 0
%117 = shufflevector <4 x double> %116, <4 x double> undef, <4 x i32> zeroinitializer
%118 = insertelement <4 x double> undef, double %113, i32 0
%119 = shufflevector <4 x double> %118, <4 x double> undef, <4 x i32> zeroinitializer
%120 = load double, double addrspace(13)* %83, align 8
;}}}}}}
; Function +; {
; Location: int.jl:53
%121 = insertelement <4 x double> undef, double %120, i32 0
%122 = shufflevector <4 x double> %121, <4 x double> undef, <4 x i32> zeroinitializer
%123 = fadd <4 x double> %wide.load113, %115
%124 = fadd <4 x double> %wide.load114, %117
%125 = fadd <4 x double> %wide.load115, %119
%126 = fadd <4 x double> %wide.load116, %122
;}
; Function setindex!; {
; Location: array.jl:769
%127 = bitcast double addrspace(13)* %105 to <4 x double> addrspace(13)*
store <4 x double> %123, <4 x double> addrspace(13)* %127, align 8
%128 = bitcast double addrspace(13)* %107 to <4 x double> addrspace(13)*
store <4 x double> %124, <4 x double> addrspace(13)* %128, align 8
%129 = bitcast double addrspace(13)* %109 to <4 x double> addrspace(13)*
store <4 x double> %125, <4 x double> addrspace(13)* %129, align 8
%130 = bitcast double addrspace(13)* %111 to <4 x double> addrspace(13)*
store <4 x double> %126, <4 x double> addrspace(13)* %130, align 8
;}
; Function +; {
; Location: int.jl:53
%index.next104 = add i64 %index103, 16
%131 = icmp eq i64 %index.next104, %n.vec102
br i1 %131, label %middle.block89, label %vector.body88
middle.block89: ; preds = %vector.body88
%cmp.n106 = icmp eq i64 %22, %n.vec102
;}}
; Location: simdloop.jl:71
br i1 %cmp.n106, label %L211, label %scalar.ph90
scalar.ph90: ; preds = %middle.block89, %vector.memcheck99, %L1
55.lr.ph.split.split.us.us
%bc.resume.val105 = phi i64 [ %n.vec102, %middle.block89 ], [ 0, %L155.lr.ph.split.split.us.us ],
[ 0, %vector.memcheck99 ]
br label %L155.us45.us
L155.lr.ph.split.L155.lr.ph.split.split_crit_edge.us: ; preds = %L155.lr.ph.L155.lr.ph.split_crit_ed
ge.us
br i1 %min.iters.check91, label %scalar.ph, label %vector.memcheck
vector.memcheck: ; preds = %L155.lr.ph.split.L155.lr.ph.split.split
_crit_edge.us
%scevgep = getelementptr double, double addrspace(13)* %80, i64 %22
%scevgep76 = getelementptr double, double addrspace(13)* %83, i64 %22
%bound0 = icmp ult double addrspace(13)* %80, %scevgep76
%bound1 = icmp ult double addrspace(13)* %83, %scevgep
%memcheck.conflict = and i1 %bound0, %bound1
br i1 %memcheck.conflict, label %scalar.ph, label %vector.ph
vector.ph: ; preds = %vector.memcheck
%n.vec = and i64 %22, 9223372036854775792
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: broadcast.jl:814
; Function +; {
; Location: int.jl:53
%index = phi i64 [ 0, %vector.ph ], [ %index.next,%vector.body ]
;}
; Function getindex; {
; Location: broadcast.jl:507
; Function _broadcast_getindex; {
; Location: broadcast.jl:546
; Function _getindex; {
; Location: broadcast.jl:570
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%132 = getelementptr inbounds double, double addrspace(13)* %80, i64 %index
%133 = bitcast double addrspace(13)* %132 to <4 x double> addrspace(13)*
%wide.load = load <4 x double>, <4 x double> addrspace(13)* %133, align 8
%134 = getelementptr double, double addrspace(13)*%132, i64 4
%135 = bitcast double addrspace(13)* %134 to <4 x double> addrspace(13)*
%wide.load81 = load <4 x double>, <4 x double> addrspace(13)* %135, align 8
%136 = getelementptr double, double addrspace(13)*%132, i64 8
%137 = bitcast double addrspace(13)* %136 to <4 x double> addrspace(13)*
%wide.load82 = load <4 x double>, <4 x double> addrspace(13)* %137, align 8
%138 = getelementptr double, double addrspace(13)*%132, i64 12
%139 = bitcast double addrspace(13)* %138 to <4 x double> addrspace(13)*
%wide.load83 = load <4 x double>, <4 x double> addrspace(13)* %139, align 8
;}}
; Function _getindex; {
; Location: broadcast.jl:571
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%140 = getelementptr inbounds double, double addrspace(13)* %83, i64 %index
%141 = bitcast double addrspace(13)* %140 to <4 x double> addrspace(13)*
%wide.load84 = load <4 x double>, <4 x double> addrspace(13)* %141, align 8
%142 = getelementptr double, double addrspace(13)*%140, i64 4
%143 = bitcast double addrspace(13)* %142 to <4 x double> addrspace(13)*
%wide.load85 = load <4 x double>, <4 x double> addrspace(13)* %143, align 8
%144 = getelementptr double, double addrspace(13)*%140, i64 8
%145 = bitcast double addrspace(13)* %144 to <4 x double> addrspace(13)*
%wide.load86 = load <4 x double>, <4 x double> addrspace(13)* %145, align 8
%146 = getelementptr double, double addrspace(13)*%140, i64 12
%147 = bitcast double addrspace(13)* %146 to <4 x double> addrspace(13)*
%wide.load87 = load <4 x double>, <4 x double> addrspace(13)* %147, align 8
;}}}}
; Location: broadcast.jl:547
; Function _broadcast_getindex_evalf; {
; Location: broadcast.jl:574
; Function +; {
; Location: float.jl:395
%148 = fadd <4 x double> %wide.load, %wide.load84
%149 = fadd <4 x double> %wide.load81, %wide.load85 %150 = fadd <4 x double> %wide.load82, %wide.load86 %151 = fadd <4 x double> %wide.load83, %wide.load87;}}}}
; Function setindex!; {
; Location: array.jl:769
%152 = bitcast double addrspace(13)* %132 to <4 x double> addrspace(13)*
store <4 x double> %148, <4 x double> addrspace(13)* %152, align 8
%153 = bitcast double addrspace(13)* %134 to <4 x double> addrspace(13)*
store <4 x double> %149, <4 x double> addrspace(13)* %153, align 8
%154 = bitcast double addrspace(13)* %136 to <4 x double> addrspace(13)*
store <4 x double> %150, <4 x double> addrspace(13)* %154, align 8
%155 = bitcast double addrspace(13)* %138 to <4 x double> addrspace(13)*
store <4 x double> %151, <4 x double> addrspace(13)* %155, align 8
;}
; Function +; {
; Location: int.jl:53
%index.next = add i64 %index, 16
%156 = icmp eq i64 %index.next, %n.vec
br i1 %156, label %middle.block, label %vector.body
middle.block: ; preds = %vector.body
%cmp.n = icmp eq i64 %22, %n.vec
;}}
; Location: simdloop.jl:71
br i1 %cmp.n, label %L211, label %scalar.ph
scalar.ph: ; preds = %middle.block, %vector.memcheck, %L155.l
r.ph.split.L155.lr.ph.split.split_crit_edge.us
%bc.resume.val = phi i64 [ %n.vec, %middle.block ], [ 0, %L155.lr.ph.split.L155.lr.ph.split.split_
crit_edge.us ], [ 0, %vector.memcheck ]
br label %L155.us47
L155.us.us.us: ; preds = %L155.lr.ph.split.us.split.us.us, %L155.
us.us.us
%value_phi2043.us.us.us = phi i64 [ 0, %L155.lr.ph.split.us.split.us.us ], [ %161, %L155.us.us.us
]
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: broadcast.jl:814
; Function getindex; {
; Location: broadcast.jl:507
; Function _broadcast_getindex; {
; Location: broadcast.jl:546
; Function _getindex; {
; Location: broadcast.jl:570
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%157 = load double, double addrspace(13)* %80, align 8
;}}
; Function _getindex; {
; Location: broadcast.jl:571
; Function _broadcast_getindex; {
; Location: broadcast.jl:540
; Function getindex; {
; Location: array.jl:731
%158 = load double, double addrspace(13)* %83, align 8
;}}}}
; Location: broadcast.jl:547
; Function _broadcast_getindex_evalf; {
; Location: broadcast.jl:574
; Function +; {
; Location: float.jl:395
%159 = fadd double %157, %158
;}}}}
; Function setindex!; {
; Location: array.jl:769
%160 = getelementptr inbounds double, double addrspace(13)* %80, i64 %value_phi2043.us.us.us
store double %159, double addrspace(13)* %160, align 8
;}
; Function +; {
; Location: int.jl:53
%161 = add nuw nsw i64 %value_phi2043.us.us.us, 1
;}}
; Location: simdloop.jl:71
; Function <; {
; Location: int.jl:49
%162 = icmp ult i64 %161, %22
;}
br i1 %162, label %L155.us.us.us, label %L211
L155.lr.ph.split.us.split.us.us: ; preds = %L155.lr.ph.split.us.us
br label %L155.us.us.us
L155.lr.ph.split.us.L155.lr.ph.split.us.split_crit_edge.us: ; preds = %L155.lr.ph.split.us.us
br label %L155.us.us51
L211: ; preds = %L155.us47, %middle.block, %L155.us45.us
, %middle.block89, %L155.us.us51, %L155.us.us.us, %L124
;}}}}
%163 = getelementptr %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %gcframe, i32 1
%164 = load %jl_value_t addrspace(10)*, %jl_value_t addrspace(10)** %163
%165 = getelementptr %jl_value_t**, %jl_value_t***%5, i32 0
%166 = bitcast %jl_value_t*** %165 to %jl_value_t addrspace(10)**
store %jl_value_t addrspace(10)* %164, %jl_value_taddrspace(10)** %166
ret %jl_value_t addrspace(10)* %13
oob: ; preds = %L30, %L9.L14_crit_edge
%value_phi3.lcssa = phi i64 [ 1, %L9.L14_crit_edge], [ %48, %L30 ]
; Location: C:\Users\Chris Rackauckas\OneDrive\Computer\Desktop\test.jl:23
; Function getindex; {
; Location: array.jl:731
%167 = alloca i64, align 8
store i64 %value_phi3.lcssa, i64* %167, align 8
%168 = addrspacecast %jl_value_t addrspace(10)* %27 to %jl_value_t addrspace(12)*
call void @jl_bounds_error_ints(%jl_value_t addrspace(12)* %168, i64* nonnull %167, i64 1)
unreachable
idxend: ; preds = %idxend.lr.ph, %L30
%169 = phi i64 [ 0, %idxend.lr.ph ], [ %value_phi344, %L30 ]
%value_phi344 = phi i64 [ 1, %idxend.lr.ph ], [ %48, %L30 ]
%170 = icmp ult i64 %169, %38
br i1 %170, label %idxend6, label %oob5
oob5: ; preds = %idxend
%171 = alloca i64, align 8
store i64 %value_phi344, i64* %171, align 8
%172 = addrspacecast %jl_value_t addrspace(10)* %34 to %jl_value_t addrspace(12)*
call void @jl_bounds_error_ints(%jl_value_t addrspace(12)* %172, i64* nonnull %171, i64 1)
unreachable
idxend6: ; preds = %idxend
;}
; Function setindex!; {
; Location: array.jl:769
%173 = icmp ult i64 %169, %41
br i1 %173, label %idxend8, label %oob7
oob7: ; preds = %idxend6
%174 = alloca i64, align 8
store i64 %value_phi344, i64* %174, align 8
%175 = addrspacecast %jl_value_t addrspace(10)* %13 to %jl_value_t addrspace(12)*
call void @jl_bounds_error_ints(%jl_value_t addrspace(12)* %175, i64* nonnull %174, i64 1)
unreachable
idxend8: ; preds = %idxend6
;}
; Function getindex; {
; Location: array.jl:731
%176 = getelementptr inbounds double, double addrspace(13)* %43, i64 %169
%177 = load double, double addrspace(13)* %176, align 8
%178 = getelementptr inbounds double, double addrspace(13)* %45, i64 %169
%179 = load double, double addrspace(13)* %178, align 8
;}
; Function *; {
; Location: float.jl:399
%180 = fmul double %177, %179
;}
; Function setindex!; {
; Location: array.jl:769
%181 = getelementptr inbounds double, double addrspace(13)* %47, i64 %169
store double %180, double addrspace(13)* %181, align 8
;}
; Function iterate; {
; Location: range.jl:575
; Function ==; {
; Location: promotion.jl:425
%182 = icmp eq i64 %value_phi344, %22
;}}
br i1 %182, label %L52, label %L30
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment