Skip to content

Instantly share code, notes, and snippets.

@ArchRobison
Created April 2, 2014 22:13
Show Gist options
  • Save ArchRobison/9944313 to your computer and use it in GitHub Desktop.
Save ArchRobison/9944313 to your computer and use it in GitHub Desktop.
Excerpt of Julia LLVM code from LLVM trunk (pre-3.5 LLVM)
L.preheader: ; preds = %top
%.op = add i64 %0, 1, !dbg !9
%8 = select i1 %2, i64 %.op, i64 1, !dbg !9
%9 = sub i64 %8, %5, !dbg !9
%xtraiter = and i64 %9, 7
switch i64 %xtraiter, label %L.unr [
i64 0, label %L.preheader.split
i64 1, label %L.unr22
i64 2, label %L.unr18
i64 3, label %L.unr14
i64 4, label %L.unr10
i64 5, label %L.unr6
i64 6, label %L.unr5
]
L.unr: ; preds = %L.preheader
%10 = add i64 %5, 1, !dbg !9
br label %L.unr5
L.unr5: ; preds = %L.preheader, %L.unr
%"#s2.0.unr" = phi i64 [ %10, %L.unr ], [ %5, %L.preheader ]
%11 = add i64 %"#s2.0.unr", 1, !dbg !9
br label %L.unr6
L.unr6: ; preds = %L.preheader, %L.unr5
%"#s2.0.unr7" = phi i64 [ %11, %L.unr5 ], [ %5, %L.preheader ]
%12 = add i64 %"#s2.0.unr7", 1, !dbg !9
br label %L.unr10
L.unr10: ; preds = %L.preheader, %L.unr6
%"#s2.0.unr11" = phi i64 [ %12, %L.unr6 ], [ %5, %L.preheader ]
%13 = add i64 %"#s2.0.unr11", 1, !dbg !9
br label %L.unr14
L.unr14: ; preds = %L.preheader, %L.unr10
%"#s2.0.unr15" = phi i64 [ %13, %L.unr10 ], [ %5, %L.preheader ]
%14 = add i64 %"#s2.0.unr15", 1, !dbg !9
br label %L.unr18
L.unr18: ; preds = %L.preheader, %L.unr14
%"#s2.0.unr19" = phi i64 [ %14, %L.unr14 ], [ %5, %L.preheader ]
%15 = add i64 %"#s2.0.unr19", 1, !dbg !9
br label %L.unr22
L.unr22: ; preds = %L.preheader, %L.unr18
%"#s2.0.unr23" = phi i64 [ %15, %L.unr18 ], [ %5, %L.preheader ]
%16 = add i64 %"#s2.0.unr23", 1, !dbg !9
br label %L.preheader.split
L.preheader.split: ; preds = %L.preheader, %L.unr22
%"#s2.0.unr26" = phi i64 [ %5, %L.preheader ], [ %16, %L.unr22 ]
%17 = icmp ult i64 %9, 8
br i1 %17, label %L3.loopexit, label %L
L: ; preds = %L.preheader.split, %L
%"#s2.0" = phi i64 [ %19, %L ], [ %"#s2.0.unr26", %L.preheader.split ]
%18 = add i64 %"#s2.0", 7, !dbg !9
%19 = add i64 %"#s2.0", 8, !dbg !9
%20 = icmp eq i64 %18, %3, !dbg !11
br i1 %20, label %L3.loopexit, label %L, !dbg !11
L3.loopexit: ; preds = %L, %L.preheader.split
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment