[llvm] r200621 - LoopVectorizer: Enable unrolling of conditional stores and the load/store
Tobias Grosser
tobias at grosser.es
Mon Feb 3 14:42:53 PST 2014
On 02/03/2014 07:14 PM, Arnold Schwaighofer wrote:
> I cannot reproduce this regression on my side.
>
> On a Sandy-bridge machine I don’t see a regression for -O3 (without -mavx). The only difference between before/after in my test is that we unroll one vectorized loop by two:
It was run on an:
Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
using plain 'clang -O3'.
I just reproduced the regression though it is rather close and there is
some variance, but after several runs it becomes clear.
I attached the LLVM-IR before and after the commit. It is just a single
change (and seems to be the one you have also seen).
I did not run the -mavx numbers and personally don't worry about this
slight performance change (posted numbers just for information). In case
you want to investigate yourself, I can give you SSH access on the machine.
Tobias
-------------- next part --------------
; ModuleID = 'test-suite/SingleSource/UnitTests/Vectorizer/gcc-loops.cpp'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%"class.std::ios_base::Init" = type { i8 }
%struct.A = type { [1024 x i32] }
%"class.std::basic_ostream" = type { i32 (...)**, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", %"class.std::basic_ostream"*, i8, i8, %"class.std::basic_streambuf"*, %"class.std::ctype"*, %"class.std::num_put"*, %"class.std::num_get"* }
%"class.std::ios_base" = type { i32 (...)**, i64, i64, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"class.std::locale" }
%"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"class.std::ios_base"*, i32)*, i32, i32 }
%"struct.std::ios_base::_Words" = type { i8*, i64 }
%"class.std::locale" = type { %"class.std::locale::_Impl"* }
%"class.std::locale::_Impl" = type { i32, %"class.std::locale::facet"**, i64, %"class.std::locale::facet"**, i8** }
%"class.std::locale::facet" = type { i32 (...)**, i32 }
%"class.std::basic_streambuf" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"class.std::locale" }
%"class.std::ctype" = type { [12 x i8], %struct.__locale_struct*, i8, i32*, i32*, i16*, i8, [256 x i8], [256 x i8], i8 }
%struct.__locale_struct = type { [13 x %struct.__locale_data*], i16*, i32*, i32*, [13 x i8*] }
%struct.__locale_data = type opaque
%"class.std::num_put" = type { [12 x i8], [4 x i8] }
%"class.std::num_get" = type { [12 x i8], [4 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl" = type { i32*, i32*, i32* }
%class.Timer = type { i8*, i8, %struct.timeval, %struct.timeval }
%struct.timeval = type { i64, i64 }
%struct.timezone = type { i32, i32 }
@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1
@__dso_handle = external global i8
@usa = global [1024 x i16] zeroinitializer, align 16
@sa = global [1024 x i16] zeroinitializer, align 16
@sb = global [1024 x i16] zeroinitializer, align 16
@sc = global [1024 x i16] zeroinitializer, align 16
@ua = global [1024 x i32] zeroinitializer, align 16
@ia = global [1024 x i32] zeroinitializer, align 16
@ib = global [1024 x i32] zeroinitializer, align 16
@ic = global [1024 x i32] zeroinitializer, align 16
@ub = global [1024 x i32] zeroinitializer, align 16
@uc = global [1024 x i32] zeroinitializer, align 16
@fa = global [1024 x float] zeroinitializer, align 16
@fb = global [1024 x float] zeroinitializer, align 16
@da = global [1024 x float] zeroinitializer, align 16
@db = global [1024 x float] zeroinitializer, align 16
@dc = global [1024 x float] zeroinitializer, align 16
@dd = global [1024 x float] zeroinitializer, align 16
@dj = global [1024 x i32] zeroinitializer, align 16
@s = global %struct.A zeroinitializer, align 4
@a = global [2048 x i32] zeroinitializer, align 16
@b = global [2048 x i32] zeroinitializer, align 16
@c = global [2048 x i32] zeroinitializer, align 16
@d = global [2048 x i32] zeroinitializer, align 16
@G = global [32 x [1024 x i32]] zeroinitializer, align 16
@.str = private unnamed_addr constant [9 x i8] c"Example1\00", align 1
@.str1 = private unnamed_addr constant [10 x i8] c"Example2a\00", align 1
@.str2 = private unnamed_addr constant [10 x i8] c"Example2b\00", align 1
@.str3 = private unnamed_addr constant [9 x i8] c"Example3\00", align 1
@.str4 = private unnamed_addr constant [10 x i8] c"Example4a\00", align 1
@.str5 = private unnamed_addr constant [10 x i8] c"Example4b\00", align 1
@.str6 = private unnamed_addr constant [10 x i8] c"Example4c\00", align 1
@.str7 = private unnamed_addr constant [9 x i8] c"Example7\00", align 1
@.str8 = private unnamed_addr constant [9 x i8] c"Example8\00", align 1
@.str9 = private unnamed_addr constant [9 x i8] c"Example9\00", align 1
@.str10 = private unnamed_addr constant [11 x i8] c"Example10a\00", align 1
@.str11 = private unnamed_addr constant [11 x i8] c"Example10b\00", align 1
@.str12 = private unnamed_addr constant [10 x i8] c"Example11\00", align 1
@.str13 = private unnamed_addr constant [10 x i8] c"Example12\00", align 1
@.str14 = private unnamed_addr constant [10 x i8] c"Example23\00", align 1
@.str15 = private unnamed_addr constant [10 x i8] c"Example24\00", align 1
@.str16 = private unnamed_addr constant [10 x i8] c"Example25\00", align 1
@_ZSt4cout = external global %"class.std::basic_ostream"
@.str17 = private unnamed_addr constant [11 x i8] c"Results: (\00", align 1
@.str18 = private unnamed_addr constant [3 x i8] c"):\00", align 1
@.str19 = private unnamed_addr constant [2 x i8] c" \00", align 1
@.str20 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@.str22 = private unnamed_addr constant [3 x i8] c", \00", align 1
@.str23 = private unnamed_addr constant [8 x i8] c", msec\0A\00", align 1
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
declare void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"*) #0
declare void @_ZNSt8ios_base4InitD1Ev(%"class.std::ios_base::Init"*) #0
; Function Attrs: nounwind
declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) #1
; Function Attrs: noinline nounwind uwtable
define void @_Z8example1v() #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%1 = bitcast i32* %0 to <4 x i32>*
%wide.load = load <4 x i32>* %1, align 16
%.sum6 = or i64 %index, 4
%2 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum6
%3 = bitcast i32* %2 to <4 x i32>*
%wide.load3 = load <4 x i32>* %3, align 16
%4 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %index
%5 = bitcast i32* %4 to <4 x i32>*
%wide.load4 = load <4 x i32>* %5, align 16
%.sum7 = or i64 %index, 4
%6 = getelementptr [2048 x i32]* @c, i64 0, i64 %.sum7
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load5 = load <4 x i32>* %7, align 16
%8 = add nsw <4 x i32> %wide.load4, %wide.load
%9 = add nsw <4 x i32> %wide.load5, %wide.load3
%10 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %11, align 16
%.sum8 = or i64 %index, 4
%12 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum8
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %13, align 16
%index.next = add i64 %index, 8
%14 = icmp eq i64 %index.next, 256
br i1 %14, label %middle.block, label %vector.body, !llvm.loop !1
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example2aii(i32 %n, i32 %x) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.ph
vector.ph: ; preds = %.lr.ph.preheader
%broadcast.splatinsert3 = insertelement <4 x i32> undef, i32 %x, i32 0
%broadcast.splat4 = shufflevector <4 x i32> %broadcast.splatinsert3, <4 x i32> undef, <4 x i32> zeroinitializer
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%5 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> %broadcast.splat4, <4 x i32>* %6, align 16
%.sum7 = or i64 %index, 4
%7 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum7
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> %broadcast.splat4, <4 x i32>* %8, align 16
%index.next = add i64 %index, 8
%9 = icmp eq i64 %index.next, %n.vec
br i1 %9, label %middle.block, label %vector.body, !llvm.loop !4
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%10 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv
store i32 %x, i32* %10, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !9
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example2bii(i32 %n, i32 %x) #2 {
%1 = icmp eq i32 %n, 0
br i1 %1, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end = sub i32 %n, %cast.crd
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
%wide.load = load <4 x i32>* %6, align 16
%.sum12 = or i64 %index, 4
%7 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum12
%8 = bitcast i32* %7 to <4 x i32>*
%wide.load9 = load <4 x i32>* %8, align 16
%9 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %index
%10 = bitcast i32* %9 to <4 x i32>*
%wide.load10 = load <4 x i32>* %10, align 16
%.sum13 = or i64 %index, 4
%11 = getelementptr [2048 x i32]* @c, i64 0, i64 %.sum13
%12 = bitcast i32* %11 to <4 x i32>*
%wide.load11 = load <4 x i32>* %12, align 16
%13 = and <4 x i32> %wide.load10, %wide.load
%14 = and <4 x i32> %wide.load11, %wide.load9
%15 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%16 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> %13, <4 x i32>* %16, align 16
%.sum14 = or i64 %index, 4
%17 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum14
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> %14, <4 x i32>* %18, align 16
%index.next = add i64 %index, 8
%19 = icmp eq i64 %index.next, %n.vec
br i1 %19, label %middle.block, label %vector.body, !llvm.loop !10
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%resume.val3 = phi i32 [ %n, %.lr.ph.preheader ], [ %rev.ind.end, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%.01 = phi i32 [ %20, %.lr.ph ], [ %resume.val3, %middle.block ]
%20 = add nsw i32 %.01, -1
%21 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv
%22 = load i32* %21, align 4, !tbaa !5
%23 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %indvars.iv
%24 = load i32* %23, align 4, !tbaa !5
%25 = and i32 %24, %22
%26 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
store i32 %25, i32* %26, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%27 = icmp eq i32 %20, 0
br i1 %27, label %._crit_edge, label %.lr.ph, !llvm.loop !11
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example3iPiS_(i32 %n, i32* noalias nocapture %p, i32* noalias nocapture readonly %q) #2 {
%1 = icmp eq i32 %n, 0
br i1 %1, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%ptr.ind.end = getelementptr i32* %q, i64 %n.vec
%ptr.ind.end8 = getelementptr i32* %p, i64 %n.vec
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end = sub i32 %n, %cast.crd
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%next.gep = getelementptr i32* %q, i64 %index
%next.gep33 = getelementptr i32* %p, i64 %index
%5 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>* %5, align 16
%next.gep.sum77 = or i64 %index, 4
%6 = getelementptr i32* %q, i64 %next.gep.sum77
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load58 = load <4 x i32>* %7, align 16
%8 = bitcast i32* %next.gep33 to <4 x i32>*
store <4 x i32> %wide.load, <4 x i32>* %8, align 16
%next.gep33.sum82 = or i64 %index, 4
%9 = getelementptr i32* %p, i64 %next.gep33.sum82
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> %wide.load58, <4 x i32>* %10, align 16
%index.next = add i64 %index, 8
%11 = icmp eq i64 %index.next, %n.vec
br i1 %11, label %middle.block, label %vector.body, !llvm.loop !12
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i32* [ %q, %.lr.ph.preheader ], [ %ptr.ind.end, %vector.body ]
%resume.val7 = phi i32* [ %p, %.lr.ph.preheader ], [ %ptr.ind.end8, %vector.body ]
%resume.val9 = phi i32 [ %n, %.lr.ph.preheader ], [ %rev.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%.05 = phi i32* [ %13, %.lr.ph ], [ %resume.val, %middle.block ]
%.014 = phi i32* [ %15, %.lr.ph ], [ %resume.val7, %middle.block ]
%.023 = phi i32 [ %12, %.lr.ph ], [ %resume.val9, %middle.block ]
%12 = add nsw i32 %.023, -1
%13 = getelementptr inbounds i32* %.05, i64 1
%14 = load i32* %.05, align 16, !tbaa !5
%15 = getelementptr inbounds i32* %.014, i64 1
store i32 %14, i32* %.014, align 16, !tbaa !5
%16 = icmp eq i32 %12, 0
br i1 %16, label %._crit_edge, label %.lr.ph, !llvm.loop !13
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example4aiPiS_(i32 %n, i32* noalias nocapture %p, i32* noalias nocapture readonly %q) #2 {
%1 = icmp eq i32 %n, 0
br i1 %1, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%ptr.ind.end = getelementptr i32* %q, i64 %n.vec
%ptr.ind.end7 = getelementptr i32* %p, i64 %n.vec
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end = sub i32 %n, %cast.crd
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%next.gep = getelementptr i32* %q, i64 %index
%next.gep32 = getelementptr i32* %p, i64 %index
%5 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>* %5, align 16
%next.gep.sum76 = or i64 %index, 4
%6 = getelementptr i32* %q, i64 %next.gep.sum76
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load57 = load <4 x i32>* %7, align 16
%8 = add nsw <4 x i32> %wide.load, <i32 5, i32 5, i32 5, i32 5>
%9 = add nsw <4 x i32> %wide.load57, <i32 5, i32 5, i32 5, i32 5>
%10 = bitcast i32* %next.gep32 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %10, align 16
%next.gep32.sum81 = or i64 %index, 4
%11 = getelementptr i32* %p, i64 %next.gep32.sum81
%12 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %12, align 16
%index.next = add i64 %index, 8
%13 = icmp eq i64 %index.next, %n.vec
br i1 %13, label %middle.block, label %vector.body, !llvm.loop !14
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i32* [ %q, %.lr.ph.preheader ], [ %ptr.ind.end, %vector.body ]
%resume.val6 = phi i32* [ %p, %.lr.ph.preheader ], [ %ptr.ind.end7, %vector.body ]
%resume.val8 = phi i32 [ %n, %.lr.ph.preheader ], [ %rev.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%.05 = phi i32* [ %15, %.lr.ph ], [ %resume.val, %middle.block ]
%.014 = phi i32* [ %18, %.lr.ph ], [ %resume.val6, %middle.block ]
%.023 = phi i32 [ %14, %.lr.ph ], [ %resume.val8, %middle.block ]
%14 = add nsw i32 %.023, -1
%15 = getelementptr inbounds i32* %.05, i64 1
%16 = load i32* %.05, align 16, !tbaa !5
%17 = add nsw i32 %16, 5
%18 = getelementptr inbounds i32* %.014, i64 1
store i32 %17, i32* %.014, align 16, !tbaa !5
%19 = icmp eq i32 %14, 0
br i1 %19, label %._crit_edge, label %.lr.ph, !llvm.loop !15
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example4biPiS_(i32 %n, i32* noalias nocapture readnone %p, i32* noalias nocapture readnone %q) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = or i64 %index, 1
%6 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %5
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load = load <4 x i32>* %7, align 4
%.sum11 = or i64 %index, 5
%8 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum11
%9 = bitcast i32* %8 to <4 x i32>*
%wide.load3 = load <4 x i32>* %9, align 4
%10 = or i64 %index, 3
%11 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %10
%12 = bitcast i32* %11 to <4 x i32>*
%wide.load4 = load <4 x i32>* %12, align 4
%.sum812 = or i64 %index, 7
%13 = getelementptr [2048 x i32]* @c, i64 0, i64 %.sum812
%14 = bitcast i32* %13 to <4 x i32>*
%wide.load5 = load <4 x i32>* %14, align 4
%15 = add nsw <4 x i32> %wide.load4, %wide.load
%16 = add nsw <4 x i32> %wide.load5, %wide.load3
%17 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> %15, <4 x i32>* %18, align 16
%.sum910 = or i64 %index, 4
%19 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum910
%20 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> %16, <4 x i32>* %20, align 16
%index.next = add i64 %index, 8
%21 = icmp eq i64 %index.next, %n.vec
br i1 %21, label %middle.block, label %vector.body, !llvm.loop !16
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%22 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv.next
%23 = load i32* %22, align 4, !tbaa !5
%24 = add nsw i64 %indvars.iv, 3
%25 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %24
%26 = load i32* %25, align 4, !tbaa !5
%27 = add nsw i32 %26, %23
%28 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
store i32 %27, i32* %28, align 4, !tbaa !5
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !17
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example4ciPiS_(i32 %n, i32* noalias nocapture readnone %p, i32* noalias nocapture readnone %q) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934588
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
%wide.load = load <4 x i32>* %6, align 16
%7 = icmp sgt <4 x i32> %wide.load, <i32 4, i32 4, i32 4, i32 4>
%8 = select <4 x i1> %7, <4 x i32> <i32 4, i32 4, i32 4, i32 4>, <4 x i32> zeroinitializer
%9 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %10, align 16
%index.next = add i64 %index, 4
%11 = icmp eq i64 %index.next, %n.vec
br i1 %11, label %middle.block, label %vector.body, !llvm.loop !18
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%12 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
%13 = load i32* %12, align 4, !tbaa !5
%14 = icmp sgt i32 %13, 4
%15 = select i1 %14, i32 4, i32 0
%16 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv
store i32 %15, i32* %16, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !19
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example5iP1A(i32 %n, %struct.A* nocapture %s) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = getelementptr inbounds %struct.A* %s, i64 0, i32 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %6, align 4
%.sum5 = or i64 %index, 4
%7 = getelementptr %struct.A* %s, i64 0, i32 0, i64 %.sum5
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %8, align 4
%index.next = add i64 %index, 8
%9 = icmp eq i64 %index.next, %n.vec
br i1 %9, label %middle.block, label %vector.body, !llvm.loop !20
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%10 = getelementptr inbounds %struct.A* %s, i64 0, i32 0, i64 %indvars.iv
store i32 5, i32* %10, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !21
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example7i(i32 %x) #2 {
%1 = sext i32 %x to i64
%scevgep = getelementptr [2048 x i32]* @b, i64 0, i64 %1
%scevgep2 = bitcast i32* %scevgep to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* bitcast ([2048 x i32]* @a to i8*), i8* %scevgep2, i64 4096, i32 4, i1 false)
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example8i(i32 %x) #2 {
br label %vector.ph
vector.ph: ; preds = %0, %middle.block
%indvars.iv3 = phi i64 [ 0, %0 ], [ %indvars.iv.next4, %middle.block ]
%broadcast.splatinsert7 = insertelement <4 x i32> undef, i32 %x, i32 0
%broadcast.splat8 = shufflevector <4 x i32> %broadcast.splatinsert7, <4 x i32> undef, <4 x i32> zeroinitializer
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%1 = getelementptr inbounds [32 x [1024 x i32]]* @G, i64 0, i64 %indvars.iv3, i64 %index
%2 = bitcast i32* %1 to <4 x i32>*
store <4 x i32> %broadcast.splat8, <4 x i32>* %2, align 16
%.sum9 = or i64 %index, 4
%3 = getelementptr [32 x [1024 x i32]]* @G, i64 0, i64 %indvars.iv3, i64 %.sum9
%4 = bitcast i32* %3 to <4 x i32>*
store <4 x i32> %broadcast.splat8, <4 x i32>* %4, align 16
%index.next = add i64 %index, 8
%5 = icmp eq i64 %index.next, 1024
br i1 %5, label %middle.block, label %vector.body, !llvm.loop !22
middle.block: ; preds = %vector.body
%indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
%exitcond5 = icmp eq i64 %indvars.iv.next4, 32
br i1 %exitcond5, label %6, label %vector.ph
; <label>:6 ; preds = %middle.block
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example9Pj(i32* nocapture %ret) #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %10, %vector.body ]
%vec.phi4 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %11, %vector.body ]
%0 = getelementptr inbounds [1024 x i32]* @ub, i64 0, i64 %index
%1 = bitcast i32* %0 to <4 x i32>*
%wide.load = load <4 x i32>* %1, align 16
%.sum12 = or i64 %index, 4
%2 = getelementptr [1024 x i32]* @ub, i64 0, i64 %.sum12
%3 = bitcast i32* %2 to <4 x i32>*
%wide.load5 = load <4 x i32>* %3, align 16
%4 = getelementptr inbounds [1024 x i32]* @uc, i64 0, i64 %index
%5 = bitcast i32* %4 to <4 x i32>*
%wide.load6 = load <4 x i32>* %5, align 16
%.sum13 = or i64 %index, 4
%6 = getelementptr [1024 x i32]* @uc, i64 0, i64 %.sum13
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load7 = load <4 x i32>* %7, align 16
%8 = add <4 x i32> %wide.load, %vec.phi
%9 = add <4 x i32> %wide.load5, %vec.phi4
%10 = sub <4 x i32> %8, %wide.load6
%11 = sub <4 x i32> %9, %wide.load7
%index.next = add i64 %index, 8
%12 = icmp eq i64 %index.next, 1024
br i1 %12, label %middle.block, label %vector.body, !llvm.loop !23
middle.block: ; preds = %vector.body
%bin.rdx = add <4 x i32> %11, %10
%rdx.shuf = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx9 = add <4 x i32> %bin.rdx, %rdx.shuf
%rdx.shuf10 = shufflevector <4 x i32> %bin.rdx9, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx11 = add <4 x i32> %bin.rdx9, %rdx.shuf10
%13 = extractelement <4 x i32> %bin.rdx11, i32 0
store i32 %13, i32* %ret, align 4, !tbaa !5
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z10example10aPsS_S_PiS0_S0_(i16* noalias nocapture %sa, i16* noalias nocapture readonly %sb, i16* noalias nocapture readonly %sc, i32* noalias nocapture %ia, i32* noalias nocapture readonly %ib, i32* noalias nocapture readonly %ic) #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds i32* %ib, i64 %index
%1 = bitcast i32* %0 to <4 x i32>*
%wide.load = load <4 x i32>* %1, align 4
%.sum10 = or i64 %index, 4
%2 = getelementptr i32* %ib, i64 %.sum10
%3 = bitcast i32* %2 to <4 x i32>*
%wide.load3 = load <4 x i32>* %3, align 4
%4 = getelementptr inbounds i32* %ic, i64 %index
%5 = bitcast i32* %4 to <4 x i32>*
%wide.load4 = load <4 x i32>* %5, align 4
%.sum11 = or i64 %index, 4
%6 = getelementptr i32* %ic, i64 %.sum11
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load5 = load <4 x i32>* %7, align 4
%8 = add nsw <4 x i32> %wide.load4, %wide.load
%9 = add nsw <4 x i32> %wide.load5, %wide.load3
%10 = getelementptr inbounds i32* %ia, i64 %index
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %11, align 4
%.sum12 = or i64 %index, 4
%12 = getelementptr i32* %ia, i64 %.sum12
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %13, align 4
%14 = getelementptr inbounds i16* %sb, i64 %index
%15 = bitcast i16* %14 to <4 x i16>*
%wide.load6 = load <4 x i16>* %15, align 2
%.sum13 = or i64 %index, 4
%16 = getelementptr i16* %sb, i64 %.sum13
%17 = bitcast i16* %16 to <4 x i16>*
%wide.load7 = load <4 x i16>* %17, align 2
%18 = getelementptr inbounds i16* %sc, i64 %index
%19 = bitcast i16* %18 to <4 x i16>*
%wide.load8 = load <4 x i16>* %19, align 2
%.sum14 = or i64 %index, 4
%20 = getelementptr i16* %sc, i64 %.sum14
%21 = bitcast i16* %20 to <4 x i16>*
%wide.load9 = load <4 x i16>* %21, align 2
%22 = add <4 x i16> %wide.load8, %wide.load6
%23 = add <4 x i16> %wide.load9, %wide.load7
%24 = getelementptr inbounds i16* %sa, i64 %index
%25 = bitcast i16* %24 to <4 x i16>*
store <4 x i16> %22, <4 x i16>* %25, align 2
%.sum15 = or i64 %index, 4
%26 = getelementptr i16* %sa, i64 %.sum15
%27 = bitcast i16* %26 to <4 x i16>*
store <4 x i16> %23, <4 x i16>* %27, align 2
%index.next = add i64 %index, 8
%28 = icmp eq i64 %index.next, 1024
br i1 %28, label %middle.block, label %vector.body, !llvm.loop !24
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z10example10bPsS_S_PiS0_S0_(i16* noalias nocapture readnone %sa, i16* noalias nocapture readonly %sb, i16* noalias nocapture readnone %sc, i32* noalias nocapture %ia, i32* noalias nocapture readnone %ib, i32* noalias nocapture readnone %ic) #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds i16* %sb, i64 %index
%1 = bitcast i16* %0 to <4 x i16>*
%wide.load = load <4 x i16>* %1, align 2
%.sum4 = or i64 %index, 4
%2 = getelementptr i16* %sb, i64 %.sum4
%3 = bitcast i16* %2 to <4 x i16>*
%wide.load3 = load <4 x i16>* %3, align 2
%4 = sext <4 x i16> %wide.load to <4 x i32>
%5 = sext <4 x i16> %wide.load3 to <4 x i32>
%6 = getelementptr inbounds i32* %ia, i64 %index
%7 = bitcast i32* %6 to <4 x i32>*
store <4 x i32> %4, <4 x i32>* %7, align 4
%.sum5 = or i64 %index, 4
%8 = getelementptr i32* %ia, i64 %.sum5
%9 = bitcast i32* %8 to <4 x i32>*
store <4 x i32> %5, <4 x i32>* %9, align 4
%index.next = add i64 %index, 8
%10 = icmp eq i64 %index.next, 1024
br i1 %10, label %middle.block, label %vector.body, !llvm.loop !25
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example11v() #2 {
br label %1
; <label>:1 ; preds = %1, %0
%indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %1 ]
%2 = shl nsw i64 %indvars.iv, 1
%3 = or i64 %2, 1
%4 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %3
%5 = load i32* %4, align 4, !tbaa !5
%6 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %3
%7 = load i32* %6, align 4, !tbaa !5
%8 = mul nsw i32 %7, %5
%9 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %2
%10 = load i32* %9, align 8, !tbaa !5
%11 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %2
%12 = load i32* %11, align 8, !tbaa !5
%13 = mul nsw i32 %12, %10
%14 = sub nsw i32 %8, %13
%15 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
store i32 %14, i32* %15, align 4, !tbaa !5
%16 = mul nsw i32 %7, %10
%17 = mul nsw i32 %12, %5
%18 = add nsw i32 %17, %16
%19 = getelementptr inbounds [2048 x i32]* @d, i64 0, i64 %indvars.iv
store i32 %18, i32* %19, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%exitcond = icmp eq i64 %indvars.iv.next, 512
br i1 %exitcond, label %20, label %1
; <label>:20 ; preds = %1
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example12v() #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%1 = trunc i64 %index to i32
%broadcast.splatinsert3 = insertelement <4 x i32> undef, i32 %1, i32 0
%broadcast.splat4 = shufflevector <4 x i32> %broadcast.splatinsert3, <4 x i32> undef, <4 x i32> zeroinitializer
%induction5 = add <4 x i32> %broadcast.splat4, <i32 0, i32 1, i32 2, i32 3>
%induction6 = add <4 x i32> %broadcast.splat4, <i32 4, i32 5, i32 6, i32 7>
%2 = bitcast i32* %0 to <4 x i32>*
store <4 x i32> %induction5, <4 x i32>* %2, align 16
%.sum7 = or i64 %index, 4
%3 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum7
%4 = bitcast i32* %3 to <4 x i32>*
store <4 x i32> %induction6, <4 x i32>* %4, align 16
%index.next = add i64 %index, 8
%5 = icmp eq i64 %index.next, 1024
br i1 %5, label %middle.block, label %vector.body, !llvm.loop !26
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example13PPiS0_S_(i32** nocapture readonly %A, i32** nocapture readonly %B, i32* nocapture %out) #2 {
br label %.preheader
.preheader: ; preds = %14, %0
%indvars.iv4 = phi i64 [ 0, %0 ], [ %indvars.iv.next5, %14 ]
%1 = getelementptr inbounds i32** %A, i64 %indvars.iv4
%2 = load i32** %1, align 8, !tbaa !27
%3 = getelementptr inbounds i32** %B, i64 %indvars.iv4
%4 = load i32** %3, align 8, !tbaa !27
br label %5
; <label>:5 ; preds = %.preheader, %5
%indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %5 ]
%diff.02 = phi i32 [ 0, %.preheader ], [ %11, %5 ]
%6 = getelementptr inbounds i32* %2, i64 %indvars.iv
%7 = load i32* %6, align 4, !tbaa !5
%8 = getelementptr inbounds i32* %4, i64 %indvars.iv
%9 = load i32* %8, align 4, !tbaa !5
%10 = add i32 %7, %diff.02
%11 = sub i32 %10, %9
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 8
%12 = trunc i64 %indvars.iv.next to i32
%13 = icmp slt i32 %12, 1024
br i1 %13, label %5, label %14
; <label>:14 ; preds = %5
%15 = getelementptr inbounds i32* %out, i64 %indvars.iv4
store i32 %11, i32* %15, align 4, !tbaa !5
%indvars.iv.next5 = add nuw nsw i64 %indvars.iv4, 1
%exitcond = icmp eq i64 %indvars.iv.next5, 32
br i1 %exitcond, label %16, label %.preheader
; <label>:16 ; preds = %14
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example14PPiS0_S_(i32** nocapture readonly %in, i32** nocapture readonly %coeff, i32* nocapture %out) #2 {
.preheader1:
br label %vector.ph
vector.ph: ; preds = %.preheader1, %middle.block
%indvars.iv7 = phi i64 [ 0, %.preheader1 ], [ %indvars.iv.next8, %middle.block ]
%sum.05 = phi i32 [ 0, %.preheader1 ], [ %bin.rdx, %middle.block ]
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%vec.phi = phi i32 [ %sum.05, %vector.ph ], [ %18, %vector.body ]
%vec.phi20 = phi i32 [ 0, %vector.ph ], [ %19, %vector.body ]
%induction1970 = or i64 %index, 1
%0 = getelementptr inbounds i32** %in, i64 %index
%1 = getelementptr inbounds i32** %in, i64 %induction1970
%2 = load i32** %0, align 8, !tbaa !27
%3 = load i32** %1, align 8, !tbaa !27
%4 = getelementptr inbounds i32* %2, i64 %indvars.iv7
%5 = getelementptr inbounds i32* %3, i64 %indvars.iv7
%6 = load i32* %4, align 4, !tbaa !5
%7 = load i32* %5, align 4, !tbaa !5
%8 = getelementptr inbounds i32** %coeff, i64 %index
%9 = getelementptr inbounds i32** %coeff, i64 %induction1970
%10 = load i32** %8, align 8, !tbaa !27
%11 = load i32** %9, align 8, !tbaa !27
%12 = getelementptr inbounds i32* %10, i64 %indvars.iv7
%13 = getelementptr inbounds i32* %11, i64 %indvars.iv7
%14 = load i32* %12, align 4, !tbaa !5
%15 = load i32* %13, align 4, !tbaa !5
%16 = mul nsw i32 %14, %6
%17 = mul nsw i32 %15, %7
%18 = add nsw i32 %16, %vec.phi
%19 = add nsw i32 %17, %vec.phi20
%index.next = add i64 %index, 2
%20 = icmp eq i64 %index.next, 1024
br i1 %20, label %middle.block, label %vector.body, !llvm.loop !29
middle.block: ; preds = %vector.body
%bin.rdx = add i32 %19, %18
%indvars.iv.next8 = add nuw nsw i64 %indvars.iv7, 1
%exitcond9 = icmp eq i64 %indvars.iv.next8, 32
br i1 %exitcond9, label %.preheader1.113, label %vector.ph
.preheader1.113: ; preds = %middle.block
store i32 %bin.rdx, i32* %out, align 4, !tbaa !5
br label %vector.ph22
vector.ph22: ; preds = %.preheader1.113, %middle.block24
%indvars.iv7.1 = phi i64 [ 0, %.preheader1.113 ], [ %indvars.iv.next8.1, %middle.block24 ]
%sum.05.1 = phi i32 [ 0, %.preheader1.113 ], [ %bin.rdx37, %middle.block24 ]
br label %vector.body23
vector.body23: ; preds = %vector.body23, %vector.ph22
%index26 = phi i64 [ 0, %vector.ph22 ], [ %index.next30, %vector.body23 ]
%vec.phi33 = phi i32 [ %sum.05.1, %vector.ph22 ], [ %41, %vector.body23 ]
%vec.phi34 = phi i32 [ 0, %vector.ph22 ], [ %42, %vector.body23 ]
%induction3271 = or i64 %index26, 1
%21 = or i64 %index26, 1
%22 = add nsw i64 %induction3271, 1
%23 = getelementptr inbounds i32** %in, i64 %21
%24 = getelementptr inbounds i32** %in, i64 %22
%25 = load i32** %23, align 8, !tbaa !27
%26 = load i32** %24, align 8, !tbaa !27
%27 = getelementptr inbounds i32* %25, i64 %indvars.iv7.1
%28 = getelementptr inbounds i32* %26, i64 %indvars.iv7.1
%29 = load i32* %27, align 4, !tbaa !5
%30 = load i32* %28, align 4, !tbaa !5
%31 = getelementptr inbounds i32** %coeff, i64 %index26
%32 = getelementptr inbounds i32** %coeff, i64 %induction3271
%33 = load i32** %31, align 8, !tbaa !27
%34 = load i32** %32, align 8, !tbaa !27
%35 = getelementptr inbounds i32* %33, i64 %indvars.iv7.1
%36 = getelementptr inbounds i32* %34, i64 %indvars.iv7.1
%37 = load i32* %35, align 4, !tbaa !5
%38 = load i32* %36, align 4, !tbaa !5
%39 = mul nsw i32 %37, %29
%40 = mul nsw i32 %38, %30
%41 = add nsw i32 %39, %vec.phi33
%42 = add nsw i32 %40, %vec.phi34
%index.next30 = add i64 %index26, 2
%43 = icmp eq i64 %index.next30, 1024
br i1 %43, label %middle.block24, label %vector.body23, !llvm.loop !30
middle.block24: ; preds = %vector.body23
%bin.rdx37 = add i32 %42, %41
%indvars.iv.next8.1 = add nuw nsw i64 %indvars.iv7.1, 1
%exitcond9.1 = icmp eq i64 %indvars.iv.next8.1, 32
br i1 %exitcond9.1, label %.preheader1.214, label %vector.ph22
.preheader1.214: ; preds = %middle.block24
%44 = getelementptr inbounds i32* %out, i64 1
store i32 %bin.rdx37, i32* %44, align 4, !tbaa !5
br label %vector.ph38
vector.ph38: ; preds = %.preheader1.214, %middle.block40
%indvars.iv7.2 = phi i64 [ 0, %.preheader1.214 ], [ %indvars.iv.next8.2, %middle.block40 ]
%sum.05.2 = phi i32 [ 0, %.preheader1.214 ], [ %bin.rdx53, %middle.block40 ]
br label %vector.body39
vector.body39: ; preds = %vector.body39, %vector.ph38
%index42 = phi i64 [ 0, %vector.ph38 ], [ %index.next46, %vector.body39 ]
%vec.phi49 = phi i32 [ %sum.05.2, %vector.ph38 ], [ %65, %vector.body39 ]
%vec.phi50 = phi i32 [ 0, %vector.ph38 ], [ %66, %vector.body39 ]
%induction4872 = or i64 %index42, 1
%45 = add nsw i64 %index42, 2
%46 = add nsw i64 %induction4872, 2
%47 = getelementptr inbounds i32** %in, i64 %45
%48 = getelementptr inbounds i32** %in, i64 %46
%49 = load i32** %47, align 8, !tbaa !27
%50 = load i32** %48, align 8, !tbaa !27
%51 = getelementptr inbounds i32* %49, i64 %indvars.iv7.2
%52 = getelementptr inbounds i32* %50, i64 %indvars.iv7.2
%53 = load i32* %51, align 4, !tbaa !5
%54 = load i32* %52, align 4, !tbaa !5
%55 = getelementptr inbounds i32** %coeff, i64 %index42
%56 = getelementptr inbounds i32** %coeff, i64 %induction4872
%57 = load i32** %55, align 8, !tbaa !27
%58 = load i32** %56, align 8, !tbaa !27
%59 = getelementptr inbounds i32* %57, i64 %indvars.iv7.2
%60 = getelementptr inbounds i32* %58, i64 %indvars.iv7.2
%61 = load i32* %59, align 4, !tbaa !5
%62 = load i32* %60, align 4, !tbaa !5
%63 = mul nsw i32 %61, %53
%64 = mul nsw i32 %62, %54
%65 = add nsw i32 %63, %vec.phi49
%66 = add nsw i32 %64, %vec.phi50
%index.next46 = add i64 %index42, 2
%67 = icmp eq i64 %index.next46, 1024
br i1 %67, label %middle.block40, label %vector.body39, !llvm.loop !31
middle.block40: ; preds = %vector.body39
%bin.rdx53 = add i32 %66, %65
%indvars.iv.next8.2 = add nuw nsw i64 %indvars.iv7.2, 1
%exitcond9.2 = icmp eq i64 %indvars.iv.next8.2, 32
br i1 %exitcond9.2, label %.preheader1.315, label %vector.ph38
.preheader1.315: ; preds = %middle.block40
%68 = getelementptr inbounds i32* %out, i64 2
store i32 %bin.rdx53, i32* %68, align 4, !tbaa !5
br label %vector.ph54
vector.ph54: ; preds = %.preheader1.315, %middle.block56
%indvars.iv7.3 = phi i64 [ 0, %.preheader1.315 ], [ %indvars.iv.next8.3, %middle.block56 ]
%sum.05.3 = phi i32 [ 0, %.preheader1.315 ], [ %bin.rdx69, %middle.block56 ]
br label %vector.body55
vector.body55: ; preds = %vector.body55, %vector.ph54
%index58 = phi i64 [ 0, %vector.ph54 ], [ %index.next62, %vector.body55 ]
%vec.phi65 = phi i32 [ %sum.05.3, %vector.ph54 ], [ %89, %vector.body55 ]
%vec.phi66 = phi i32 [ 0, %vector.ph54 ], [ %90, %vector.body55 ]
%induction6473 = or i64 %index58, 1
%69 = add nsw i64 %index58, 3
%70 = add nsw i64 %induction6473, 3
%71 = getelementptr inbounds i32** %in, i64 %69
%72 = getelementptr inbounds i32** %in, i64 %70
%73 = load i32** %71, align 8, !tbaa !27
%74 = load i32** %72, align 8, !tbaa !27
%75 = getelementptr inbounds i32* %73, i64 %indvars.iv7.3
%76 = getelementptr inbounds i32* %74, i64 %indvars.iv7.3
%77 = load i32* %75, align 4, !tbaa !5
%78 = load i32* %76, align 4, !tbaa !5
%79 = getelementptr inbounds i32** %coeff, i64 %index58
%80 = getelementptr inbounds i32** %coeff, i64 %induction6473
%81 = load i32** %79, align 8, !tbaa !27
%82 = load i32** %80, align 8, !tbaa !27
%83 = getelementptr inbounds i32* %81, i64 %indvars.iv7.3
%84 = getelementptr inbounds i32* %82, i64 %indvars.iv7.3
%85 = load i32* %83, align 4, !tbaa !5
%86 = load i32* %84, align 4, !tbaa !5
%87 = mul nsw i32 %85, %77
%88 = mul nsw i32 %86, %78
%89 = add nsw i32 %87, %vec.phi65
%90 = add nsw i32 %88, %vec.phi66
%index.next62 = add i64 %index58, 2
%91 = icmp eq i64 %index.next62, 1024
br i1 %91, label %middle.block56, label %vector.body55, !llvm.loop !32
middle.block56: ; preds = %vector.body55
%bin.rdx69 = add i32 %90, %89
%indvars.iv.next8.3 = add nuw nsw i64 %indvars.iv7.3, 1
%exitcond9.3 = icmp eq i64 %indvars.iv.next8.3, 32
br i1 %exitcond9.3, label %92, label %vector.ph54
; <label>:92 ; preds = %middle.block56
%93 = getelementptr inbounds i32* %out, i64 3
store i32 %bin.rdx69, i32* %93, align 4, !tbaa !5
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example21Pii(i32* nocapture %b, i32 %n) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph, label %._crit_edge
.lr.ph: ; preds = %0
%2 = sext i32 %n to i64
%3 = add i32 %n, -1
%4 = zext i32 %3 to i64
%5 = add i64 %4, 1
%end.idx = add i64 %4, 1
%n.vec = and i64 %5, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%rev.ind.end = sub i64 %2, %n.vec
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph ]
%vec.phi = phi <4 x i32> [ %10, %vector.body ], [ zeroinitializer, %.lr.ph ]
%vec.phi5 = phi <4 x i32> [ %11, %vector.body ], [ zeroinitializer, %.lr.ph ]
%reverse.idx = sub i64 %2, %index
%.sum = add i64 %reverse.idx, -4
%6 = getelementptr i32* %b, i64 %.sum
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load = load <4 x i32>* %7, align 4
%reverse = shufflevector <4 x i32> %wide.load, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%.sum13 = add i64 %reverse.idx, -8
%8 = getelementptr i32* %b, i64 %.sum13
%9 = bitcast i32* %8 to <4 x i32>*
%wide.load6 = load <4 x i32>* %9, align 4
%reverse7 = shufflevector <4 x i32> %wide.load6, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%10 = add nsw <4 x i32> %reverse, %vec.phi
%11 = add nsw <4 x i32> %reverse7, %vec.phi5
%index.next = add i64 %index, 8
%12 = icmp eq i64 %index.next, %n.vec
br i1 %12, label %middle.block, label %vector.body, !llvm.loop !33
middle.block: ; preds = %vector.body, %.lr.ph
%resume.val = phi i64 [ %2, %.lr.ph ], [ %rev.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph ], [ %n.vec, %vector.body ]
%rdx.vec.exit.phi = phi <4 x i32> [ zeroinitializer, %.lr.ph ], [ %10, %vector.body ]
%rdx.vec.exit.phi8 = phi <4 x i32> [ zeroinitializer, %.lr.ph ], [ %11, %vector.body ]
%bin.rdx = add <4 x i32> %rdx.vec.exit.phi8, %rdx.vec.exit.phi
%rdx.shuf = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx9 = add <4 x i32> %bin.rdx, %rdx.shuf
%rdx.shuf10 = shufflevector <4 x i32> %bin.rdx9, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx11 = add <4 x i32> %bin.rdx9, %rdx.shuf10
%13 = extractelement <4 x i32> %bin.rdx11, i32 0
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %._crit_edge, label %scalar.ph
scalar.ph: ; preds = %middle.block, %scalar.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %resume.val, %middle.block ]
%a.02 = phi i32 [ %16, %scalar.ph ], [ %13, %middle.block ]
%indvars.iv.next = add nsw i64 %indvars.iv, -1
%14 = getelementptr inbounds i32* %b, i64 %indvars.iv.next
%15 = load i32* %14, align 4, !tbaa !5
%16 = add nsw i32 %15, %a.02
%17 = trunc i64 %indvars.iv.next to i32
%18 = icmp sgt i32 %17, 0
br i1 %18, label %scalar.ph, label %._crit_edge, !llvm.loop !34
._crit_edge: ; preds = %scalar.ph, %middle.block, %0
%a.0.lcssa = phi i32 [ 0, %0 ], [ %16, %scalar.ph ], [ %13, %middle.block ]
store i32 %a.0.lcssa, i32* %b, align 4, !tbaa !5
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example23PtPj(i16* nocapture readonly %src, i32* nocapture %dst) #2 {
vector.memcheck:
%scevgep8 = getelementptr i16* %src, i64 255
%scevgep = getelementptr i32* %dst, i64 255
%0 = bitcast i32* %scevgep to i16*
%1 = bitcast i16* %scevgep8 to i32*
%bound1 = icmp uge i16* %0, %src
%bound0 = icmp uge i32* %1, %dst
%memcheck.conflict = and i1 %bound0, %bound1
%ptr.ind.end = getelementptr i32* %dst, i64 256
%ptr.ind.end12 = getelementptr i16* %src, i64 256
br i1 %memcheck.conflict, label %middle.block, label %vector.body
vector.body: ; preds = %vector.memcheck, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
%next.gep = getelementptr i32* %dst, i64 %index
%next.gep37 = getelementptr i16* %src, i64 %index
%2 = bitcast i16* %next.gep37 to <4 x i16>*
%wide.load = load <4 x i16>* %2, align 2
%next.gep37.sum79 = or i64 %index, 4
%3 = getelementptr i16* %src, i64 %next.gep37.sum79
%4 = bitcast i16* %3 to <4 x i16>*
%wide.load60 = load <4 x i16>* %4, align 2
%5 = zext <4 x i16> %wide.load to <4 x i32>
%6 = zext <4 x i16> %wide.load60 to <4 x i32>
%7 = shl nuw nsw <4 x i32> %5, <i32 7, i32 7, i32 7, i32 7>
%8 = shl nuw nsw <4 x i32> %6, <i32 7, i32 7, i32 7, i32 7>
%9 = bitcast i32* %next.gep to <4 x i32>*
store <4 x i32> %7, <4 x i32>* %9, align 4
%next.gep.sum84 = or i64 %index, 4
%10 = getelementptr i32* %dst, i64 %next.gep.sum84
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %11, align 4
%index.next = add i64 %index, 8
%12 = icmp eq i64 %index.next, 256
br i1 %12, label %middle.block, label %vector.body, !llvm.loop !35
middle.block: ; preds = %vector.body, %vector.memcheck
%resume.val = phi i1 [ false, %vector.memcheck ], [ true, %vector.body ]
%trunc.resume.val = phi i32 [ 0, %vector.memcheck ], [ 256, %vector.body ]
%resume.val10 = phi i32* [ %dst, %vector.memcheck ], [ %ptr.ind.end, %vector.body ]
%resume.val11 = phi i16* [ %src, %vector.memcheck ], [ %ptr.ind.end12, %vector.body ]
br i1 %resume.val, label %19, label %scalar.ph
scalar.ph: ; preds = %middle.block, %scalar.ph
%i.04 = phi i32 [ %18, %scalar.ph ], [ %trunc.resume.val, %middle.block ]
%.03 = phi i32* [ %17, %scalar.ph ], [ %resume.val10, %middle.block ]
%.012 = phi i16* [ %13, %scalar.ph ], [ %resume.val11, %middle.block ]
%13 = getelementptr inbounds i16* %.012, i64 1
%14 = load i16* %.012, align 2, !tbaa !36
%15 = zext i16 %14 to i32
%16 = shl nuw nsw i32 %15, 7
%17 = getelementptr inbounds i32* %.03, i64 1
store i32 %16, i32* %.03, align 4, !tbaa !5
%18 = add nsw i32 %i.04, 1
%exitcond = icmp eq i32 %18, 256
br i1 %exitcond, label %19, label %scalar.ph, !llvm.loop !38
; <label>:19 ; preds = %middle.block, %scalar.ph
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example24ss(i16 signext %x, i16 signext %y) #2 {
vector.ph:
%broadcast.splatinsert3 = insertelement <4 x i16> undef, i16 %x, i32 0
%broadcast.splat4 = shufflevector <4 x i16> %broadcast.splatinsert3, <4 x i16> undef, <4 x i32> zeroinitializer
%broadcast.splatinsert5 = insertelement <4 x i16> undef, i16 %y, i32 0
%broadcast.splat6 = shufflevector <4 x i16> %broadcast.splatinsert5, <4 x i16> undef, <4 x i32> zeroinitializer
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [1024 x float]* @fa, i64 0, i64 %index
%1 = bitcast float* %0 to <4 x float>*
%wide.load = load <4 x float>* %1, align 16
%2 = getelementptr inbounds [1024 x float]* @fb, i64 0, i64 %index
%3 = bitcast float* %2 to <4 x float>*
%wide.load2 = load <4 x float>* %3, align 16
%4 = fcmp olt <4 x float> %wide.load, %wide.load2
%5 = select <4 x i1> %4, <4 x i16> %broadcast.splat4, <4 x i16> %broadcast.splat6
%6 = sext <4 x i16> %5 to <4 x i32>
%7 = getelementptr inbounds [1024 x i32]* @ic, i64 0, i64 %index
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> %6, <4 x i32>* %8, align 16
%index.next = add i64 %index, 4
%9 = icmp eq i64 %index.next, 1024
br i1 %9, label %middle.block, label %vector.body, !llvm.loop !39
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example25v() #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [1024 x float]* @da, i64 0, i64 %index
%1 = bitcast float* %0 to <4 x float>*
%wide.load = load <4 x float>* %1, align 16
%2 = getelementptr inbounds [1024 x float]* @db, i64 0, i64 %index
%3 = bitcast float* %2 to <4 x float>*
%wide.load2 = load <4 x float>* %3, align 16
%4 = fcmp olt <4 x float> %wide.load, %wide.load2
%5 = getelementptr inbounds [1024 x float]* @dc, i64 0, i64 %index
%6 = bitcast float* %5 to <4 x float>*
%wide.load3 = load <4 x float>* %6, align 16
%7 = getelementptr inbounds [1024 x float]* @dd, i64 0, i64 %index
%8 = bitcast float* %7 to <4 x float>*
%wide.load4 = load <4 x float>* %8, align 16
%9 = fcmp olt <4 x float> %wide.load3, %wide.load4
%10 = and <4 x i1> %4, %9
%11 = zext <4 x i1> %10 to <4 x i32>
%12 = getelementptr inbounds [1024 x i32]* @dj, i64 0, i64 %index
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %11, <4 x i32>* %13, align 16
%index.next = add i64 %index, 4
%14 = icmp eq i64 %index.next, 1024
br i1 %14, label %middle.block, label %vector.body, !llvm.loop !40
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: nounwind uwtable
define void @_Z11init_memoryPvS_(i8* %start, i8* readnone %end) #3 {
%1 = icmp eq i8* %start, %end
br i1 %1, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %0, %.lr.ph
%state.02 = phi i32 [ %6, %.lr.ph ], [ 1, %0 ]
%.01 = phi i8* [ %8, %.lr.ph ], [ %start, %0 ]
%2 = and i32 %state.02, 255
%3 = mul nsw i32 %2, 7
%4 = and i32 %3, 255
%5 = xor i32 %4, 39
%6 = add nsw i32 %5, 1
%7 = trunc i32 %6 to i8
store i8 %7, i8* %.01, align 1, !tbaa !41
%8 = getelementptr inbounds i8* %.01, i64 1
%9 = icmp eq i8* %8, %end
br i1 %9, label %._crit_edge, label %.lr.ph
._crit_edge: ; preds = %.lr.ph, %0
ret void
}
; Function Attrs: nounwind uwtable
define void @_Z17init_memory_floatPfS_(float* %start, float* readnone %end) #3 {
%1 = icmp eq float* %start, %end
br i1 %1, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %0, %.lr.ph
%state.02 = phi float [ %4, %.lr.ph ], [ 1.000000e+00, %0 ]
%.01 = phi float* [ %5, %.lr.ph ], [ %start, %0 ]
%2 = fpext float %state.02 to double
%3 = fmul double %2, 1.100000e+00
%4 = fptrunc double %3 to float
store float %4, float* %.01, align 4, !tbaa !42
%5 = getelementptr inbounds float* %.01, i64 1
%6 = icmp eq float* %5, %end
br i1 %6, label %._crit_edge, label %.lr.ph
._crit_edge: ; preds = %.lr.ph, %0
ret void
}
; Function Attrs: nounwind readonly uwtable
define i32 @_Z13digest_memoryPvS_(i8* readonly %start, i8* readnone %end) #4 {
%1 = icmp eq i8* %start, %end
br i1 %1, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %0, %.lr.ph
%state.02 = phi i32 [ %8, %.lr.ph ], [ 1, %0 ]
%.01 = phi i8* [ %9, %.lr.ph ], [ %start, %0 ]
%2 = mul i32 %state.02, 3
%3 = load i8* %.01, align 1, !tbaa !41
%4 = zext i8 %3 to i32
%5 = xor i32 %4, %2
%6 = lshr i32 %2, 8
%7 = shl i32 %5, 8
%8 = xor i32 %7, %6
%9 = getelementptr inbounds i8* %.01, i64 1
%10 = icmp eq i8* %9, %end
br i1 %10, label %._crit_edge, label %.lr.ph
._crit_edge: ; preds = %.lr.ph, %0
%state.0.lcssa = phi i32 [ 1, %0 ], [ %8, %.lr.ph ]
ret i32 %state.0.lcssa
}
; Function Attrs: uwtable
define i32 @main(i32 %argc, i8** nocapture readnone %argv) #5 {
%results = alloca %"class.std::vector", align 8
%dummy = alloca i32, align 4
%atimer = alloca %class.Timer, align 8
%r = alloca i32, align 4
%atimer1 = alloca %class.Timer, align 8
%r3 = alloca i32, align 4
%atimer4 = alloca %class.Timer, align 8
%r6 = alloca i32, align 4
%atimer7 = alloca %class.Timer, align 8
%r9 = alloca i32, align 4
%atimer10 = alloca %class.Timer, align 8
%r12 = alloca i32, align 4
%atimer13 = alloca %class.Timer, align 8
%r15 = alloca i32, align 4
%atimer16 = alloca %class.Timer, align 8
%r18 = alloca i32, align 4
%atimer19 = alloca %class.Timer, align 8
%r21 = alloca i32, align 4
%atimer22 = alloca %class.Timer, align 8
%r24 = alloca i32, align 4
%atimer25 = alloca %class.Timer, align 8
%r27 = alloca i32, align 4
%atimer28 = alloca %class.Timer, align 8
%r30 = alloca i32, align 4
%atimer31 = alloca %class.Timer, align 8
%r33 = alloca i32, align 4
%atimer34 = alloca %class.Timer, align 8
%r36 = alloca i32, align 4
%atimer37 = alloca %class.Timer, align 8
%r39 = alloca i32, align 4
%atimer40 = alloca %class.Timer, align 8
%r42 = alloca i32, align 4
%atimer43 = alloca %class.Timer, align 8
%r45 = alloca i32, align 4
%atimer46 = alloca %class.Timer, align 8
%r48 = alloca i32, align 4
%1 = bitcast %"class.std::vector"* %results to i8*
call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 24, i32 8, i1 false) #1
store i32 0, i32* %dummy, align 4, !tbaa !5
br label %.lr.ph.i
.lr.ph.i: ; preds = %.lr.ph.i, %0
%state.02.i = phi i32 [ %6, %.lr.ph.i ], [ 1, %0 ]
%.01.i = phi i8* [ %8, %.lr.ph.i ], [ bitcast ([1024 x i32]* @ia to i8*), %0 ]
%2 = and i32 %state.02.i, 255
%3 = mul nsw i32 %2, 7
%4 = and i32 %3, 255
%5 = xor i32 %4, 39
%6 = add nsw i32 %5, 1
%7 = trunc i32 %6 to i8
store i8 %7, i8* %.01.i, align 1, !tbaa !41
%8 = getelementptr inbounds i8* %.01.i, i64 1
%9 = icmp eq i8* %8, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %9, label %.lr.ph.i54.preheader, label %.lr.ph.i
.lr.ph.i54.preheader: ; preds = %.lr.ph.i
%10 = icmp sgt i32 %argc, 1
br label %.lr.ph.i54
.lr.ph.i54: ; preds = %.lr.ph.i54.preheader, %.lr.ph.i54
%state.02.i52 = phi i32 [ %15, %.lr.ph.i54 ], [ 1, %.lr.ph.i54.preheader ]
%.01.i53 = phi i8* [ %17, %.lr.ph.i54 ], [ bitcast ([1024 x i32]* @ib to i8*), %.lr.ph.i54.preheader ]
%11 = and i32 %state.02.i52, 255
%12 = mul nsw i32 %11, 7
%13 = and i32 %12, 255
%14 = xor i32 %13, 39
%15 = add nsw i32 %14, 1
%16 = trunc i32 %15 to i8
store i8 %16, i8* %.01.i53, align 1, !tbaa !41
%17 = getelementptr inbounds i8* %.01.i53, i64 1
%18 = icmp eq i8* %17, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ib, i64 1, i64 0) to i8*)
br i1 %18, label %.lr.ph.i59, label %.lr.ph.i54
.lr.ph.i59: ; preds = %.lr.ph.i54, %.lr.ph.i59
%state.02.i57 = phi i32 [ %23, %.lr.ph.i59 ], [ 1, %.lr.ph.i54 ]
%.01.i58 = phi i8* [ %25, %.lr.ph.i59 ], [ bitcast ([1024 x i32]* @ic to i8*), %.lr.ph.i54 ]
%19 = and i32 %state.02.i57, 255
%20 = mul nsw i32 %19, 7
%21 = and i32 %20, 255
%22 = xor i32 %21, 39
%23 = add nsw i32 %22, 1
%24 = trunc i32 %23 to i8
store i8 %24, i8* %.01.i58, align 1, !tbaa !41
%25 = getelementptr inbounds i8* %.01.i58, i64 1
%26 = icmp eq i8* %25, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ic, i64 1, i64 0) to i8*)
br i1 %26, label %.lr.ph.i63, label %.lr.ph.i59
.lr.ph.i63: ; preds = %.lr.ph.i59, %.lr.ph.i63
%state.02.i61 = phi i32 [ %31, %.lr.ph.i63 ], [ 1, %.lr.ph.i59 ]
%.01.i62 = phi i8* [ %33, %.lr.ph.i63 ], [ bitcast ([1024 x i16]* @sa to i8*), %.lr.ph.i59 ]
%27 = and i32 %state.02.i61, 255
%28 = mul nsw i32 %27, 7
%29 = and i32 %28, 255
%30 = xor i32 %29, 39
%31 = add nsw i32 %30, 1
%32 = trunc i32 %31 to i8
store i8 %32, i8* %.01.i62, align 1, !tbaa !41
%33 = getelementptr inbounds i8* %.01.i62, i64 1
%34 = icmp eq i8* %33, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sa, i64 1, i64 0) to i8*)
br i1 %34, label %.lr.ph.i67, label %.lr.ph.i63
.lr.ph.i67: ; preds = %.lr.ph.i63, %.lr.ph.i67
%state.02.i65 = phi i32 [ %39, %.lr.ph.i67 ], [ 1, %.lr.ph.i63 ]
%.01.i66 = phi i8* [ %41, %.lr.ph.i67 ], [ bitcast ([1024 x i16]* @sb to i8*), %.lr.ph.i63 ]
%35 = and i32 %state.02.i65, 255
%36 = mul nsw i32 %35, 7
%37 = and i32 %36, 255
%38 = xor i32 %37, 39
%39 = add nsw i32 %38, 1
%40 = trunc i32 %39 to i8
store i8 %40, i8* %.01.i66, align 1, !tbaa !41
%41 = getelementptr inbounds i8* %.01.i66, i64 1
%42 = icmp eq i8* %41, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sb, i64 1, i64 0) to i8*)
br i1 %42, label %.lr.ph.i71, label %.lr.ph.i67
.lr.ph.i71: ; preds = %.lr.ph.i67, %.lr.ph.i71
%state.02.i69 = phi i32 [ %47, %.lr.ph.i71 ], [ 1, %.lr.ph.i67 ]
%.01.i70 = phi i8* [ %49, %.lr.ph.i71 ], [ bitcast ([1024 x i16]* @sc to i8*), %.lr.ph.i67 ]
%43 = and i32 %state.02.i69, 255
%44 = mul nsw i32 %43, 7
%45 = and i32 %44, 255
%46 = xor i32 %45, 39
%47 = add nsw i32 %46, 1
%48 = trunc i32 %47 to i8
store i8 %48, i8* %.01.i70, align 1, !tbaa !41
%49 = getelementptr inbounds i8* %.01.i70, i64 1
%50 = icmp eq i8* %49, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sc, i64 1, i64 0) to i8*)
br i1 %50, label %.lr.ph.i76, label %.lr.ph.i71
.lr.ph.i76: ; preds = %.lr.ph.i71, %.lr.ph.i76
%state.02.i74 = phi i32 [ %55, %.lr.ph.i76 ], [ 1, %.lr.ph.i71 ]
%.01.i75 = phi i8* [ %57, %.lr.ph.i76 ], [ bitcast ([2048 x i32]* @a to i8*), %.lr.ph.i71 ]
%51 = and i32 %state.02.i74, 255
%52 = mul nsw i32 %51, 7
%53 = and i32 %52, 255
%54 = xor i32 %53, 39
%55 = add nsw i32 %54, 1
%56 = trunc i32 %55 to i8
store i8 %56, i8* %.01.i75, align 1, !tbaa !41
%57 = getelementptr inbounds i8* %.01.i75, i64 1
%58 = icmp eq i8* %57, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 1, i64 0) to i8*)
br i1 %58, label %.lr.ph.i80, label %.lr.ph.i76
.lr.ph.i80: ; preds = %.lr.ph.i76, %.lr.ph.i80
%state.02.i78 = phi i32 [ %63, %.lr.ph.i80 ], [ 1, %.lr.ph.i76 ]
%.01.i79 = phi i8* [ %65, %.lr.ph.i80 ], [ bitcast ([2048 x i32]* @b to i8*), %.lr.ph.i76 ]
%59 = and i32 %state.02.i78, 255
%60 = mul nsw i32 %59, 7
%61 = and i32 %60, 255
%62 = xor i32 %61, 39
%63 = add nsw i32 %62, 1
%64 = trunc i32 %63 to i8
store i8 %64, i8* %.01.i79, align 1, !tbaa !41
%65 = getelementptr inbounds i8* %.01.i79, i64 1
%66 = icmp eq i8* %65, bitcast (i32* getelementptr inbounds ([2048 x i32]* @b, i64 1, i64 0) to i8*)
br i1 %66, label %.lr.ph.i85, label %.lr.ph.i80
.lr.ph.i85: ; preds = %.lr.ph.i80, %.lr.ph.i85
%state.02.i83 = phi i32 [ %71, %.lr.ph.i85 ], [ 1, %.lr.ph.i80 ]
%.01.i84 = phi i8* [ %73, %.lr.ph.i85 ], [ bitcast ([2048 x i32]* @c to i8*), %.lr.ph.i80 ]
%67 = and i32 %state.02.i83, 255
%68 = mul nsw i32 %67, 7
%69 = and i32 %68, 255
%70 = xor i32 %69, 39
%71 = add nsw i32 %70, 1
%72 = trunc i32 %71 to i8
store i8 %72, i8* %.01.i84, align 1, !tbaa !41
%73 = getelementptr inbounds i8* %.01.i84, i64 1
%74 = icmp eq i8* %73, bitcast (i32* getelementptr inbounds ([2048 x i32]* @c, i64 1, i64 0) to i8*)
br i1 %74, label %.lr.ph.i89, label %.lr.ph.i85
.lr.ph.i89: ; preds = %.lr.ph.i85, %.lr.ph.i89
%state.02.i87 = phi i32 [ %79, %.lr.ph.i89 ], [ 1, %.lr.ph.i85 ]
%.01.i88 = phi i8* [ %81, %.lr.ph.i89 ], [ bitcast ([1024 x i32]* @ua to i8*), %.lr.ph.i85 ]
%75 = and i32 %state.02.i87, 255
%76 = mul nsw i32 %75, 7
%77 = and i32 %76, 255
%78 = xor i32 %77, 39
%79 = add nsw i32 %78, 1
%80 = trunc i32 %79 to i8
store i8 %80, i8* %.01.i88, align 1, !tbaa !41
%81 = getelementptr inbounds i8* %.01.i88, i64 1
%82 = icmp eq i8* %81, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ua, i64 1, i64 0) to i8*)
br i1 %82, label %.lr.ph.i95, label %.lr.ph.i89
.lr.ph.i95: ; preds = %.lr.ph.i89, %.lr.ph.i95
%state.02.i93 = phi i32 [ %87, %.lr.ph.i95 ], [ 1, %.lr.ph.i89 ]
%.01.i94 = phi i8* [ %89, %.lr.ph.i95 ], [ bitcast ([1024 x i32]* @ub to i8*), %.lr.ph.i89 ]
%83 = and i32 %state.02.i93, 255
%84 = mul nsw i32 %83, 7
%85 = and i32 %84, 255
%86 = xor i32 %85, 39
%87 = add nsw i32 %86, 1
%88 = trunc i32 %87 to i8
store i8 %88, i8* %.01.i94, align 1, !tbaa !41
%89 = getelementptr inbounds i8* %.01.i94, i64 1
%90 = icmp eq i8* %89, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ub, i64 1, i64 0) to i8*)
br i1 %90, label %.lr.ph.i99, label %.lr.ph.i95
.lr.ph.i99: ; preds = %.lr.ph.i95, %.lr.ph.i99
%state.02.i97 = phi i32 [ %95, %.lr.ph.i99 ], [ 1, %.lr.ph.i95 ]
%.01.i98 = phi i8* [ %97, %.lr.ph.i99 ], [ bitcast ([1024 x i32]* @uc to i8*), %.lr.ph.i95 ]
%91 = and i32 %state.02.i97, 255
%92 = mul nsw i32 %91, 7
%93 = and i32 %92, 255
%94 = xor i32 %93, 39
%95 = add nsw i32 %94, 1
%96 = trunc i32 %95 to i8
store i8 %96, i8* %.01.i98, align 1, !tbaa !41
%97 = getelementptr inbounds i8* %.01.i98, i64 1
%98 = icmp eq i8* %97, bitcast (i32* getelementptr inbounds ([1024 x i32]* @uc, i64 1, i64 0) to i8*)
br i1 %98, label %.lr.ph.i103, label %.lr.ph.i99
.lr.ph.i103: ; preds = %.lr.ph.i99, %.lr.ph.i103
%state.02.i101 = phi i32 [ %103, %.lr.ph.i103 ], [ 1, %.lr.ph.i99 ]
%.01.i102 = phi i8* [ %105, %.lr.ph.i103 ], [ bitcast ([32 x [1024 x i32]]* @G to i8*), %.lr.ph.i99 ]
%99 = and i32 %state.02.i101, 255
%100 = mul nsw i32 %99, 7
%101 = and i32 %100, 255
%102 = xor i32 %101, 39
%103 = add nsw i32 %102, 1
%104 = trunc i32 %103 to i8
store i8 %104, i8* %.01.i102, align 1, !tbaa !41
%105 = getelementptr inbounds i8* %.01.i102, i64 1
%106 = icmp eq i8* %105, bitcast (i32* getelementptr inbounds ([32 x [1024 x i32]]* @G, i64 0, i64 1, i64 0) to i8*)
br i1 %106, label %.lr.ph.i107, label %.lr.ph.i103
.lr.ph.i107: ; preds = %.lr.ph.i103, %.lr.ph.i107
%state.02.i105 = phi float [ %109, %.lr.ph.i107 ], [ 1.000000e+00, %.lr.ph.i103 ]
%.01.i106 = phi float* [ %110, %.lr.ph.i107 ], [ getelementptr inbounds ([1024 x float]* @fa, i64 0, i64 0), %.lr.ph.i103 ]
%107 = fpext float %state.02.i105 to double
%108 = fmul double %107, 1.100000e+00
%109 = fptrunc double %108 to float
store float %109, float* %.01.i106, align 4, !tbaa !42
%110 = getelementptr inbounds float* %.01.i106, i64 1
%111 = icmp eq float* %110, getelementptr inbounds ([1024 x float]* @fa, i64 1, i64 0)
br i1 %111, label %.lr.ph.i113, label %.lr.ph.i107
.lr.ph.i113: ; preds = %.lr.ph.i107, %.lr.ph.i113
%state.02.i111 = phi float [ %114, %.lr.ph.i113 ], [ 1.000000e+00, %.lr.ph.i107 ]
%.01.i112 = phi float* [ %115, %.lr.ph.i113 ], [ getelementptr inbounds ([1024 x float]* @fb, i64 0, i64 0), %.lr.ph.i107 ]
%112 = fpext float %state.02.i111 to double
%113 = fmul double %112, 1.100000e+00
%114 = fptrunc double %113 to float
store float %114, float* %.01.i112, align 4, !tbaa !42
%115 = getelementptr inbounds float* %.01.i112, i64 1
%116 = icmp eq float* %115, getelementptr inbounds ([1024 x float]* @fb, i64 1, i64 0)
br i1 %116, label %.lr.ph.i117, label %.lr.ph.i113
.lr.ph.i117: ; preds = %.lr.ph.i113, %.lr.ph.i117
%state.02.i115 = phi float [ %119, %.lr.ph.i117 ], [ 1.000000e+00, %.lr.ph.i113 ]
%.01.i116 = phi float* [ %120, %.lr.ph.i117 ], [ getelementptr inbounds ([1024 x float]* @da, i64 0, i64 0), %.lr.ph.i113 ]
%117 = fpext float %state.02.i115 to double
%118 = fmul double %117, 1.100000e+00
%119 = fptrunc double %118 to float
store float %119, float* %.01.i116, align 4, !tbaa !42
%120 = getelementptr inbounds float* %.01.i116, i64 1
%121 = icmp eq float* %120, getelementptr inbounds ([1024 x float]* @da, i64 1, i64 0)
br i1 %121, label %.lr.ph.i121, label %.lr.ph.i117
.lr.ph.i121: ; preds = %.lr.ph.i117, %.lr.ph.i121
%state.02.i119 = phi float [ %124, %.lr.ph.i121 ], [ 1.000000e+00, %.lr.ph.i117 ]
%.01.i120 = phi float* [ %125, %.lr.ph.i121 ], [ getelementptr inbounds ([1024 x float]* @db, i64 0, i64 0), %.lr.ph.i117 ]
%122 = fpext float %state.02.i119 to double
%123 = fmul double %122, 1.100000e+00
%124 = fptrunc double %123 to float
store float %124, float* %.01.i120, align 4, !tbaa !42
%125 = getelementptr inbounds float* %.01.i120, i64 1
%126 = icmp eq float* %125, getelementptr inbounds ([1024 x float]* @db, i64 1, i64 0)
br i1 %126, label %.lr.ph.i125, label %.lr.ph.i121
.lr.ph.i125: ; preds = %.lr.ph.i121, %.lr.ph.i125
%state.02.i123 = phi float [ %129, %.lr.ph.i125 ], [ 1.000000e+00, %.lr.ph.i121 ]
%.01.i124 = phi float* [ %130, %.lr.ph.i125 ], [ getelementptr inbounds ([1024 x float]* @dc, i64 0, i64 0), %.lr.ph.i121 ]
%127 = fpext float %state.02.i123 to double
%128 = fmul double %127, 1.100000e+00
%129 = fptrunc double %128 to float
store float %129, float* %.01.i124, align 4, !tbaa !42
%130 = getelementptr inbounds float* %.01.i124, i64 1
%131 = icmp eq float* %130, getelementptr inbounds ([1024 x float]* @dc, i64 1, i64 0)
br i1 %131, label %.lr.ph.i129, label %.lr.ph.i125
.lr.ph.i129: ; preds = %.lr.ph.i125, %.lr.ph.i129
%state.02.i127 = phi float [ %134, %.lr.ph.i129 ], [ 1.000000e+00, %.lr.ph.i125 ]
%.01.i128 = phi float* [ %135, %.lr.ph.i129 ], [ getelementptr inbounds ([1024 x float]* @dd, i64 0, i64 0), %.lr.ph.i125 ]
%132 = fpext float %state.02.i127 to double
%133 = fmul double %132, 1.100000e+00
%134 = fptrunc double %133 to float
store float %134, float* %.01.i128, align 4, !tbaa !42
%135 = getelementptr inbounds float* %.01.i128, i64 1
%136 = icmp eq float* %135, getelementptr inbounds ([1024 x float]* @dd, i64 1, i64 0)
br i1 %136, label %_Z17init_memory_floatPfS_.exit130, label %.lr.ph.i129
_Z17init_memory_floatPfS_.exit130: ; preds = %.lr.ph.i129
call void @_Z8example1v()
%137 = bitcast %class.Timer* %atimer to i8*
call void @llvm.lifetime.start(i64 48, i8* %137) #1
%138 = getelementptr inbounds %class.Timer* %atimer, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str, i64 0, i64 0), i8** %138, align 8, !tbaa !44
%139 = getelementptr inbounds %class.Timer* %atimer, i64 0, i32 1
%140 = zext i1 %10 to i8
store i8 %140, i8* %139, align 8, !tbaa !49
%141 = getelementptr inbounds %class.Timer* %atimer, i64 0, i32 2
%142 = call i32 @gettimeofday(%struct.timeval* %141, %struct.timezone* null) #1
br label %143
; <label>:143 ; preds = %143, %_Z17init_memory_floatPfS_.exit130
%i.0272 = phi i32 [ 0, %_Z17init_memory_floatPfS_.exit130 ], [ %144, %143 ]
call void @_Z8example1v()
%144 = add nsw i32 %i.0272, 1
%exitcond304 = icmp eq i32 %144, 2621440
br i1 %exitcond304, label %.lr.ph.i136, label %143
.loopexit: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73, %.lr.ph
%lpad.loopexit = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %145
.nonloopexit: ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge, %663, %630
%lpad.nonloopexit = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %145
; <label>:145 ; preds = %.nonloopexit, %.loopexit
%lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.nonloopexit, %.nonloopexit ]
%146 = extractvalue { i8*, i32 } %lpad.phi, 0
%147 = extractvalue { i8*, i32 } %lpad.phi, 1
br label %689
; <label>:148 ; preds = %170
%149 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%150 = extractvalue { i8*, i32 } %149, 0
%151 = extractvalue { i8*, i32 } %149, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer)
to label %689 unwind label %697
.lr.ph.i136: ; preds = %143, %.lr.ph.i136
%state.02.i134 = phi i32 [ %158, %.lr.ph.i136 ], [ 1, %143 ]
%.01.i135 = phi i8* [ %159, %.lr.ph.i136 ], [ bitcast ([2048 x i32]* @a to i8*), %143 ]
%152 = mul i32 %state.02.i134, 3
%153 = load i8* %.01.i135, align 1, !tbaa !41
%154 = zext i8 %153 to i32
%155 = xor i32 %154, %152
%156 = lshr i32 %152, 8
%157 = shl i32 %155, 8
%158 = xor i32 %157, %156
%159 = getelementptr inbounds i8* %.01.i135, i64 1
%160 = icmp eq i8* %159, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 256) to i8*)
br i1 %160, label %_Z13digest_memoryPvS_.exit137, label %.lr.ph.i136
_Z13digest_memoryPvS_.exit137: ; preds = %.lr.ph.i136
store i32 %158, i32* %r, align 4, !tbaa !5
%161 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 1
%162 = load i32** %161, align 8, !tbaa !50
%163 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 2
%164 = load i32** %163, align 8, !tbaa !53
%165 = icmp eq i32* %162, %164
br i1 %165, label %170, label %166
; <label>:166 ; preds = %_Z13digest_memoryPvS_.exit137
%167 = icmp eq i32* %162, null
br i1 %167, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138, label %168
; <label>:168 ; preds = %166
store i32 %158, i32* %162, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138: ; preds = %168, %166
%169 = getelementptr inbounds i32* %162, i64 1
store i32* %169, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140
; <label>:170 ; preds = %_Z13digest_memoryPvS_.exit137
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %162, i32* %r)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140 unwind label %148
_ZNSt6vectorIjSaIjEE9push_backERKj.exit140: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138, %170
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer)
to label %171 unwind label %.nonloopexit
; <label>:171 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140
call void @llvm.lifetime.end(i64 48, i8* %137) #1
call void @_Z9example2aii(i32 1024, i32 2)
%172 = bitcast %class.Timer* %atimer1 to i8*
call void @llvm.lifetime.start(i64 48, i8* %172) #1
%173 = getelementptr inbounds %class.Timer* %atimer1, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str1, i64 0, i64 0), i8** %173, align 8, !tbaa !44
%174 = getelementptr inbounds %class.Timer* %atimer1, i64 0, i32 1
store i8 %140, i8* %174, align 8, !tbaa !49
%175 = getelementptr inbounds %class.Timer* %atimer1, i64 0, i32 2
%176 = call i32 @gettimeofday(%struct.timeval* %175, %struct.timezone* null) #1
br label %177
; <label>:177 ; preds = %177, %171
%i2.0271 = phi i32 [ 0, %171 ], [ %178, %177 ]
call void @_Z9example2aii(i32 1024, i32 2)
%178 = add nsw i32 %i2.0271, 1
%exitcond303 = icmp eq i32 %178, 1048576
br i1 %exitcond303, label %.lr.ph.i143, label %177
; <label>:179 ; preds = %199
%180 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%181 = extractvalue { i8*, i32 } %180, 0
%182 = extractvalue { i8*, i32 } %180, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer1)
to label %689 unwind label %697
.lr.ph.i143: ; preds = %177, %.lr.ph.i143
%state.02.i141 = phi i32 [ %189, %.lr.ph.i143 ], [ 1, %177 ]
%.01.i142 = phi i8* [ %190, %.lr.ph.i143 ], [ bitcast ([2048 x i32]* @b to i8*), %177 ]
%183 = mul i32 %state.02.i141, 3
%184 = load i8* %.01.i142, align 1, !tbaa !41
%185 = zext i8 %184 to i32
%186 = xor i32 %185, %183
%187 = lshr i32 %183, 8
%188 = shl i32 %186, 8
%189 = xor i32 %188, %187
%190 = getelementptr inbounds i8* %.01.i142, i64 1
%191 = icmp eq i8* %190, bitcast (i32* getelementptr inbounds ([2048 x i32]* @b, i64 0, i64 1024) to i8*)
br i1 %191, label %_Z13digest_memoryPvS_.exit144, label %.lr.ph.i143
_Z13digest_memoryPvS_.exit144: ; preds = %.lr.ph.i143
store i32 %189, i32* %r3, align 4, !tbaa !5
%192 = load i32** %161, align 8, !tbaa !50
%193 = load i32** %163, align 8, !tbaa !53
%194 = icmp eq i32* %192, %193
br i1 %194, label %199, label %195
; <label>:195 ; preds = %_Z13digest_memoryPvS_.exit144
%196 = icmp eq i32* %192, null
br i1 %196, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145, label %197
; <label>:197 ; preds = %195
store i32 %189, i32* %192, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145: ; preds = %197, %195
%198 = getelementptr inbounds i32* %192, i64 1
store i32* %198, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147
; <label>:199 ; preds = %_Z13digest_memoryPvS_.exit144
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %192, i32* %r3)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147 unwind label %179
_ZNSt6vectorIjSaIjEE9push_backERKj.exit147: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145, %199
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer1)
to label %200 unwind label %.nonloopexit
; <label>:200 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147
call void @llvm.lifetime.end(i64 48, i8* %172) #1
call void @_Z9example2bii(i32 1024, i32 undef)
%201 = bitcast %class.Timer* %atimer4 to i8*
call void @llvm.lifetime.start(i64 48, i8* %201) #1
%202 = getelementptr inbounds %class.Timer* %atimer4, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str2, i64 0, i64 0), i8** %202, align 8, !tbaa !44
%203 = getelementptr inbounds %class.Timer* %atimer4, i64 0, i32 1
store i8 %140, i8* %203, align 8, !tbaa !49
%204 = getelementptr inbounds %class.Timer* %atimer4, i64 0, i32 2
%205 = call i32 @gettimeofday(%struct.timeval* %204, %struct.timezone* null) #1
br label %206
; <label>:206 ; preds = %206, %200
%i5.0270 = phi i32 [ 0, %200 ], [ %207, %206 ]
call void @_Z9example2bii(i32 1024, i32 undef)
%207 = add nsw i32 %i5.0270, 1
%exitcond302 = icmp eq i32 %207, 524288
br i1 %exitcond302, label %.lr.ph.i150, label %206
; <label>:208 ; preds = %228
%209 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%210 = extractvalue { i8*, i32 } %209, 0
%211 = extractvalue { i8*, i32 } %209, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer4)
to label %689 unwind label %697
.lr.ph.i150: ; preds = %206, %.lr.ph.i150
%state.02.i148 = phi i32 [ %218, %.lr.ph.i150 ], [ 1, %206 ]
%.01.i149 = phi i8* [ %219, %.lr.ph.i150 ], [ bitcast ([2048 x i32]* @a to i8*), %206 ]
%212 = mul i32 %state.02.i148, 3
%213 = load i8* %.01.i149, align 1, !tbaa !41
%214 = zext i8 %213 to i32
%215 = xor i32 %214, %212
%216 = lshr i32 %212, 8
%217 = shl i32 %215, 8
%218 = xor i32 %217, %216
%219 = getelementptr inbounds i8* %.01.i149, i64 1
%220 = icmp eq i8* %219, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 1024) to i8*)
br i1 %220, label %_Z13digest_memoryPvS_.exit151, label %.lr.ph.i150
_Z13digest_memoryPvS_.exit151: ; preds = %.lr.ph.i150
store i32 %218, i32* %r6, align 4, !tbaa !5
%221 = load i32** %161, align 8, !tbaa !50
%222 = load i32** %163, align 8, !tbaa !53
%223 = icmp eq i32* %221, %222
br i1 %223, label %228, label %224
; <label>:224 ; preds = %_Z13digest_memoryPvS_.exit151
%225 = icmp eq i32* %221, null
br i1 %225, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152, label %226
; <label>:226 ; preds = %224
store i32 %218, i32* %221, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152: ; preds = %226, %224
%227 = getelementptr inbounds i32* %221, i64 1
store i32* %227, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154
; <label>:228 ; preds = %_Z13digest_memoryPvS_.exit151
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %221, i32* %r6)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154 unwind label %208
_ZNSt6vectorIjSaIjEE9push_backERKj.exit154: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152, %228
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer4)
to label %229 unwind label %.nonloopexit
; <label>:229 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154
call void @llvm.lifetime.end(i64 48, i8* %201) #1
call void @_Z8example3iPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%230 = bitcast %class.Timer* %atimer7 to i8*
call void @llvm.lifetime.start(i64 48, i8* %230) #1
%231 = getelementptr inbounds %class.Timer* %atimer7, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str3, i64 0, i64 0), i8** %231, align 8, !tbaa !44
%232 = getelementptr inbounds %class.Timer* %atimer7, i64 0, i32 1
store i8 %140, i8* %232, align 8, !tbaa !49
%233 = getelementptr inbounds %class.Timer* %atimer7, i64 0, i32 2
%234 = call i32 @gettimeofday(%struct.timeval* %233, %struct.timezone* null) #1
br label %235
; <label>:235 ; preds = %235, %229
%i8.0269 = phi i32 [ 0, %229 ], [ %236, %235 ]
call void @_Z8example3iPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%236 = add nsw i32 %i8.0269, 1
%exitcond301 = icmp eq i32 %236, 524288
br i1 %exitcond301, label %.lr.ph.i157, label %235
; <label>:237 ; preds = %257
%238 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%239 = extractvalue { i8*, i32 } %238, 0
%240 = extractvalue { i8*, i32 } %238, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer7)
to label %689 unwind label %697
.lr.ph.i157: ; preds = %235, %.lr.ph.i157
%state.02.i155 = phi i32 [ %247, %.lr.ph.i157 ], [ 1, %235 ]
%.01.i156 = phi i8* [ %248, %.lr.ph.i157 ], [ bitcast ([1024 x i32]* @ia to i8*), %235 ]
%241 = mul i32 %state.02.i155, 3
%242 = load i8* %.01.i156, align 1, !tbaa !41
%243 = zext i8 %242 to i32
%244 = xor i32 %243, %241
%245 = lshr i32 %241, 8
%246 = shl i32 %244, 8
%247 = xor i32 %246, %245
%248 = getelementptr inbounds i8* %.01.i156, i64 1
%249 = icmp eq i8* %248, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %249, label %_Z13digest_memoryPvS_.exit158, label %.lr.ph.i157
_Z13digest_memoryPvS_.exit158: ; preds = %.lr.ph.i157
store i32 %247, i32* %r9, align 4, !tbaa !5
%250 = load i32** %161, align 8, !tbaa !50
%251 = load i32** %163, align 8, !tbaa !53
%252 = icmp eq i32* %250, %251
br i1 %252, label %257, label %253
; <label>:253 ; preds = %_Z13digest_memoryPvS_.exit158
%254 = icmp eq i32* %250, null
br i1 %254, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159, label %255
; <label>:255 ; preds = %253
store i32 %247, i32* %250, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159: ; preds = %255, %253
%256 = getelementptr inbounds i32* %250, i64 1
store i32* %256, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161
; <label>:257 ; preds = %_Z13digest_memoryPvS_.exit158
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %250, i32* %r9)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161 unwind label %237
_ZNSt6vectorIjSaIjEE9push_backERKj.exit161: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159, %257
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer7)
to label %258 unwind label %.nonloopexit
; <label>:258 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161
call void @llvm.lifetime.end(i64 48, i8* %230) #1
call void @_Z9example4aiPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%259 = bitcast %class.Timer* %atimer10 to i8*
call void @llvm.lifetime.start(i64 48, i8* %259) #1
%260 = getelementptr inbounds %class.Timer* %atimer10, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str4, i64 0, i64 0), i8** %260, align 8, !tbaa !44
%261 = getelementptr inbounds %class.Timer* %atimer10, i64 0, i32 1
store i8 %140, i8* %261, align 8, !tbaa !49
%262 = getelementptr inbounds %class.Timer* %atimer10, i64 0, i32 2
%263 = call i32 @gettimeofday(%struct.timeval* %262, %struct.timezone* null) #1
br label %264
; <label>:264 ; preds = %264, %258
%i11.0268 = phi i32 [ 0, %258 ], [ %265, %264 ]
call void @_Z9example4aiPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%265 = add nsw i32 %i11.0268, 1
%exitcond300 = icmp eq i32 %265, 524288
br i1 %exitcond300, label %.lr.ph.i164, label %264
; <label>:266 ; preds = %286
%267 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%268 = extractvalue { i8*, i32 } %267, 0
%269 = extractvalue { i8*, i32 } %267, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer10)
to label %689 unwind label %697
.lr.ph.i164: ; preds = %264, %.lr.ph.i164
%state.02.i162 = phi i32 [ %276, %.lr.ph.i164 ], [ 1, %264 ]
%.01.i163 = phi i8* [ %277, %.lr.ph.i164 ], [ bitcast ([1024 x i32]* @ia to i8*), %264 ]
%270 = mul i32 %state.02.i162, 3
%271 = load i8* %.01.i163, align 1, !tbaa !41
%272 = zext i8 %271 to i32
%273 = xor i32 %272, %270
%274 = lshr i32 %270, 8
%275 = shl i32 %273, 8
%276 = xor i32 %275, %274
%277 = getelementptr inbounds i8* %.01.i163, i64 1
%278 = icmp eq i8* %277, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %278, label %_Z13digest_memoryPvS_.exit165, label %.lr.ph.i164
_Z13digest_memoryPvS_.exit165: ; preds = %.lr.ph.i164
store i32 %276, i32* %r12, align 4, !tbaa !5
%279 = load i32** %161, align 8, !tbaa !50
%280 = load i32** %163, align 8, !tbaa !53
%281 = icmp eq i32* %279, %280
br i1 %281, label %286, label %282
; <label>:282 ; preds = %_Z13digest_memoryPvS_.exit165
%283 = icmp eq i32* %279, null
br i1 %283, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166, label %284
; <label>:284 ; preds = %282
store i32 %276, i32* %279, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166: ; preds = %284, %282
%285 = getelementptr inbounds i32* %279, i64 1
store i32* %285, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168
; <label>:286 ; preds = %_Z13digest_memoryPvS_.exit165
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %279, i32* %r12)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168 unwind label %266
_ZNSt6vectorIjSaIjEE9push_backERKj.exit168: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166, %286
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer10)
to label %287 unwind label %.nonloopexit
; <label>:287 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168
call void @llvm.lifetime.end(i64 48, i8* %259) #1
call void @_Z9example4biPiS_(i32 1014, i32* undef, i32* undef)
%288 = bitcast %class.Timer* %atimer13 to i8*
call void @llvm.lifetime.start(i64 48, i8* %288) #1
%289 = getelementptr inbounds %class.Timer* %atimer13, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str5, i64 0, i64 0), i8** %289, align 8, !tbaa !44
%290 = getelementptr inbounds %class.Timer* %atimer13, i64 0, i32 1
store i8 %140, i8* %290, align 8, !tbaa !49
%291 = getelementptr inbounds %class.Timer* %atimer13, i64 0, i32 2
%292 = call i32 @gettimeofday(%struct.timeval* %291, %struct.timezone* null) #1
br label %293
; <label>:293 ; preds = %293, %287
%i14.0267 = phi i32 [ 0, %287 ], [ %294, %293 ]
call void @_Z9example4biPiS_(i32 1014, i32* undef, i32* undef)
%294 = add nsw i32 %i14.0267, 1
%exitcond299 = icmp eq i32 %294, 524288
br i1 %exitcond299, label %.lr.ph.i171, label %293
; <label>:295 ; preds = %315
%296 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%297 = extractvalue { i8*, i32 } %296, 0
%298 = extractvalue { i8*, i32 } %296, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer13)
to label %689 unwind label %697
.lr.ph.i171: ; preds = %293, %.lr.ph.i171
%state.02.i169 = phi i32 [ %305, %.lr.ph.i171 ], [ 1, %293 ]
%.01.i170 = phi i8* [ %306, %.lr.ph.i171 ], [ bitcast ([1024 x i32]* @ia to i8*), %293 ]
%299 = mul i32 %state.02.i169, 3
%300 = load i8* %.01.i170, align 1, !tbaa !41
%301 = zext i8 %300 to i32
%302 = xor i32 %301, %299
%303 = lshr i32 %299, 8
%304 = shl i32 %302, 8
%305 = xor i32 %304, %303
%306 = getelementptr inbounds i8* %.01.i170, i64 1
%307 = icmp eq i8* %306, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %307, label %_Z13digest_memoryPvS_.exit172, label %.lr.ph.i171
_Z13digest_memoryPvS_.exit172: ; preds = %.lr.ph.i171
store i32 %305, i32* %r15, align 4, !tbaa !5
%308 = load i32** %161, align 8, !tbaa !50
%309 = load i32** %163, align 8, !tbaa !53
%310 = icmp eq i32* %308, %309
br i1 %310, label %315, label %311
; <label>:311 ; preds = %_Z13digest_memoryPvS_.exit172
%312 = icmp eq i32* %308, null
br i1 %312, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176, label %313
; <label>:313 ; preds = %311
store i32 %305, i32* %308, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176: ; preds = %313, %311
%314 = getelementptr inbounds i32* %308, i64 1
store i32* %314, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178
; <label>:315 ; preds = %_Z13digest_memoryPvS_.exit172
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %308, i32* %r15)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178 unwind label %295
_ZNSt6vectorIjSaIjEE9push_backERKj.exit178: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176, %315
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer13)
to label %316 unwind label %.nonloopexit
; <label>:316 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178
call void @llvm.lifetime.end(i64 48, i8* %288) #1
call void @_Z9example4ciPiS_(i32 1024, i32* undef, i32* undef)
%317 = bitcast %class.Timer* %atimer16 to i8*
call void @llvm.lifetime.start(i64 48, i8* %317) #1
%318 = getelementptr inbounds %class.Timer* %atimer16, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str6, i64 0, i64 0), i8** %318, align 8, !tbaa !44
%319 = getelementptr inbounds %class.Timer* %atimer16, i64 0, i32 1
store i8 %140, i8* %319, align 8, !tbaa !49
%320 = getelementptr inbounds %class.Timer* %atimer16, i64 0, i32 2
%321 = call i32 @gettimeofday(%struct.timeval* %320, %struct.timezone* null) #1
br label %322
; <label>:322 ; preds = %322, %316
%i17.0266 = phi i32 [ 0, %316 ], [ %323, %322 ]
call void @_Z9example4ciPiS_(i32 1024, i32* undef, i32* undef)
%323 = add nsw i32 %i17.0266, 1
%exitcond298 = icmp eq i32 %323, 524288
br i1 %exitcond298, label %.lr.ph.i181, label %322
; <label>:324 ; preds = %344
%325 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%326 = extractvalue { i8*, i32 } %325, 0
%327 = extractvalue { i8*, i32 } %325, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer16)
to label %689 unwind label %697
.lr.ph.i181: ; preds = %322, %.lr.ph.i181
%state.02.i179 = phi i32 [ %334, %.lr.ph.i181 ], [ 1, %322 ]
%.01.i180 = phi i8* [ %335, %.lr.ph.i181 ], [ bitcast ([1024 x i32]* @ib to i8*), %322 ]
%328 = mul i32 %state.02.i179, 3
%329 = load i8* %.01.i180, align 1, !tbaa !41
%330 = zext i8 %329 to i32
%331 = xor i32 %330, %328
%332 = lshr i32 %328, 8
%333 = shl i32 %331, 8
%334 = xor i32 %333, %332
%335 = getelementptr inbounds i8* %.01.i180, i64 1
%336 = icmp eq i8* %335, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ib, i64 1, i64 0) to i8*)
br i1 %336, label %_Z13digest_memoryPvS_.exit182, label %.lr.ph.i181
_Z13digest_memoryPvS_.exit182: ; preds = %.lr.ph.i181
store i32 %334, i32* %r18, align 4, !tbaa !5
%337 = load i32** %161, align 8, !tbaa !50
%338 = load i32** %163, align 8, !tbaa !53
%339 = icmp eq i32* %337, %338
br i1 %339, label %344, label %340
; <label>:340 ; preds = %_Z13digest_memoryPvS_.exit182
%341 = icmp eq i32* %337, null
br i1 %341, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187, label %342
; <label>:342 ; preds = %340
store i32 %334, i32* %337, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187: ; preds = %342, %340
%343 = getelementptr inbounds i32* %337, i64 1
store i32* %343, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189
; <label>:344 ; preds = %_Z13digest_memoryPvS_.exit182
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %337, i32* %r18)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189 unwind label %324
_ZNSt6vectorIjSaIjEE9push_backERKj.exit189: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187, %344
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer16)
to label %345 unwind label %.nonloopexit
; <label>:345 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189
call void @llvm.lifetime.end(i64 48, i8* %317) #1
call void @_Z8example7i(i32 4)
%346 = bitcast %class.Timer* %atimer19 to i8*
call void @llvm.lifetime.start(i64 48, i8* %346) #1
%347 = getelementptr inbounds %class.Timer* %atimer19, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str7, i64 0, i64 0), i8** %347, align 8, !tbaa !44
%348 = getelementptr inbounds %class.Timer* %atimer19, i64 0, i32 1
store i8 %140, i8* %348, align 8, !tbaa !49
%349 = getelementptr inbounds %class.Timer* %atimer19, i64 0, i32 2
%350 = call i32 @gettimeofday(%struct.timeval* %349, %struct.timezone* null) #1
br label %351
; <label>:351 ; preds = %351, %345
%i20.0265 = phi i32 [ 0, %345 ], [ %352, %351 ]
call void @_Z8example7i(i32 4)
%352 = add nsw i32 %i20.0265, 1
%exitcond297 = icmp eq i32 %352, 1048576
br i1 %exitcond297, label %.lr.ph.i192, label %351
; <label>:353 ; preds = %373
%354 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%355 = extractvalue { i8*, i32 } %354, 0
%356 = extractvalue { i8*, i32 } %354, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer19)
to label %689 unwind label %697
.lr.ph.i192: ; preds = %351, %.lr.ph.i192
%state.02.i190 = phi i32 [ %363, %.lr.ph.i192 ], [ 1, %351 ]
%.01.i191 = phi i8* [ %364, %.lr.ph.i192 ], [ bitcast ([2048 x i32]* @a to i8*), %351 ]
%357 = mul i32 %state.02.i190, 3
%358 = load i8* %.01.i191, align 1, !tbaa !41
%359 = zext i8 %358 to i32
%360 = xor i32 %359, %357
%361 = lshr i32 %357, 8
%362 = shl i32 %360, 8
%363 = xor i32 %362, %361
%364 = getelementptr inbounds i8* %.01.i191, i64 1
%365 = icmp eq i8* %364, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 1024) to i8*)
br i1 %365, label %_Z13digest_memoryPvS_.exit193, label %.lr.ph.i192
_Z13digest_memoryPvS_.exit193: ; preds = %.lr.ph.i192
store i32 %363, i32* %r21, align 4, !tbaa !5
%366 = load i32** %161, align 8, !tbaa !50
%367 = load i32** %163, align 8, !tbaa !53
%368 = icmp eq i32* %366, %367
br i1 %368, label %373, label %369
; <label>:369 ; preds = %_Z13digest_memoryPvS_.exit193
%370 = icmp eq i32* %366, null
br i1 %370, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194, label %371
; <label>:371 ; preds = %369
store i32 %363, i32* %366, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194: ; preds = %371, %369
%372 = getelementptr inbounds i32* %366, i64 1
store i32* %372, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196
; <label>:373 ; preds = %_Z13digest_memoryPvS_.exit193
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %366, i32* %r21)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196 unwind label %353
_ZNSt6vectorIjSaIjEE9push_backERKj.exit196: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194, %373
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer19)
to label %374 unwind label %.nonloopexit
; <label>:374 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196
call void @llvm.lifetime.end(i64 48, i8* %346) #1
call void @_Z8example8i(i32 8)
%375 = bitcast %class.Timer* %atimer22 to i8*
call void @llvm.lifetime.start(i64 48, i8* %375) #1
%376 = getelementptr inbounds %class.Timer* %atimer22, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str8, i64 0, i64 0), i8** %376, align 8, !tbaa !44
%377 = getelementptr inbounds %class.Timer* %atimer22, i64 0, i32 1
store i8 %140, i8* %377, align 8, !tbaa !49
%378 = getelementptr inbounds %class.Timer* %atimer22, i64 0, i32 2
%379 = call i32 @gettimeofday(%struct.timeval* %378, %struct.timezone* null) #1
br label %380
; <label>:380 ; preds = %380, %374
%i23.0264 = phi i32 [ 0, %374 ], [ %381, %380 ]
call void @_Z8example8i(i32 8)
%381 = add nsw i32 %i23.0264, 1
%exitcond296 = icmp eq i32 %381, 65536
br i1 %exitcond296, label %.lr.ph.i199, label %380
; <label>:382 ; preds = %402
%383 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%384 = extractvalue { i8*, i32 } %383, 0
%385 = extractvalue { i8*, i32 } %383, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer22)
to label %689 unwind label %697
.lr.ph.i199: ; preds = %380, %.lr.ph.i199
%state.02.i197 = phi i32 [ %392, %.lr.ph.i199 ], [ 1, %380 ]
%.01.i198 = phi i8* [ %393, %.lr.ph.i199 ], [ bitcast ([32 x [1024 x i32]]* @G to i8*), %380 ]
%386 = mul i32 %state.02.i197, 3
%387 = load i8* %.01.i198, align 1, !tbaa !41
%388 = zext i8 %387 to i32
%389 = xor i32 %388, %386
%390 = lshr i32 %386, 8
%391 = shl i32 %389, 8
%392 = xor i32 %391, %390
%393 = getelementptr inbounds i8* %.01.i198, i64 1
%394 = icmp eq i8* %393, bitcast (i32* getelementptr inbounds ([32 x [1024 x i32]]* @G, i64 0, i64 1, i64 0) to i8*)
br i1 %394, label %_Z13digest_memoryPvS_.exit200, label %.lr.ph.i199
_Z13digest_memoryPvS_.exit200: ; preds = %.lr.ph.i199
store i32 %392, i32* %r24, align 4, !tbaa !5
%395 = load i32** %161, align 8, !tbaa !50
%396 = load i32** %163, align 8, !tbaa !53
%397 = icmp eq i32* %395, %396
br i1 %397, label %402, label %398
; <label>:398 ; preds = %_Z13digest_memoryPvS_.exit200
%399 = icmp eq i32* %395, null
br i1 %399, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201, label %400
; <label>:400 ; preds = %398
store i32 %392, i32* %395, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201: ; preds = %400, %398
%401 = getelementptr inbounds i32* %395, i64 1
store i32* %401, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203
; <label>:402 ; preds = %_Z13digest_memoryPvS_.exit200
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %395, i32* %r24)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203 unwind label %382
_ZNSt6vectorIjSaIjEE9push_backERKj.exit203: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201, %402
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer22)
to label %403 unwind label %.nonloopexit
; <label>:403 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203
call void @llvm.lifetime.end(i64 48, i8* %375) #1
call void @_Z8example9Pj(i32* %dummy)
%404 = bitcast %class.Timer* %atimer25 to i8*
call void @llvm.lifetime.start(i64 48, i8* %404) #1
%405 = getelementptr inbounds %class.Timer* %atimer25, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str9, i64 0, i64 0), i8** %405, align 8, !tbaa !44
%406 = getelementptr inbounds %class.Timer* %atimer25, i64 0, i32 1
store i8 %140, i8* %406, align 8, !tbaa !49
%407 = getelementptr inbounds %class.Timer* %atimer25, i64 0, i32 2
%408 = call i32 @gettimeofday(%struct.timeval* %407, %struct.timezone* null) #1
br label %409
; <label>:409 ; preds = %409, %403
%i26.0263 = phi i32 [ 0, %403 ], [ %410, %409 ]
call void @_Z8example9Pj(i32* %dummy)
%410 = add nsw i32 %i26.0263, 1
%exitcond295 = icmp eq i32 %410, 524288
br i1 %exitcond295, label %415, label %409
; <label>:411 ; preds = %424
%412 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%413 = extractvalue { i8*, i32 } %412, 0
%414 = extractvalue { i8*, i32 } %412, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer25)
to label %689 unwind label %697
; <label>:415 ; preds = %409
%416 = load i32* %dummy, align 4, !tbaa !5
store i32 %416, i32* %r27, align 4, !tbaa !5
%417 = load i32** %161, align 8, !tbaa !50
%418 = load i32** %163, align 8, !tbaa !53
%419 = icmp eq i32* %417, %418
br i1 %419, label %424, label %420
; <label>:420 ; preds = %415
%421 = icmp eq i32* %417, null
br i1 %421, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204, label %422
; <label>:422 ; preds = %420
store i32 %416, i32* %417, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204: ; preds = %422, %420
%423 = getelementptr inbounds i32* %417, i64 1
store i32* %423, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206
; <label>:424 ; preds = %415
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %417, i32* %r27)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206 unwind label %411
_ZNSt6vectorIjSaIjEE9push_backERKj.exit206: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204, %424
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer25)
to label %425 unwind label %.nonloopexit
; <label>:425 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206
call void @llvm.lifetime.end(i64 48, i8* %404) #1
call void @_Z10example10aPsS_S_PiS0_S0_(i16* getelementptr inbounds ([1024 x i16]* @sa, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sc, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ic, i64 0, i64 0))
%426 = bitcast %class.Timer* %atimer28 to i8*
call void @llvm.lifetime.start(i64 48, i8* %426) #1
%427 = getelementptr inbounds %class.Timer* %atimer28, i64 0, i32 0
store i8* getelementptr inbounds ([11 x i8]* @.str10, i64 0, i64 0), i8** %427, align 8, !tbaa !44
%428 = getelementptr inbounds %class.Timer* %atimer28, i64 0, i32 1
store i8 %140, i8* %428, align 8, !tbaa !49
%429 = getelementptr inbounds %class.Timer* %atimer28, i64 0, i32 2
%430 = call i32 @gettimeofday(%struct.timeval* %429, %struct.timezone* null) #1
br label %431
; <label>:431 ; preds = %431, %425
%i29.0262 = phi i32 [ 0, %425 ], [ %432, %431 ]
call void @_Z10example10aPsS_S_PiS0_S0_(i16* getelementptr inbounds ([1024 x i16]* @sa, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sc, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ic, i64 0, i64 0))
%432 = add nsw i32 %i29.0262, 1
%exitcond294 = icmp eq i32 %432, 524288
br i1 %exitcond294, label %.lr.ph.i209, label %431
; <label>:433 ; preds = %463
%434 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%435 = extractvalue { i8*, i32 } %434, 0
%436 = extractvalue { i8*, i32 } %434, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer28)
to label %689 unwind label %697
.lr.ph.i209: ; preds = %431, %.lr.ph.i209
%state.02.i207 = phi i32 [ %443, %.lr.ph.i209 ], [ 1, %431 ]
%.01.i208 = phi i8* [ %444, %.lr.ph.i209 ], [ bitcast ([1024 x i32]* @ia to i8*), %431 ]
%437 = mul i32 %state.02.i207, 3
%438 = load i8* %.01.i208, align 1, !tbaa !41
%439 = zext i8 %438 to i32
%440 = xor i32 %439, %437
%441 = lshr i32 %437, 8
%442 = shl i32 %440, 8
%443 = xor i32 %442, %441
%444 = getelementptr inbounds i8* %.01.i208, i64 1
%445 = icmp eq i8* %444, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %445, label %.lr.ph.i213, label %.lr.ph.i209
.lr.ph.i213: ; preds = %.lr.ph.i209, %.lr.ph.i213
%state.02.i211 = phi i32 [ %452, %.lr.ph.i213 ], [ 1, %.lr.ph.i209 ]
%.01.i212 = phi i8* [ %453, %.lr.ph.i213 ], [ bitcast ([1024 x i16]* @sa to i8*), %.lr.ph.i209 ]
%446 = mul i32 %state.02.i211, 3
%447 = load i8* %.01.i212, align 1, !tbaa !41
%448 = zext i8 %447 to i32
%449 = xor i32 %448, %446
%450 = lshr i32 %446, 8
%451 = shl i32 %449, 8
%452 = xor i32 %451, %450
%453 = getelementptr inbounds i8* %.01.i212, i64 1
%454 = icmp eq i8* %453, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sa, i64 1, i64 0) to i8*)
br i1 %454, label %_Z13digest_memoryPvS_.exit214, label %.lr.ph.i213
_Z13digest_memoryPvS_.exit214: ; preds = %.lr.ph.i213
%455 = add i32 %452, %443
store i32 %455, i32* %r30, align 4, !tbaa !5
%456 = load i32** %161, align 8, !tbaa !50
%457 = load i32** %163, align 8, !tbaa !53
%458 = icmp eq i32* %456, %457
br i1 %458, label %463, label %459
; <label>:459 ; preds = %_Z13digest_memoryPvS_.exit214
%460 = icmp eq i32* %456, null
br i1 %460, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215, label %461
; <label>:461 ; preds = %459
store i32 %455, i32* %456, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215: ; preds = %461, %459
%462 = getelementptr inbounds i32* %456, i64 1
store i32* %462, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217
; <label>:463 ; preds = %_Z13digest_memoryPvS_.exit214
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %456, i32* %r30)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217 unwind label %433
_ZNSt6vectorIjSaIjEE9push_backERKj.exit217: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215, %463
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer28)
to label %464 unwind label %.nonloopexit
; <label>:464 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217
call void @llvm.lifetime.end(i64 48, i8* %426) #1
call void @_Z10example10bPsS_S_PiS0_S0_(i16* undef, i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* undef, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* undef, i32* undef)
%465 = bitcast %class.Timer* %atimer31 to i8*
call void @llvm.lifetime.start(i64 48, i8* %465) #1
%466 = getelementptr inbounds %class.Timer* %atimer31, i64 0, i32 0
store i8* getelementptr inbounds ([11 x i8]* @.str11, i64 0, i64 0), i8** %466, align 8, !tbaa !44
%467 = getelementptr inbounds %class.Timer* %atimer31, i64 0, i32 1
store i8 %140, i8* %467, align 8, !tbaa !49
%468 = getelementptr inbounds %class.Timer* %atimer31, i64 0, i32 2
%469 = call i32 @gettimeofday(%struct.timeval* %468, %struct.timezone* null) #1
br label %470
; <label>:470 ; preds = %470, %464
%i32.0261 = phi i32 [ 0, %464 ], [ %471, %470 ]
call void @_Z10example10bPsS_S_PiS0_S0_(i16* undef, i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* undef, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* undef, i32* undef)
%471 = add nsw i32 %i32.0261, 1
%exitcond293 = icmp eq i32 %471, 1048576
br i1 %exitcond293, label %.lr.ph.i220, label %470
; <label>:472 ; preds = %492
%473 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%474 = extractvalue { i8*, i32 } %473, 0
%475 = extractvalue { i8*, i32 } %473, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer31)
to label %689 unwind label %697
.lr.ph.i220: ; preds = %470, %.lr.ph.i220
%state.02.i218 = phi i32 [ %482, %.lr.ph.i220 ], [ 1, %470 ]
%.01.i219 = phi i8* [ %483, %.lr.ph.i220 ], [ bitcast ([1024 x i32]* @ia to i8*), %470 ]
%476 = mul i32 %state.02.i218, 3
%477 = load i8* %.01.i219, align 1, !tbaa !41
%478 = zext i8 %477 to i32
%479 = xor i32 %478, %476
%480 = lshr i32 %476, 8
%481 = shl i32 %479, 8
%482 = xor i32 %481, %480
%483 = getelementptr inbounds i8* %.01.i219, i64 1
%484 = icmp eq i8* %483, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %484, label %_Z13digest_memoryPvS_.exit221, label %.lr.ph.i220
_Z13digest_memoryPvS_.exit221: ; preds = %.lr.ph.i220
store i32 %482, i32* %r33, align 4, !tbaa !5
%485 = load i32** %161, align 8, !tbaa !50
%486 = load i32** %163, align 8, !tbaa !53
%487 = icmp eq i32* %485, %486
br i1 %487, label %492, label %488
; <label>:488 ; preds = %_Z13digest_memoryPvS_.exit221
%489 = icmp eq i32* %485, null
br i1 %489, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225, label %490
; <label>:490 ; preds = %488
store i32 %482, i32* %485, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225: ; preds = %490, %488
%491 = getelementptr inbounds i32* %485, i64 1
store i32* %491, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227
; <label>:492 ; preds = %_Z13digest_memoryPvS_.exit221
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %485, i32* %r33)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227 unwind label %472
_ZNSt6vectorIjSaIjEE9push_backERKj.exit227: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225, %492
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer31)
to label %493 unwind label %.nonloopexit
; <label>:493 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227
call void @llvm.lifetime.end(i64 48, i8* %465) #1
call void @_Z9example11v()
%494 = bitcast %class.Timer* %atimer34 to i8*
call void @llvm.lifetime.start(i64 48, i8* %494) #1
%495 = getelementptr inbounds %class.Timer* %atimer34, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str12, i64 0, i64 0), i8** %495, align 8, !tbaa !44
%496 = getelementptr inbounds %class.Timer* %atimer34, i64 0, i32 1
store i8 %140, i8* %496, align 8, !tbaa !49
%497 = getelementptr inbounds %class.Timer* %atimer34, i64 0, i32 2
%498 = call i32 @gettimeofday(%struct.timeval* %497, %struct.timezone* null) #1
br label %499
; <label>:499 ; preds = %499, %493
%i35.0260 = phi i32 [ 0, %493 ], [ %500, %499 ]
call void @_Z9example11v()
%500 = add nsw i32 %i35.0260, 1
%exitcond292 = icmp eq i32 %500, 524288
br i1 %exitcond292, label %.lr.ph.i230, label %499
; <label>:501 ; preds = %521
%502 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%503 = extractvalue { i8*, i32 } %502, 0
%504 = extractvalue { i8*, i32 } %502, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer34)
to label %689 unwind label %697
.lr.ph.i230: ; preds = %499, %.lr.ph.i230
%state.02.i228 = phi i32 [ %511, %.lr.ph.i230 ], [ 1, %499 ]
%.01.i229 = phi i8* [ %512, %.lr.ph.i230 ], [ bitcast ([2048 x i32]* @d to i8*), %499 ]
%505 = mul i32 %state.02.i228, 3
%506 = load i8* %.01.i229, align 1, !tbaa !41
%507 = zext i8 %506 to i32
%508 = xor i32 %507, %505
%509 = lshr i32 %505, 8
%510 = shl i32 %508, 8
%511 = xor i32 %510, %509
%512 = getelementptr inbounds i8* %.01.i229, i64 1
%513 = icmp eq i8* %512, bitcast (i32* getelementptr inbounds ([2048 x i32]* @d, i64 0, i64 1024) to i8*)
br i1 %513, label %_Z13digest_memoryPvS_.exit231, label %.lr.ph.i230
_Z13digest_memoryPvS_.exit231: ; preds = %.lr.ph.i230
store i32 %511, i32* %r36, align 4, !tbaa !5
%514 = load i32** %161, align 8, !tbaa !50
%515 = load i32** %163, align 8, !tbaa !53
%516 = icmp eq i32* %514, %515
br i1 %516, label %521, label %517
; <label>:517 ; preds = %_Z13digest_memoryPvS_.exit231
%518 = icmp eq i32* %514, null
br i1 %518, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236, label %519
; <label>:519 ; preds = %517
store i32 %511, i32* %514, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236: ; preds = %519, %517
%520 = getelementptr inbounds i32* %514, i64 1
store i32* %520, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238
; <label>:521 ; preds = %_Z13digest_memoryPvS_.exit231
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %514, i32* %r36)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238 unwind label %501
_ZNSt6vectorIjSaIjEE9push_backERKj.exit238: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236, %521
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer34)
to label %522 unwind label %.nonloopexit
; <label>:522 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238
call void @llvm.lifetime.end(i64 48, i8* %494) #1
call void @_Z9example12v()
%523 = bitcast %class.Timer* %atimer37 to i8*
call void @llvm.lifetime.start(i64 48, i8* %523) #1
%524 = getelementptr inbounds %class.Timer* %atimer37, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str13, i64 0, i64 0), i8** %524, align 8, !tbaa !44
%525 = getelementptr inbounds %class.Timer* %atimer37, i64 0, i32 1
store i8 %140, i8* %525, align 8, !tbaa !49
%526 = getelementptr inbounds %class.Timer* %atimer37, i64 0, i32 2
%527 = call i32 @gettimeofday(%struct.timeval* %526, %struct.timezone* null) #1
br label %528
; <label>:528 ; preds = %528, %522
%i38.0259 = phi i32 [ 0, %522 ], [ %529, %528 ]
call void @_Z9example12v()
%529 = add nsw i32 %i38.0259, 1
%exitcond291 = icmp eq i32 %529, 1048576
br i1 %exitcond291, label %.lr.ph.i234, label %528
; <label>:530 ; preds = %550
%531 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%532 = extractvalue { i8*, i32 } %531, 0
%533 = extractvalue { i8*, i32 } %531, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer37)
to label %689 unwind label %697
.lr.ph.i234: ; preds = %528, %.lr.ph.i234
%state.02.i232 = phi i32 [ %540, %.lr.ph.i234 ], [ 1, %528 ]
%.01.i233 = phi i8* [ %541, %.lr.ph.i234 ], [ bitcast ([2048 x i32]* @a to i8*), %528 ]
%534 = mul i32 %state.02.i232, 3
%535 = load i8* %.01.i233, align 1, !tbaa !41
%536 = zext i8 %535 to i32
%537 = xor i32 %536, %534
%538 = lshr i32 %534, 8
%539 = shl i32 %537, 8
%540 = xor i32 %539, %538
%541 = getelementptr inbounds i8* %.01.i233, i64 1
%542 = icmp eq i8* %541, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 1024) to i8*)
br i1 %542, label %_Z13digest_memoryPvS_.exit235, label %.lr.ph.i234
_Z13digest_memoryPvS_.exit235: ; preds = %.lr.ph.i234
store i32 %540, i32* %r39, align 4, !tbaa !5
%543 = load i32** %161, align 8, !tbaa !50
%544 = load i32** %163, align 8, !tbaa !53
%545 = icmp eq i32* %543, %544
br i1 %545, label %550, label %546
; <label>:546 ; preds = %_Z13digest_memoryPvS_.exit235
%547 = icmp eq i32* %543, null
br i1 %547, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222, label %548
; <label>:548 ; preds = %546
store i32 %540, i32* %543, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222: ; preds = %548, %546
%549 = getelementptr inbounds i32* %543, i64 1
store i32* %549, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224
; <label>:550 ; preds = %_Z13digest_memoryPvS_.exit235
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %543, i32* %r39)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224 unwind label %530
_ZNSt6vectorIjSaIjEE9push_backERKj.exit224: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222, %550
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer37)
to label %551 unwind label %.nonloopexit
; <label>:551 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224
call void @llvm.lifetime.end(i64 48, i8* %523) #1
call void @_Z9example23PtPj(i16* getelementptr inbounds ([1024 x i16]* @usa, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ua, i64 0, i64 0))
%552 = bitcast %class.Timer* %atimer40 to i8*
call void @llvm.lifetime.start(i64 48, i8* %552) #1
%553 = getelementptr inbounds %class.Timer* %atimer40, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str14, i64 0, i64 0), i8** %553, align 8, !tbaa !44
%554 = getelementptr inbounds %class.Timer* %atimer40, i64 0, i32 1
store i8 %140, i8* %554, align 8, !tbaa !49
%555 = getelementptr inbounds %class.Timer* %atimer40, i64 0, i32 2
%556 = call i32 @gettimeofday(%struct.timeval* %555, %struct.timezone* null) #1
br label %557
; <label>:557 ; preds = %557, %551
%i41.0258 = phi i32 [ 0, %551 ], [ %558, %557 ]
call void @_Z9example23PtPj(i16* getelementptr inbounds ([1024 x i16]* @usa, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ua, i64 0, i64 0))
%558 = add nsw i32 %i41.0258, 1
%exitcond290 = icmp eq i32 %558, 2097152
br i1 %exitcond290, label %.lr.ph.i185, label %557
; <label>:559 ; preds = %579
%560 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%561 = extractvalue { i8*, i32 } %560, 0
%562 = extractvalue { i8*, i32 } %560, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer40)
to label %689 unwind label %697
.lr.ph.i185: ; preds = %557, %.lr.ph.i185
%state.02.i183 = phi i32 [ %569, %.lr.ph.i185 ], [ 1, %557 ]
%.01.i184 = phi i8* [ %570, %.lr.ph.i185 ], [ bitcast ([1024 x i16]* @usa to i8*), %557 ]
%563 = mul i32 %state.02.i183, 3
%564 = load i8* %.01.i184, align 1, !tbaa !41
%565 = zext i8 %564 to i32
%566 = xor i32 %565, %563
%567 = lshr i32 %563, 8
%568 = shl i32 %566, 8
%569 = xor i32 %568, %567
%570 = getelementptr inbounds i8* %.01.i184, i64 1
%571 = icmp eq i8* %570, bitcast (i16* getelementptr inbounds ([1024 x i16]* @usa, i64 0, i64 256) to i8*)
br i1 %571, label %_Z13digest_memoryPvS_.exit186, label %.lr.ph.i185
_Z13digest_memoryPvS_.exit186: ; preds = %.lr.ph.i185
store i32 %569, i32* %r42, align 4, !tbaa !5
%572 = load i32** %161, align 8, !tbaa !50
%573 = load i32** %163, align 8, !tbaa !53
%574 = icmp eq i32* %572, %573
br i1 %574, label %579, label %575
; <label>:575 ; preds = %_Z13digest_memoryPvS_.exit186
%576 = icmp eq i32* %572, null
br i1 %576, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173, label %577
; <label>:577 ; preds = %575
store i32 %569, i32* %572, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173: ; preds = %577, %575
%578 = getelementptr inbounds i32* %572, i64 1
store i32* %578, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175
; <label>:579 ; preds = %_Z13digest_memoryPvS_.exit186
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %572, i32* %r42)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175 unwind label %559
_ZNSt6vectorIjSaIjEE9push_backERKj.exit175: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173, %579
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer40)
to label %580 unwind label %.nonloopexit
; <label>:580 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175
call void @llvm.lifetime.end(i64 48, i8* %552) #1
call void @_Z9example24ss(i16 signext 2, i16 signext 4)
%581 = bitcast %class.Timer* %atimer43 to i8*
call void @llvm.lifetime.start(i64 48, i8* %581) #1
%582 = getelementptr inbounds %class.Timer* %atimer43, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str15, i64 0, i64 0), i8** %582, align 8, !tbaa !44
%583 = getelementptr inbounds %class.Timer* %atimer43, i64 0, i32 1
store i8 %140, i8* %583, align 8, !tbaa !49
%584 = getelementptr inbounds %class.Timer* %atimer43, i64 0, i32 2
%585 = call i32 @gettimeofday(%struct.timeval* %584, %struct.timezone* null) #1
br label %586
; <label>:586 ; preds = %586, %580
%i44.0257 = phi i32 [ 0, %580 ], [ %587, %586 ]
call void @_Z9example24ss(i16 signext 2, i16 signext 4)
%587 = add nsw i32 %i44.0257, 1
%exitcond289 = icmp eq i32 %587, 524288
br i1 %exitcond289, label %592, label %586
; <label>:588 ; preds = %600
%589 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%590 = extractvalue { i8*, i32 } %589, 0
%591 = extractvalue { i8*, i32 } %589, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer43)
to label %689 unwind label %697
; <label>:592 ; preds = %586
store i32 0, i32* %r45, align 4, !tbaa !5
%593 = load i32** %161, align 8, !tbaa !50
%594 = load i32** %163, align 8, !tbaa !53
%595 = icmp eq i32* %593, %594
br i1 %595, label %600, label %596
; <label>:596 ; preds = %592
%597 = icmp eq i32* %593, null
br i1 %597, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131, label %598
; <label>:598 ; preds = %596
store i32 0, i32* %593, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131: ; preds = %598, %596
%599 = getelementptr inbounds i32* %593, i64 1
store i32* %599, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133
; <label>:600 ; preds = %592
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %593, i32* %r45)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133 unwind label %588
_ZNSt6vectorIjSaIjEE9push_backERKj.exit133: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131, %600
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer43)
to label %601 unwind label %.nonloopexit
; <label>:601 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133
call void @llvm.lifetime.end(i64 48, i8* %581) #1
call void @_Z9example25v()
%602 = bitcast %class.Timer* %atimer46 to i8*
call void @llvm.lifetime.start(i64 48, i8* %602) #1
%603 = getelementptr inbounds %class.Timer* %atimer46, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str16, i64 0, i64 0), i8** %603, align 8, !tbaa !44
%604 = getelementptr inbounds %class.Timer* %atimer46, i64 0, i32 1
store i8 %140, i8* %604, align 8, !tbaa !49
%605 = getelementptr inbounds %class.Timer* %atimer46, i64 0, i32 2
%606 = call i32 @gettimeofday(%struct.timeval* %605, %struct.timezone* null) #1
br label %607
; <label>:607 ; preds = %607, %601
%i47.0256 = phi i32 [ 0, %601 ], [ %608, %607 ]
call void @_Z9example25v()
%608 = add nsw i32 %i47.0256, 1
%exitcond = icmp eq i32 %608, 524288
br i1 %exitcond, label %.lr.ph.i110, label %607
; <label>:609 ; preds = %629
%610 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%611 = extractvalue { i8*, i32 } %610, 0
%612 = extractvalue { i8*, i32 } %610, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer46)
to label %689 unwind label %697
.lr.ph.i110: ; preds = %607, %.lr.ph.i110
%state.02.i108 = phi i32 [ %619, %.lr.ph.i110 ], [ 1, %607 ]
%.01.i109 = phi i8* [ %620, %.lr.ph.i110 ], [ bitcast ([1024 x i32]* @dj to i8*), %607 ]
%613 = mul i32 %state.02.i108, 3
%614 = load i8* %.01.i109, align 1, !tbaa !41
%615 = zext i8 %614 to i32
%616 = xor i32 %615, %613
%617 = lshr i32 %613, 8
%618 = shl i32 %616, 8
%619 = xor i32 %618, %617
%620 = getelementptr inbounds i8* %.01.i109, i64 1
%621 = icmp eq i8* %620, bitcast (i32* getelementptr inbounds ([1024 x i32]* @dj, i64 1, i64 0) to i8*)
br i1 %621, label %_Z13digest_memoryPvS_.exit, label %.lr.ph.i110
_Z13digest_memoryPvS_.exit: ; preds = %.lr.ph.i110
store i32 %619, i32* %r48, align 4, !tbaa !5
%622 = load i32** %161, align 8, !tbaa !50
%623 = load i32** %163, align 8, !tbaa !53
%624 = icmp eq i32* %622, %623
br i1 %624, label %629, label %625
; <label>:625 ; preds = %_Z13digest_memoryPvS_.exit
%626 = icmp eq i32* %622, null
br i1 %626, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i, label %627
; <label>:627 ; preds = %625
store i32 %619, i32* %622, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i: ; preds = %627, %625
%628 = getelementptr inbounds i32* %622, i64 1
store i32* %628, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit
; <label>:629 ; preds = %_Z13digest_memoryPvS_.exit
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %622, i32* %r48)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit unwind label %609
_ZNSt6vectorIjSaIjEE9push_backERKj.exit: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i, %629
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer46)
to label %630 unwind label %.nonloopexit
; <label>:630 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit
call void @llvm.lifetime.end(i64 48, i8* %602) #1
%631 = load i8** bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8**), align 8, !tbaa !54
%632 = getelementptr i8* %631, i64 -24
%633 = bitcast i8* %632 to i64*
%634 = load i64* %633, align 8
%.sum = add i64 %634, 24
%635 = getelementptr inbounds i8* bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8*), i64 %.sum
%636 = bitcast i8* %635 to i32*
%637 = load i32* %636, align 4, !tbaa !56
%638 = and i32 %637, -75
%639 = or i32 %638, 8
store i32 %639, i32* %636, align 4, !tbaa !56
%640 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([11 x i8]* @.str17, i64 0, i64 0), i64 10)
to label %641 unwind label %.nonloopexit
; <label>:641 ; preds = %630
%642 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 0
%643 = load i32** %642, align 8, !tbaa !27
%644 = load i32** %161, align 8, !tbaa !27
%645 = icmp eq i32* %643, %644
br i1 %645, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, label %.lr.ph.i91.preheader
.lr.ph.i91.preheader: ; preds = %641
%646 = ptrtoint i32* %643 to i64
%scevgep = getelementptr i32* %644, i64 -1
%647 = ptrtoint i32* %scevgep to i64
%648 = sub i64 %647, %646
%649 = lshr i64 %648, 2
%650 = add i64 %649, 1
%end.idx = add i64 %649, 1
%n.vec = and i64 %650, 9223372036854775800
%cmp.zero = icmp eq i64 %n.vec, 0
%ptr.ind.end = getelementptr i32* %643, i64 %n.vec
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.i91.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.i91.preheader ]
%vec.phi = phi <4 x i32> [ %654, %vector.body ], [ zeroinitializer, %.lr.ph.i91.preheader ]
%vec.phi323 = phi <4 x i32> [ %655, %vector.body ], [ zeroinitializer, %.lr.ph.i91.preheader ]
%next.gep = getelementptr i32* %643, i64 %index
%651 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>* %651, align 4
%next.gep.sum357 = or i64 %index, 4
%652 = getelementptr i32* %643, i64 %next.gep.sum357
%653 = bitcast i32* %652 to <4 x i32>*
%wide.load345 = load <4 x i32>* %653, align 4
%654 = add <4 x i32> %wide.load, %vec.phi
%655 = add <4 x i32> %wide.load345, %vec.phi323
%index.next = add i64 %index, 8
%656 = icmp eq i64 %index.next, %n.vec
br i1 %656, label %middle.block, label %vector.body, !llvm.loop !58
middle.block: ; preds = %vector.body, %.lr.ph.i91.preheader
%resume.val = phi i32* [ %643, %.lr.ph.i91.preheader ], [ %ptr.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph.i91.preheader ], [ %n.vec, %vector.body ]
%rdx.vec.exit.phi = phi <4 x i32> [ zeroinitializer, %.lr.ph.i91.preheader ], [ %654, %vector.body ]
%rdx.vec.exit.phi346 = phi <4 x i32> [ zeroinitializer, %.lr.ph.i91.preheader ], [ %655, %vector.body ]
%bin.rdx = add <4 x i32> %rdx.vec.exit.phi346, %rdx.vec.exit.phi
%rdx.shuf = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx347 = add <4 x i32> %bin.rdx, %rdx.shuf
%rdx.shuf348 = shufflevector <4 x i32> %bin.rdx347, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx349 = add <4 x i32> %bin.rdx347, %rdx.shuf348
%657 = extractelement <4 x i32> %bin.rdx349, i32 0
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, label %.lr.ph.i91
.lr.ph.i91: ; preds = %middle.block, %.lr.ph.i91
%.03.i = phi i32 [ %659, %.lr.ph.i91 ], [ %657, %middle.block ]
%__first.coerce12.i = phi i32* [ %660, %.lr.ph.i91 ], [ %resume.val, %middle.block ]
%658 = load i32* %__first.coerce12.i, align 4, !tbaa !5
%659 = add i32 %658, %.03.i
%660 = getelementptr inbounds i32* %__first.coerce12.i, i64 1
%661 = icmp eq i32* %660, %644
br i1 %661, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, label %.lr.ph.i91, !llvm.loop !59
_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit: ; preds = %.lr.ph.i91, %middle.block, %641
%.0.lcssa.i = phi i32 [ 0, %641 ], [ %659, %.lr.ph.i91 ], [ %657, %middle.block ]
%662 = invoke %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* @_ZSt4cout, i32 %.0.lcssa.i)
to label %663 unwind label %.nonloopexit
; <label>:663 ; preds = %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit
%664 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* %662, i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0), i64 2)
to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader unwind label %.nonloopexit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader: ; preds = %663
%665 = load i32** %161, align 8, !tbaa !50
%666 = load i32** %642, align 8, !tbaa !60
%667 = icmp eq i32* %665, %666
br i1 %667, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge, label %.lr.ph
.lr.ph: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader, %_ZNSolsEj.exit
%668 = phi i64 [ %676, %_ZNSolsEj.exit ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader ]
%i49.0255 = phi i32 [ %675, %_ZNSolsEj.exit ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader ]
%669 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([2 x i8]* @.str19, i64 0, i64 0), i64 1)
to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73 unwind label %.loopexit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73: ; preds = %.lr.ph
%670 = load i32** %642, align 8, !tbaa !60
%671 = getelementptr inbounds i32* %670, i64 %668
%672 = load i32* %671, align 4, !tbaa !5
%673 = zext i32 %672 to i64
%674 = invoke %"class.std::basic_ostream"* @_ZNSo9_M_insertImEERSoT_(%"class.std::basic_ostream"* @_ZSt4cout, i64 %673)
to label %_ZNSolsEj.exit unwind label %.loopexit
_ZNSolsEj.exit: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73
%675 = add i32 %i49.0255, 1
%676 = zext i32 %675 to i64
%677 = load i32** %161, align 8, !tbaa !50
%678 = load i32** %642, align 8, !tbaa !60
%679 = ptrtoint i32* %677 to i64
%680 = ptrtoint i32* %678 to i64
%681 = sub i64 %679, %680
%682 = ashr exact i64 %681, 2
%683 = icmp ult i64 %676, %682
br i1 %683, label %.lr.ph, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge: ; preds = %_ZNSolsEj.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader
%684 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0), i64 1)
to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit unwind label %.nonloopexit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge
%685 = load i32** %642, align 8, !tbaa !60
%686 = icmp eq i32* %685, null
br i1 %686, label %_ZNSt6vectorIjSaIjEED2Ev.exit56, label %687
; <label>:687 ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
%688 = bitcast i32* %685 to i8*
call void @_ZdlPv(i8* %688) #1
br label %_ZNSt6vectorIjSaIjEED2Ev.exit56
_ZNSt6vectorIjSaIjEED2Ev.exit56: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %687
ret i32 0
; <label>:689 ; preds = %609, %588, %559, %530, %501, %472, %433, %411, %382, %353, %324, %295, %266, %237, %208, %179, %148, %145
%.051 = phi i32 [ %147, %145 ], [ %612, %609 ], [ %591, %588 ], [ %562, %559 ], [ %533, %530 ], [ %504, %501 ], [ %475, %472 ], [ %436, %433 ], [ %414, %411 ], [ %385, %382 ], [ %356, %353 ], [ %327, %324 ], [ %298, %295 ], [ %269, %266 ], [ %240, %237 ], [ %211, %208 ], [ %182, %179 ], [ %151, %148 ]
%.0 = phi i8* [ %146, %145 ], [ %611, %609 ], [ %590, %588 ], [ %561, %559 ], [ %532, %530 ], [ %503, %501 ], [ %474, %472 ], [ %435, %433 ], [ %413, %411 ], [ %384, %382 ], [ %355, %353 ], [ %326, %324 ], [ %297, %295 ], [ %268, %266 ], [ %239, %237 ], [ %210, %208 ], [ %181, %179 ], [ %150, %148 ]
%690 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 0
%691 = load i32** %690, align 8, !tbaa !60
%692 = icmp eq i32* %691, null
br i1 %692, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %693
; <label>:693 ; preds = %689
%694 = bitcast i32* %691 to i8*
call void @_ZdlPv(i8* %694) #1
br label %_ZNSt6vectorIjSaIjEED2Ev.exit
_ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %693, %689
%695 = insertvalue { i8*, i32 } undef, i8* %.0, 0
%696 = insertvalue { i8*, i32 } %695, i32 %.051, 1
resume { i8*, i32 } %696
; <label>:697 ; preds = %609, %588, %559, %530, %501, %472, %433, %411, %382, %353, %324, %295, %266, %237, %208, %179, %148
%698 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
catch i8* null
%699 = extractvalue { i8*, i32 } %698, 0
call void @__clang_call_terminate(i8* %699) #13
unreachable
}
declare i32 @__gxx_personality_v0(...)
; Function Attrs: nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #1
; Function Attrs: uwtable
define linkonce_odr void @_ZN5TimerD2Ev(%class.Timer* nocapture %this) unnamed_addr #5 align 2 {
%1 = getelementptr inbounds %class.Timer* %this, i64 0, i32 3
%2 = tail call i32 @gettimeofday(%struct.timeval* %1, %struct.timezone* null) #1
%3 = getelementptr inbounds %class.Timer* %this, i64 0, i32 1
%4 = load i8* %3, align 1, !tbaa !49, !range !61
%5 = icmp eq i8 %4, 0
br i1 %5, label %44, label %6
; <label>:6 ; preds = %0
%7 = getelementptr inbounds %class.Timer* %this, i64 0, i32 2, i32 1
%8 = getelementptr inbounds %class.Timer* %this, i64 0, i32 3, i32 1
%9 = getelementptr inbounds %class.Timer* %this, i64 0, i32 2, i32 0
%10 = getelementptr inbounds %struct.timeval* %1, i64 0, i32 0
%11 = load i64* %7, align 8, !tbaa !62
%12 = load i64* %8, align 8, !tbaa !63
%13 = load i64* %9, align 8, !tbaa !64
%14 = load i64* %10, align 8, !tbaa !65
%15 = sub nsw i64 %12, %11
%16 = sub nsw i64 %14, %13
%17 = sitofp i64 %15 to double
%18 = mul nsw i64 %16, 1000
%19 = fdiv double %17, 1.000000e+03
%20 = sitofp i64 %18 to double
%21 = fadd double %19, %20
%22 = fadd double %21, 5.000000e-01
%23 = fptosi double %22 to i64
%24 = getelementptr inbounds %class.Timer* %this, i64 0, i32 0
%25 = load i8** %24, align 8, !tbaa !44
%26 = icmp eq i8* %25, null
br i1 %26, label %27, label %38
; <label>:27 ; preds = %6
%28 = load i8** bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8**), align 8, !tbaa !54
%29 = getelementptr i8* %28, i64 -24
%30 = bitcast i8* %29 to i64*
%31 = load i64* %30, align 8
%32 = getelementptr inbounds i8* bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8*), i64 %31
%33 = bitcast i8* %32 to %"class.std::basic_ios"*
%.sum.i = add i64 %31, 32
%34 = getelementptr inbounds i8* bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8*), i64 %.sum.i
%35 = bitcast i8* %34 to i32*
%36 = load i32* %35, align 4, !tbaa !66
%37 = or i32 %36, 1
tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"* %33, i32 %37)
br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
; <label>:38 ; preds = %6
%39 = tail call i64 @strlen(i8* %25) #1
%40 = tail call %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* %25, i64 %39)
br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit: ; preds = %27, %38
%41 = tail call %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([3 x i8]* @.str22, i64 0, i64 0), i64 2)
%42 = tail call %"class.std::basic_ostream"* @_ZNSo9_M_insertIlEERSoT_(%"class.std::basic_ostream"* @_ZSt4cout, i64 %23)
%43 = tail call %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* %42, i8* getelementptr inbounds ([8 x i8]* @.str23, i64 0, i64 0), i64 7)
br label %44
; <label>:44 ; preds = %0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
ret void
}
; Function Attrs: noinline noreturn nounwind
define linkonce_odr hidden void @__clang_call_terminate(i8*) #6 {
%2 = tail call i8* @__cxa_begin_catch(i8* %0) #1
tail call void @_ZSt9terminatev() #13
unreachable
}
declare i8* @__cxa_begin_catch(i8*)
declare void @_ZSt9terminatev()
; Function Attrs: nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #1
declare %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"*, i32) #0
declare %"class.std::basic_ostream"* @_ZNSo9_M_insertImEERSoT_(%"class.std::basic_ostream"*, i64) #0
; Function Attrs: uwtable
define linkonce_odr void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* nocapture %this, i32* %__position.coerce, i32* nocapture readonly %__x) #5 align 2 {
%1 = getelementptr inbounds %"class.std::vector"* %this, i64 0, i32 0, i32 0, i32 1
%2 = load i32** %1, align 8, !tbaa !50
%3 = getelementptr inbounds %"class.std::vector"* %this, i64 0, i32 0, i32 0, i32 2
%4 = load i32** %3, align 8, !tbaa !53
%5 = icmp eq i32* %2, %4
br i1 %5, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit, label %6
; <label>:6 ; preds = %0
%7 = icmp eq i32* %2, null
%.pre = getelementptr inbounds i32* %2, i64 -1
br i1 %7, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit, label %8
; <label>:8 ; preds = %6
%9 = load i32* %.pre, align 4, !tbaa !5
store i32 %9, i32* %2, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit: ; preds = %6, %8
%10 = getelementptr inbounds i32* %2, i64 1
store i32* %10, i32** %1, align 8, !tbaa !50
%11 = load i32* %__x, align 4, !tbaa !5
%12 = ptrtoint i32* %.pre to i64
%13 = ptrtoint i32* %__position.coerce to i64
%14 = sub i64 %12, %13
%15 = ashr exact i64 %14, 2
%16 = icmp eq i64 %15, 0
br i1 %16, label %_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit, label %17
; <label>:17 ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit
%.pre.i.i.i.i = sub i64 0, %15
%.pre1.i.i.i.i = getelementptr inbounds i32* %2, i64 %.pre.i.i.i.i
%18 = bitcast i32* %.pre1.i.i.i.i to i8*
%19 = bitcast i32* %__position.coerce to i8*
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %18, i8* %19, i64 %14, i32 4, i1 false) #1
br label %_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit
_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit, %17
store i32 %11, i32* %__position.coerce, align 4, !tbaa !5
br label %71
_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit: ; preds = %0
%20 = getelementptr inbounds %"class.std::vector"* %this, i64 0, i32 0, i32 0, i32 0
%21 = load i32** %20, align 8, !tbaa !60
%22 = ptrtoint i32* %2 to i64
%23 = ptrtoint i32* %21 to i64
%24 = sub i64 %22, %23
%25 = ashr exact i64 %24, 2
%26 = icmp eq i64 %25, 0
%27 = select i1 %26, i64 1, i64 %25
%uadd.i = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %25, i64 %27)
%28 = extractvalue { i64, i1 } %uadd.i, 0
%29 = extractvalue { i64, i1 } %uadd.i, 1
%30 = icmp ugt i64 %28, 4611686018427387903
%or.cond.i = or i1 %29, %30
%31 = select i1 %or.cond.i, i64 4611686018427387903, i64 %28
%32 = ptrtoint i32* %__position.coerce to i64
%33 = sub i64 %32, %23
%34 = ashr exact i64 %33, 2
%35 = icmp eq i64 %31, 0
br i1 %35, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit, label %36
; <label>:36 ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit
%37 = icmp ugt i64 %31, 4611686018427387903
br i1 %37, label %38, label %_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i
; <label>:38 ; preds = %36
tail call void @_ZSt17__throw_bad_allocv() #14
unreachable
_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i: ; preds = %36
%39 = shl i64 %31, 2
%40 = tail call noalias i8* @_Znwm(i64 %39)
%41 = bitcast i8* %40 to i32*
br label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit
_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit, %_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i
%42 = phi i32* [ %41, %_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit ]
%43 = getelementptr inbounds i32* %42, i64 %34
%44 = icmp eq i32* %43, null
br i1 %44, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3, label %45
; <label>:45 ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit
%46 = load i32* %__x, align 4, !tbaa !5
store i32 %46, i32* %43, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3: ; preds = %45, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit
%47 = load i32** %20, align 8, !tbaa !60
%48 = ptrtoint i32* %47 to i64
%49 = sub i64 %32, %48
%50 = ashr exact i64 %49, 2
%51 = icmp eq i64 %50, 0
br i1 %51, label %55, label %52
; <label>:52 ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3
%53 = bitcast i32* %42 to i8*
%54 = bitcast i32* %47 to i8*
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %53, i8* %54, i64 %49, i32 4, i1 false) #1
br label %55
; <label>:55 ; preds = %52, %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3
%.sum = add i64 %50, 1
%56 = load i32** %1, align 8, !tbaa !50
%57 = ptrtoint i32* %56 to i64
%58 = sub i64 %57, %32
%59 = ashr exact i64 %58, 2
%60 = icmp eq i64 %59, 0
br i1 %60, label %65, label %61
; <label>:61 ; preds = %55
%62 = getelementptr inbounds i32* %42, i64 %.sum
%63 = bitcast i32* %62 to i8*
%64 = bitcast i32* %__position.coerce to i8*
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %63, i8* %64, i64 %58, i32 4, i1 false) #1
br label %65
; <label>:65 ; preds = %61, %55
%.sum4 = add i64 %59, %.sum
%66 = getelementptr inbounds i32* %42, i64 %.sum4
%67 = icmp eq i32* %47, null
br i1 %67, label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1, label %68
; <label>:68 ; preds = %65
%69 = bitcast i32* %47 to i8*
tail call void @_ZdlPv(i8* %69) #1
br label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1
_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1: ; preds = %65, %68
store i32* %42, i32** %20, align 8, !tbaa !60
store i32* %66, i32** %1, align 8, !tbaa !50
%70 = getelementptr inbounds i32* %42, i64 %31
store i32* %70, i32** %3, align 8, !tbaa !53
br label %71
; <label>:71 ; preds = %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1, %_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit
ret void
}
; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(i8*) #7
; Function Attrs: nounwind
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
; Function Attrs: noreturn
declare void @_ZSt17__throw_bad_allocv() #8
; Function Attrs: nobuiltin
declare noalias i8* @_Znwm(i64) #9
declare %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"*, i8*, i64) #0
; Function Attrs: nounwind readonly
declare i64 @strlen(i8* nocapture) #10
declare void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"*, i32) #0
; Function Attrs: nounwind
declare i32 @gettimeofday(%struct.timeval* nocapture, %struct.timezone* nocapture) #11
declare %"class.std::basic_ostream"* @_ZNSo9_M_insertIlEERSoT_(%"class.std::basic_ostream"*, i64) #0
define internal void @_GLOBAL__I_a() section ".text.startup" {
tail call void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"* @_ZStL8__ioinit)
%1 = tail call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::ios_base::Init"*)* @_ZNSt8ios_base4InitD1Ev to void (i8*)*), i8* getelementptr inbounds (%"class.std::ios_base::Init"* @_ZStL8__ioinit, i64 0, i32 0), i8* @__dso_handle) #1
ret void
}
; Function Attrs: nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
; Function Attrs: nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #1
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #12
attributes #0 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind }
attributes #2 = { noinline nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { nounwind readonly uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #6 = { noinline noreturn nounwind }
attributes #7 = { nobuiltin nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #8 = { noreturn "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #9 = { nobuiltin "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #10 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #11 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #12 = { nounwind readnone }
attributes #13 = { noreturn nounwind }
attributes #14 = { noreturn }
!llvm.ident = !{!0}
!0 = metadata !{metadata !"clang version 3.5 "}
!1 = metadata !{metadata !1, metadata !2, metadata !3}
!2 = metadata !{metadata !"llvm.vectorizer.width", i32 1}
!3 = metadata !{metadata !"llvm.vectorizer.unroll", i32 1}
!4 = metadata !{metadata !4, metadata !2, metadata !3}
!5 = metadata !{metadata !6, metadata !6, i64 0}
!6 = metadata !{metadata !"int", metadata !7, i64 0}
!7 = metadata !{metadata !"omnipotent char", metadata !8, i64 0}
!8 = metadata !{metadata !"Simple C/C++ TBAA"}
!9 = metadata !{metadata !9, metadata !2, metadata !3}
!10 = metadata !{metadata !10, metadata !2, metadata !3}
!11 = metadata !{metadata !11, metadata !2, metadata !3}
!12 = metadata !{metadata !12, metadata !2, metadata !3}
!13 = metadata !{metadata !13, metadata !2, metadata !3}
!14 = metadata !{metadata !14, metadata !2, metadata !3}
!15 = metadata !{metadata !15, metadata !2, metadata !3}
!16 = metadata !{metadata !16, metadata !2, metadata !3}
!17 = metadata !{metadata !17, metadata !2, metadata !3}
!18 = metadata !{metadata !18, metadata !2, metadata !3}
!19 = metadata !{metadata !19, metadata !2, metadata !3}
!20 = metadata !{metadata !20, metadata !2, metadata !3}
!21 = metadata !{metadata !21, metadata !2, metadata !3}
!22 = metadata !{metadata !22, metadata !2, metadata !3}
!23 = metadata !{metadata !23, metadata !2, metadata !3}
!24 = metadata !{metadata !24, metadata !2, metadata !3}
!25 = metadata !{metadata !25, metadata !2, metadata !3}
!26 = metadata !{metadata !26, metadata !2, metadata !3}
!27 = metadata !{metadata !28, metadata !28, i64 0}
!28 = metadata !{metadata !"any pointer", metadata !7, i64 0}
!29 = metadata !{metadata !29, metadata !2, metadata !3}
!30 = metadata !{metadata !30, metadata !2, metadata !3}
!31 = metadata !{metadata !31, metadata !2, metadata !3}
!32 = metadata !{metadata !32, metadata !2, metadata !3}
!33 = metadata !{metadata !33, metadata !2, metadata !3}
!34 = metadata !{metadata !34, metadata !2, metadata !3}
!35 = metadata !{metadata !35, metadata !2, metadata !3}
!36 = metadata !{metadata !37, metadata !37, i64 0}
!37 = metadata !{metadata !"short", metadata !7, i64 0}
!38 = metadata !{metadata !38, metadata !2, metadata !3}
!39 = metadata !{metadata !39, metadata !2, metadata !3}
!40 = metadata !{metadata !40, metadata !2, metadata !3}
!41 = metadata !{metadata !7, metadata !7, i64 0}
!42 = metadata !{metadata !43, metadata !43, i64 0}
!43 = metadata !{metadata !"float", metadata !7, i64 0}
!44 = metadata !{metadata !45, metadata !28, i64 0}
!45 = metadata !{metadata !"_ZTS5Timer", metadata !28, i64 0, metadata !46, i64 8, metadata !47, i64 16, metadata !47, i64 32}
!46 = metadata !{metadata !"bool", metadata !7, i64 0}
!47 = metadata !{metadata !"_ZTS7timeval", metadata !48, i64 0, metadata !48, i64 8}
!48 = metadata !{metadata !"long", metadata !7, i64 0}
!49 = metadata !{metadata !45, metadata !46, i64 8}
!50 = metadata !{metadata !51, metadata !28, i64 8}
!51 = metadata !{metadata !"_ZTSSt12_Vector_baseIjSaIjEE", metadata !52, i64 0}
!52 = metadata !{metadata !"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", metadata !28, i64 0, metadata !28, i64 8, metadata !28, i64 16}
!53 = metadata !{metadata !51, metadata !28, i64 16}
!54 = metadata !{metadata !55, metadata !55, i64 0}
!55 = metadata !{metadata !"vtable pointer", metadata !8, i64 0}
!56 = metadata !{metadata !57, metadata !57, i64 0}
!57 = metadata !{metadata !"_ZTSSt13_Ios_Fmtflags", metadata !7, i64 0}
!58 = metadata !{metadata !58, metadata !2, metadata !3}
!59 = metadata !{metadata !59, metadata !2, metadata !3}
!60 = metadata !{metadata !51, metadata !28, i64 0}
!61 = metadata !{i8 0, i8 2}
!62 = metadata !{metadata !45, metadata !48, i64 24}
!63 = metadata !{metadata !45, metadata !48, i64 40}
!64 = metadata !{metadata !45, metadata !48, i64 16}
!65 = metadata !{metadata !45, metadata !48, i64 32}
!66 = metadata !{metadata !67, metadata !68, i64 32}
!67 = metadata !{metadata !"_ZTSSt8ios_base", metadata !48, i64 8, metadata !48, i64 16, metadata !57, i64 24, metadata !68, i64 28, metadata !68, i64 32, metadata !28, i64 40, metadata !69, i64 48, metadata !7, i64 64, metadata !6, i64 192, metadata !28, i64 200, metadata !70, i64 208}
!68 = metadata !{metadata !"_ZTSSt12_Ios_Iostate", metadata !7, i64 0}
!69 = metadata !{metadata !"_ZTSNSt8ios_base6_WordsE", metadata !28, i64 0, metadata !48, i64 8}
!70 = metadata !{metadata !"_ZTSSt6locale", metadata !28, i64 0}
-------------- next part --------------
; ModuleID = 'test-suite/SingleSource/UnitTests/Vectorizer/gcc-loops.cpp'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%"class.std::ios_base::Init" = type { i8 }
%struct.A = type { [1024 x i32] }
%"class.std::basic_ostream" = type { i32 (...)**, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", %"class.std::basic_ostream"*, i8, i8, %"class.std::basic_streambuf"*, %"class.std::ctype"*, %"class.std::num_put"*, %"class.std::num_get"* }
%"class.std::ios_base" = type { i32 (...)**, i64, i64, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"class.std::locale" }
%"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"class.std::ios_base"*, i32)*, i32, i32 }
%"struct.std::ios_base::_Words" = type { i8*, i64 }
%"class.std::locale" = type { %"class.std::locale::_Impl"* }
%"class.std::locale::_Impl" = type { i32, %"class.std::locale::facet"**, i64, %"class.std::locale::facet"**, i8** }
%"class.std::locale::facet" = type { i32 (...)**, i32 }
%"class.std::basic_streambuf" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"class.std::locale" }
%"class.std::ctype" = type { [12 x i8], %struct.__locale_struct*, i8, i32*, i32*, i16*, i8, [256 x i8], [256 x i8], i8 }
%struct.__locale_struct = type { [13 x %struct.__locale_data*], i16*, i32*, i32*, [13 x i8*] }
%struct.__locale_data = type opaque
%"class.std::num_put" = type { [12 x i8], [4 x i8] }
%"class.std::num_get" = type { [12 x i8], [4 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int> >::_Vector_impl" = type { i32*, i32*, i32* }
%class.Timer = type { i8*, i8, %struct.timeval, %struct.timeval }
%struct.timeval = type { i64, i64 }
%struct.timezone = type { i32, i32 }
@_ZStL8__ioinit = internal global %"class.std::ios_base::Init" zeroinitializer, align 1
@__dso_handle = external global i8
@usa = global [1024 x i16] zeroinitializer, align 16
@sa = global [1024 x i16] zeroinitializer, align 16
@sb = global [1024 x i16] zeroinitializer, align 16
@sc = global [1024 x i16] zeroinitializer, align 16
@ua = global [1024 x i32] zeroinitializer, align 16
@ia = global [1024 x i32] zeroinitializer, align 16
@ib = global [1024 x i32] zeroinitializer, align 16
@ic = global [1024 x i32] zeroinitializer, align 16
@ub = global [1024 x i32] zeroinitializer, align 16
@uc = global [1024 x i32] zeroinitializer, align 16
@fa = global [1024 x float] zeroinitializer, align 16
@fb = global [1024 x float] zeroinitializer, align 16
@da = global [1024 x float] zeroinitializer, align 16
@db = global [1024 x float] zeroinitializer, align 16
@dc = global [1024 x float] zeroinitializer, align 16
@dd = global [1024 x float] zeroinitializer, align 16
@dj = global [1024 x i32] zeroinitializer, align 16
@s = global %struct.A zeroinitializer, align 4
@a = global [2048 x i32] zeroinitializer, align 16
@b = global [2048 x i32] zeroinitializer, align 16
@c = global [2048 x i32] zeroinitializer, align 16
@d = global [2048 x i32] zeroinitializer, align 16
@G = global [32 x [1024 x i32]] zeroinitializer, align 16
@.str = private unnamed_addr constant [9 x i8] c"Example1\00", align 1
@.str1 = private unnamed_addr constant [10 x i8] c"Example2a\00", align 1
@.str2 = private unnamed_addr constant [10 x i8] c"Example2b\00", align 1
@.str3 = private unnamed_addr constant [9 x i8] c"Example3\00", align 1
@.str4 = private unnamed_addr constant [10 x i8] c"Example4a\00", align 1
@.str5 = private unnamed_addr constant [10 x i8] c"Example4b\00", align 1
@.str6 = private unnamed_addr constant [10 x i8] c"Example4c\00", align 1
@.str7 = private unnamed_addr constant [9 x i8] c"Example7\00", align 1
@.str8 = private unnamed_addr constant [9 x i8] c"Example8\00", align 1
@.str9 = private unnamed_addr constant [9 x i8] c"Example9\00", align 1
@.str10 = private unnamed_addr constant [11 x i8] c"Example10a\00", align 1
@.str11 = private unnamed_addr constant [11 x i8] c"Example10b\00", align 1
@.str12 = private unnamed_addr constant [10 x i8] c"Example11\00", align 1
@.str13 = private unnamed_addr constant [10 x i8] c"Example12\00", align 1
@.str14 = private unnamed_addr constant [10 x i8] c"Example23\00", align 1
@.str15 = private unnamed_addr constant [10 x i8] c"Example24\00", align 1
@.str16 = private unnamed_addr constant [10 x i8] c"Example25\00", align 1
@_ZSt4cout = external global %"class.std::basic_ostream"
@.str17 = private unnamed_addr constant [11 x i8] c"Results: (\00", align 1
@.str18 = private unnamed_addr constant [3 x i8] c"):\00", align 1
@.str19 = private unnamed_addr constant [2 x i8] c" \00", align 1
@.str20 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1
@.str22 = private unnamed_addr constant [3 x i8] c", \00", align 1
@.str23 = private unnamed_addr constant [8 x i8] c", msec\0A\00", align 1
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
declare void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"*) #0
declare void @_ZNSt8ios_base4InitD1Ev(%"class.std::ios_base::Init"*) #0
; Function Attrs: nounwind
declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) #1
; Function Attrs: noinline nounwind uwtable
define void @_Z8example1v() #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%1 = bitcast i32* %0 to <4 x i32>*
%wide.load = load <4 x i32>* %1, align 16
%.sum6 = or i64 %index, 4
%2 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum6
%3 = bitcast i32* %2 to <4 x i32>*
%wide.load3 = load <4 x i32>* %3, align 16
%4 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %index
%5 = bitcast i32* %4 to <4 x i32>*
%wide.load4 = load <4 x i32>* %5, align 16
%.sum7 = or i64 %index, 4
%6 = getelementptr [2048 x i32]* @c, i64 0, i64 %.sum7
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load5 = load <4 x i32>* %7, align 16
%8 = add nsw <4 x i32> %wide.load4, %wide.load
%9 = add nsw <4 x i32> %wide.load5, %wide.load3
%10 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %11, align 16
%.sum8 = or i64 %index, 4
%12 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum8
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %13, align 16
%index.next = add i64 %index, 8
%14 = icmp eq i64 %index.next, 256
br i1 %14, label %middle.block, label %vector.body, !llvm.loop !1
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example2aii(i32 %n, i32 %x) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.ph
vector.ph: ; preds = %.lr.ph.preheader
%broadcast.splatinsert3 = insertelement <4 x i32> undef, i32 %x, i32 0
%broadcast.splat4 = shufflevector <4 x i32> %broadcast.splatinsert3, <4 x i32> undef, <4 x i32> zeroinitializer
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%5 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> %broadcast.splat4, <4 x i32>* %6, align 16
%.sum7 = or i64 %index, 4
%7 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum7
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> %broadcast.splat4, <4 x i32>* %8, align 16
%index.next = add i64 %index, 8
%9 = icmp eq i64 %index.next, %n.vec
br i1 %9, label %middle.block, label %vector.body, !llvm.loop !4
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%10 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv
store i32 %x, i32* %10, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !9
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example2bii(i32 %n, i32 %x) #2 {
%1 = icmp eq i32 %n, 0
br i1 %1, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end = sub i32 %n, %cast.crd
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
%wide.load = load <4 x i32>* %6, align 16
%.sum12 = or i64 %index, 4
%7 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum12
%8 = bitcast i32* %7 to <4 x i32>*
%wide.load9 = load <4 x i32>* %8, align 16
%9 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %index
%10 = bitcast i32* %9 to <4 x i32>*
%wide.load10 = load <4 x i32>* %10, align 16
%.sum13 = or i64 %index, 4
%11 = getelementptr [2048 x i32]* @c, i64 0, i64 %.sum13
%12 = bitcast i32* %11 to <4 x i32>*
%wide.load11 = load <4 x i32>* %12, align 16
%13 = and <4 x i32> %wide.load10, %wide.load
%14 = and <4 x i32> %wide.load11, %wide.load9
%15 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%16 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> %13, <4 x i32>* %16, align 16
%.sum14 = or i64 %index, 4
%17 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum14
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> %14, <4 x i32>* %18, align 16
%index.next = add i64 %index, 8
%19 = icmp eq i64 %index.next, %n.vec
br i1 %19, label %middle.block, label %vector.body, !llvm.loop !10
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%resume.val3 = phi i32 [ %n, %.lr.ph.preheader ], [ %rev.ind.end, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%.01 = phi i32 [ %20, %.lr.ph ], [ %resume.val3, %middle.block ]
%20 = add nsw i32 %.01, -1
%21 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv
%22 = load i32* %21, align 4, !tbaa !5
%23 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %indvars.iv
%24 = load i32* %23, align 4, !tbaa !5
%25 = and i32 %24, %22
%26 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
store i32 %25, i32* %26, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%27 = icmp eq i32 %20, 0
br i1 %27, label %._crit_edge, label %.lr.ph, !llvm.loop !11
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example3iPiS_(i32 %n, i32* noalias nocapture %p, i32* noalias nocapture readonly %q) #2 {
%1 = icmp eq i32 %n, 0
br i1 %1, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%ptr.ind.end = getelementptr i32* %q, i64 %n.vec
%ptr.ind.end8 = getelementptr i32* %p, i64 %n.vec
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end = sub i32 %n, %cast.crd
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%next.gep = getelementptr i32* %q, i64 %index
%next.gep33 = getelementptr i32* %p, i64 %index
%5 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>* %5, align 16
%next.gep.sum77 = or i64 %index, 4
%6 = getelementptr i32* %q, i64 %next.gep.sum77
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load58 = load <4 x i32>* %7, align 16
%8 = bitcast i32* %next.gep33 to <4 x i32>*
store <4 x i32> %wide.load, <4 x i32>* %8, align 16
%next.gep33.sum82 = or i64 %index, 4
%9 = getelementptr i32* %p, i64 %next.gep33.sum82
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> %wide.load58, <4 x i32>* %10, align 16
%index.next = add i64 %index, 8
%11 = icmp eq i64 %index.next, %n.vec
br i1 %11, label %middle.block, label %vector.body, !llvm.loop !12
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i32* [ %q, %.lr.ph.preheader ], [ %ptr.ind.end, %vector.body ]
%resume.val7 = phi i32* [ %p, %.lr.ph.preheader ], [ %ptr.ind.end8, %vector.body ]
%resume.val9 = phi i32 [ %n, %.lr.ph.preheader ], [ %rev.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%.05 = phi i32* [ %13, %.lr.ph ], [ %resume.val, %middle.block ]
%.014 = phi i32* [ %15, %.lr.ph ], [ %resume.val7, %middle.block ]
%.023 = phi i32 [ %12, %.lr.ph ], [ %resume.val9, %middle.block ]
%12 = add nsw i32 %.023, -1
%13 = getelementptr inbounds i32* %.05, i64 1
%14 = load i32* %.05, align 16, !tbaa !5
%15 = getelementptr inbounds i32* %.014, i64 1
store i32 %14, i32* %.014, align 16, !tbaa !5
%16 = icmp eq i32 %12, 0
br i1 %16, label %._crit_edge, label %.lr.ph, !llvm.loop !13
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example4aiPiS_(i32 %n, i32* noalias nocapture %p, i32* noalias nocapture readonly %q) #2 {
%1 = icmp eq i32 %n, 0
br i1 %1, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%ptr.ind.end = getelementptr i32* %q, i64 %n.vec
%ptr.ind.end7 = getelementptr i32* %p, i64 %n.vec
%cast.crd = trunc i64 %n.vec to i32
%rev.ind.end = sub i32 %n, %cast.crd
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%next.gep = getelementptr i32* %q, i64 %index
%next.gep32 = getelementptr i32* %p, i64 %index
%5 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>* %5, align 16
%next.gep.sum76 = or i64 %index, 4
%6 = getelementptr i32* %q, i64 %next.gep.sum76
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load57 = load <4 x i32>* %7, align 16
%8 = add nsw <4 x i32> %wide.load, <i32 5, i32 5, i32 5, i32 5>
%9 = add nsw <4 x i32> %wide.load57, <i32 5, i32 5, i32 5, i32 5>
%10 = bitcast i32* %next.gep32 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %10, align 16
%next.gep32.sum81 = or i64 %index, 4
%11 = getelementptr i32* %p, i64 %next.gep32.sum81
%12 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %12, align 16
%index.next = add i64 %index, 8
%13 = icmp eq i64 %index.next, %n.vec
br i1 %13, label %middle.block, label %vector.body, !llvm.loop !14
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i32* [ %q, %.lr.ph.preheader ], [ %ptr.ind.end, %vector.body ]
%resume.val6 = phi i32* [ %p, %.lr.ph.preheader ], [ %ptr.ind.end7, %vector.body ]
%resume.val8 = phi i32 [ %n, %.lr.ph.preheader ], [ %rev.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%.05 = phi i32* [ %15, %.lr.ph ], [ %resume.val, %middle.block ]
%.014 = phi i32* [ %18, %.lr.ph ], [ %resume.val6, %middle.block ]
%.023 = phi i32 [ %14, %.lr.ph ], [ %resume.val8, %middle.block ]
%14 = add nsw i32 %.023, -1
%15 = getelementptr inbounds i32* %.05, i64 1
%16 = load i32* %.05, align 16, !tbaa !5
%17 = add nsw i32 %16, 5
%18 = getelementptr inbounds i32* %.014, i64 1
store i32 %17, i32* %.014, align 16, !tbaa !5
%19 = icmp eq i32 %14, 0
br i1 %19, label %._crit_edge, label %.lr.ph, !llvm.loop !15
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example4biPiS_(i32 %n, i32* noalias nocapture readnone %p, i32* noalias nocapture readnone %q) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = or i64 %index, 1
%6 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %5
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load = load <4 x i32>* %7, align 4
%.sum11 = or i64 %index, 5
%8 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum11
%9 = bitcast i32* %8 to <4 x i32>*
%wide.load3 = load <4 x i32>* %9, align 4
%10 = or i64 %index, 3
%11 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %10
%12 = bitcast i32* %11 to <4 x i32>*
%wide.load4 = load <4 x i32>* %12, align 4
%.sum812 = or i64 %index, 7
%13 = getelementptr [2048 x i32]* @c, i64 0, i64 %.sum812
%14 = bitcast i32* %13 to <4 x i32>*
%wide.load5 = load <4 x i32>* %14, align 4
%15 = add nsw <4 x i32> %wide.load4, %wide.load
%16 = add nsw <4 x i32> %wide.load5, %wide.load3
%17 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> %15, <4 x i32>* %18, align 16
%.sum910 = or i64 %index, 4
%19 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum910
%20 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> %16, <4 x i32>* %20, align 16
%index.next = add i64 %index, 8
%21 = icmp eq i64 %index.next, %n.vec
br i1 %21, label %middle.block, label %vector.body, !llvm.loop !16
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%22 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv.next
%23 = load i32* %22, align 4, !tbaa !5
%24 = add nsw i64 %indvars.iv, 3
%25 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %24
%26 = load i32* %25, align 4, !tbaa !5
%27 = add nsw i32 %26, %23
%28 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
store i32 %27, i32* %28, align 4, !tbaa !5
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !17
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example4ciPiS_(i32 %n, i32* noalias nocapture readnone %p, i32* noalias nocapture readnone %q) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
%wide.load = load <4 x i32>* %6, align 16
%.sum6 = or i64 %index, 4
%7 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum6
%8 = bitcast i32* %7 to <4 x i32>*
%wide.load3 = load <4 x i32>* %8, align 16
%9 = icmp sgt <4 x i32> %wide.load, <i32 4, i32 4, i32 4, i32 4>
%10 = icmp sgt <4 x i32> %wide.load3, <i32 4, i32 4, i32 4, i32 4>
%11 = select <4 x i1> %9, <4 x i32> <i32 4, i32 4, i32 4, i32 4>, <4 x i32> zeroinitializer
%12 = select <4 x i1> %10, <4 x i32> <i32 4, i32 4, i32 4, i32 4>, <4 x i32> zeroinitializer
%13 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %index
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> %11, <4 x i32>* %14, align 16
%.sum7 = or i64 %index, 4
%15 = getelementptr [2048 x i32]* @b, i64 0, i64 %.sum7
%16 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> %12, <4 x i32>* %16, align 16
%index.next = add i64 %index, 8
%17 = icmp eq i64 %index.next, %n.vec
br i1 %17, label %middle.block, label %vector.body, !llvm.loop !18
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%18 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
%19 = load i32* %18, align 4, !tbaa !5
%20 = icmp sgt i32 %19, 4
%21 = select i1 %20, i32 4, i32 0
%22 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %indvars.iv
store i32 %21, i32* %22, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !19
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example5iP1A(i32 %n, %struct.A* nocapture %s) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph.preheader, label %._crit_edge
.lr.ph.preheader: ; preds = %0
%2 = add i32 %n, -1
%3 = zext i32 %2 to i64
%4 = add i64 %3, 1
%end.idx = add i64 %3, 1
%n.vec = and i64 %4, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.preheader ]
%5 = getelementptr inbounds %struct.A* %s, i64 0, i32 0, i64 %index
%6 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %6, align 4
%.sum5 = or i64 %index, 4
%7 = getelementptr %struct.A* %s, i64 0, i32 0, i64 %.sum5
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %8, align 4
%index.next = add i64 %index, 8
%9 = icmp eq i64 %index.next, %n.vec
br i1 %9, label %middle.block, label %vector.body, !llvm.loop !20
middle.block: ; preds = %vector.body, %.lr.ph.preheader
%resume.val = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %vector.body ]
%cmp.n = icmp eq i64 %end.idx, %resume.val
br i1 %cmp.n, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %middle.block, %.lr.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %resume.val, %middle.block ]
%10 = getelementptr inbounds %struct.A* %s, i64 0, i32 0, i64 %indvars.iv
store i32 5, i32* %10, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
%exitcond = icmp eq i32 %lftr.wideiv, %n
br i1 %exitcond, label %._crit_edge, label %.lr.ph, !llvm.loop !21
._crit_edge: ; preds = %.lr.ph, %middle.block, %0
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example7i(i32 %x) #2 {
%1 = sext i32 %x to i64
%scevgep = getelementptr [2048 x i32]* @b, i64 0, i64 %1
%scevgep2 = bitcast i32* %scevgep to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* bitcast ([2048 x i32]* @a to i8*), i8* %scevgep2, i64 4096, i32 4, i1 false)
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example8i(i32 %x) #2 {
br label %vector.ph
vector.ph: ; preds = %0, %middle.block
%indvars.iv3 = phi i64 [ 0, %0 ], [ %indvars.iv.next4, %middle.block ]
%broadcast.splatinsert7 = insertelement <4 x i32> undef, i32 %x, i32 0
%broadcast.splat8 = shufflevector <4 x i32> %broadcast.splatinsert7, <4 x i32> undef, <4 x i32> zeroinitializer
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%1 = getelementptr inbounds [32 x [1024 x i32]]* @G, i64 0, i64 %indvars.iv3, i64 %index
%2 = bitcast i32* %1 to <4 x i32>*
store <4 x i32> %broadcast.splat8, <4 x i32>* %2, align 16
%.sum9 = or i64 %index, 4
%3 = getelementptr [32 x [1024 x i32]]* @G, i64 0, i64 %indvars.iv3, i64 %.sum9
%4 = bitcast i32* %3 to <4 x i32>*
store <4 x i32> %broadcast.splat8, <4 x i32>* %4, align 16
%index.next = add i64 %index, 8
%5 = icmp eq i64 %index.next, 1024
br i1 %5, label %middle.block, label %vector.body, !llvm.loop !22
middle.block: ; preds = %vector.body
%indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
%exitcond5 = icmp eq i64 %indvars.iv.next4, 32
br i1 %exitcond5, label %6, label %vector.ph
; <label>:6 ; preds = %middle.block
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z8example9Pj(i32* nocapture %ret) #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %10, %vector.body ]
%vec.phi4 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %11, %vector.body ]
%0 = getelementptr inbounds [1024 x i32]* @ub, i64 0, i64 %index
%1 = bitcast i32* %0 to <4 x i32>*
%wide.load = load <4 x i32>* %1, align 16
%.sum12 = or i64 %index, 4
%2 = getelementptr [1024 x i32]* @ub, i64 0, i64 %.sum12
%3 = bitcast i32* %2 to <4 x i32>*
%wide.load5 = load <4 x i32>* %3, align 16
%4 = getelementptr inbounds [1024 x i32]* @uc, i64 0, i64 %index
%5 = bitcast i32* %4 to <4 x i32>*
%wide.load6 = load <4 x i32>* %5, align 16
%.sum13 = or i64 %index, 4
%6 = getelementptr [1024 x i32]* @uc, i64 0, i64 %.sum13
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load7 = load <4 x i32>* %7, align 16
%8 = add <4 x i32> %wide.load, %vec.phi
%9 = add <4 x i32> %wide.load5, %vec.phi4
%10 = sub <4 x i32> %8, %wide.load6
%11 = sub <4 x i32> %9, %wide.load7
%index.next = add i64 %index, 8
%12 = icmp eq i64 %index.next, 1024
br i1 %12, label %middle.block, label %vector.body, !llvm.loop !23
middle.block: ; preds = %vector.body
%bin.rdx = add <4 x i32> %11, %10
%rdx.shuf = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx9 = add <4 x i32> %bin.rdx, %rdx.shuf
%rdx.shuf10 = shufflevector <4 x i32> %bin.rdx9, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx11 = add <4 x i32> %bin.rdx9, %rdx.shuf10
%13 = extractelement <4 x i32> %bin.rdx11, i32 0
store i32 %13, i32* %ret, align 4, !tbaa !5
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z10example10aPsS_S_PiS0_S0_(i16* noalias nocapture %sa, i16* noalias nocapture readonly %sb, i16* noalias nocapture readonly %sc, i32* noalias nocapture %ia, i32* noalias nocapture readonly %ib, i32* noalias nocapture readonly %ic) #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds i32* %ib, i64 %index
%1 = bitcast i32* %0 to <4 x i32>*
%wide.load = load <4 x i32>* %1, align 4
%.sum10 = or i64 %index, 4
%2 = getelementptr i32* %ib, i64 %.sum10
%3 = bitcast i32* %2 to <4 x i32>*
%wide.load3 = load <4 x i32>* %3, align 4
%4 = getelementptr inbounds i32* %ic, i64 %index
%5 = bitcast i32* %4 to <4 x i32>*
%wide.load4 = load <4 x i32>* %5, align 4
%.sum11 = or i64 %index, 4
%6 = getelementptr i32* %ic, i64 %.sum11
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load5 = load <4 x i32>* %7, align 4
%8 = add nsw <4 x i32> %wide.load4, %wide.load
%9 = add nsw <4 x i32> %wide.load5, %wide.load3
%10 = getelementptr inbounds i32* %ia, i64 %index
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %11, align 4
%.sum12 = or i64 %index, 4
%12 = getelementptr i32* %ia, i64 %.sum12
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %13, align 4
%14 = getelementptr inbounds i16* %sb, i64 %index
%15 = bitcast i16* %14 to <4 x i16>*
%wide.load6 = load <4 x i16>* %15, align 2
%.sum13 = or i64 %index, 4
%16 = getelementptr i16* %sb, i64 %.sum13
%17 = bitcast i16* %16 to <4 x i16>*
%wide.load7 = load <4 x i16>* %17, align 2
%18 = getelementptr inbounds i16* %sc, i64 %index
%19 = bitcast i16* %18 to <4 x i16>*
%wide.load8 = load <4 x i16>* %19, align 2
%.sum14 = or i64 %index, 4
%20 = getelementptr i16* %sc, i64 %.sum14
%21 = bitcast i16* %20 to <4 x i16>*
%wide.load9 = load <4 x i16>* %21, align 2
%22 = add <4 x i16> %wide.load8, %wide.load6
%23 = add <4 x i16> %wide.load9, %wide.load7
%24 = getelementptr inbounds i16* %sa, i64 %index
%25 = bitcast i16* %24 to <4 x i16>*
store <4 x i16> %22, <4 x i16>* %25, align 2
%.sum15 = or i64 %index, 4
%26 = getelementptr i16* %sa, i64 %.sum15
%27 = bitcast i16* %26 to <4 x i16>*
store <4 x i16> %23, <4 x i16>* %27, align 2
%index.next = add i64 %index, 8
%28 = icmp eq i64 %index.next, 1024
br i1 %28, label %middle.block, label %vector.body, !llvm.loop !24
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z10example10bPsS_S_PiS0_S0_(i16* noalias nocapture readnone %sa, i16* noalias nocapture readonly %sb, i16* noalias nocapture readnone %sc, i32* noalias nocapture %ia, i32* noalias nocapture readnone %ib, i32* noalias nocapture readnone %ic) #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds i16* %sb, i64 %index
%1 = bitcast i16* %0 to <4 x i16>*
%wide.load = load <4 x i16>* %1, align 2
%.sum4 = or i64 %index, 4
%2 = getelementptr i16* %sb, i64 %.sum4
%3 = bitcast i16* %2 to <4 x i16>*
%wide.load3 = load <4 x i16>* %3, align 2
%4 = sext <4 x i16> %wide.load to <4 x i32>
%5 = sext <4 x i16> %wide.load3 to <4 x i32>
%6 = getelementptr inbounds i32* %ia, i64 %index
%7 = bitcast i32* %6 to <4 x i32>*
store <4 x i32> %4, <4 x i32>* %7, align 4
%.sum5 = or i64 %index, 4
%8 = getelementptr i32* %ia, i64 %.sum5
%9 = bitcast i32* %8 to <4 x i32>*
store <4 x i32> %5, <4 x i32>* %9, align 4
%index.next = add i64 %index, 8
%10 = icmp eq i64 %index.next, 1024
br i1 %10, label %middle.block, label %vector.body, !llvm.loop !25
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example11v() #2 {
br label %1
; <label>:1 ; preds = %1, %0
%indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %1 ]
%2 = shl nsw i64 %indvars.iv, 1
%3 = or i64 %2, 1
%4 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %3
%5 = load i32* %4, align 4, !tbaa !5
%6 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %3
%7 = load i32* %6, align 4, !tbaa !5
%8 = mul nsw i32 %7, %5
%9 = getelementptr inbounds [2048 x i32]* @b, i64 0, i64 %2
%10 = load i32* %9, align 8, !tbaa !5
%11 = getelementptr inbounds [2048 x i32]* @c, i64 0, i64 %2
%12 = load i32* %11, align 8, !tbaa !5
%13 = mul nsw i32 %12, %10
%14 = sub nsw i32 %8, %13
%15 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %indvars.iv
store i32 %14, i32* %15, align 4, !tbaa !5
%16 = mul nsw i32 %7, %10
%17 = mul nsw i32 %12, %5
%18 = add nsw i32 %17, %16
%19 = getelementptr inbounds [2048 x i32]* @d, i64 0, i64 %indvars.iv
store i32 %18, i32* %19, align 4, !tbaa !5
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
%exitcond = icmp eq i64 %indvars.iv.next, 512
br i1 %exitcond, label %20, label %1
; <label>:20 ; preds = %1
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example12v() #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [2048 x i32]* @a, i64 0, i64 %index
%1 = trunc i64 %index to i32
%broadcast.splatinsert3 = insertelement <4 x i32> undef, i32 %1, i32 0
%broadcast.splat4 = shufflevector <4 x i32> %broadcast.splatinsert3, <4 x i32> undef, <4 x i32> zeroinitializer
%induction5 = add <4 x i32> %broadcast.splat4, <i32 0, i32 1, i32 2, i32 3>
%induction6 = add <4 x i32> %broadcast.splat4, <i32 4, i32 5, i32 6, i32 7>
%2 = bitcast i32* %0 to <4 x i32>*
store <4 x i32> %induction5, <4 x i32>* %2, align 16
%.sum7 = or i64 %index, 4
%3 = getelementptr [2048 x i32]* @a, i64 0, i64 %.sum7
%4 = bitcast i32* %3 to <4 x i32>*
store <4 x i32> %induction6, <4 x i32>* %4, align 16
%index.next = add i64 %index, 8
%5 = icmp eq i64 %index.next, 1024
br i1 %5, label %middle.block, label %vector.body, !llvm.loop !26
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example13PPiS0_S_(i32** nocapture readonly %A, i32** nocapture readonly %B, i32* nocapture %out) #2 {
br label %.preheader
.preheader: ; preds = %14, %0
%indvars.iv4 = phi i64 [ 0, %0 ], [ %indvars.iv.next5, %14 ]
%1 = getelementptr inbounds i32** %A, i64 %indvars.iv4
%2 = load i32** %1, align 8, !tbaa !27
%3 = getelementptr inbounds i32** %B, i64 %indvars.iv4
%4 = load i32** %3, align 8, !tbaa !27
br label %5
; <label>:5 ; preds = %.preheader, %5
%indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %5 ]
%diff.02 = phi i32 [ 0, %.preheader ], [ %11, %5 ]
%6 = getelementptr inbounds i32* %2, i64 %indvars.iv
%7 = load i32* %6, align 4, !tbaa !5
%8 = getelementptr inbounds i32* %4, i64 %indvars.iv
%9 = load i32* %8, align 4, !tbaa !5
%10 = add i32 %7, %diff.02
%11 = sub i32 %10, %9
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 8
%12 = trunc i64 %indvars.iv.next to i32
%13 = icmp slt i32 %12, 1024
br i1 %13, label %5, label %14
; <label>:14 ; preds = %5
%15 = getelementptr inbounds i32* %out, i64 %indvars.iv4
store i32 %11, i32* %15, align 4, !tbaa !5
%indvars.iv.next5 = add nuw nsw i64 %indvars.iv4, 1
%exitcond = icmp eq i64 %indvars.iv.next5, 32
br i1 %exitcond, label %16, label %.preheader
; <label>:16 ; preds = %14
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example14PPiS0_S_(i32** nocapture readonly %in, i32** nocapture readonly %coeff, i32* nocapture %out) #2 {
.preheader1:
br label %vector.ph
vector.ph: ; preds = %.preheader1, %middle.block
%indvars.iv7 = phi i64 [ 0, %.preheader1 ], [ %indvars.iv.next8, %middle.block ]
%sum.05 = phi i32 [ 0, %.preheader1 ], [ %bin.rdx, %middle.block ]
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%vec.phi = phi i32 [ %sum.05, %vector.ph ], [ %18, %vector.body ]
%vec.phi20 = phi i32 [ 0, %vector.ph ], [ %19, %vector.body ]
%induction1970 = or i64 %index, 1
%0 = getelementptr inbounds i32** %in, i64 %index
%1 = getelementptr inbounds i32** %in, i64 %induction1970
%2 = load i32** %0, align 8, !tbaa !27
%3 = load i32** %1, align 8, !tbaa !27
%4 = getelementptr inbounds i32* %2, i64 %indvars.iv7
%5 = getelementptr inbounds i32* %3, i64 %indvars.iv7
%6 = load i32* %4, align 4, !tbaa !5
%7 = load i32* %5, align 4, !tbaa !5
%8 = getelementptr inbounds i32** %coeff, i64 %index
%9 = getelementptr inbounds i32** %coeff, i64 %induction1970
%10 = load i32** %8, align 8, !tbaa !27
%11 = load i32** %9, align 8, !tbaa !27
%12 = getelementptr inbounds i32* %10, i64 %indvars.iv7
%13 = getelementptr inbounds i32* %11, i64 %indvars.iv7
%14 = load i32* %12, align 4, !tbaa !5
%15 = load i32* %13, align 4, !tbaa !5
%16 = mul nsw i32 %14, %6
%17 = mul nsw i32 %15, %7
%18 = add nsw i32 %16, %vec.phi
%19 = add nsw i32 %17, %vec.phi20
%index.next = add i64 %index, 2
%20 = icmp eq i64 %index.next, 1024
br i1 %20, label %middle.block, label %vector.body, !llvm.loop !29
middle.block: ; preds = %vector.body
%bin.rdx = add i32 %19, %18
%indvars.iv.next8 = add nuw nsw i64 %indvars.iv7, 1
%exitcond9 = icmp eq i64 %indvars.iv.next8, 32
br i1 %exitcond9, label %.preheader1.113, label %vector.ph
.preheader1.113: ; preds = %middle.block
store i32 %bin.rdx, i32* %out, align 4, !tbaa !5
br label %vector.ph22
vector.ph22: ; preds = %.preheader1.113, %middle.block24
%indvars.iv7.1 = phi i64 [ 0, %.preheader1.113 ], [ %indvars.iv.next8.1, %middle.block24 ]
%sum.05.1 = phi i32 [ 0, %.preheader1.113 ], [ %bin.rdx37, %middle.block24 ]
br label %vector.body23
vector.body23: ; preds = %vector.body23, %vector.ph22
%index26 = phi i64 [ 0, %vector.ph22 ], [ %index.next30, %vector.body23 ]
%vec.phi33 = phi i32 [ %sum.05.1, %vector.ph22 ], [ %41, %vector.body23 ]
%vec.phi34 = phi i32 [ 0, %vector.ph22 ], [ %42, %vector.body23 ]
%induction3271 = or i64 %index26, 1
%21 = or i64 %index26, 1
%22 = add nsw i64 %induction3271, 1
%23 = getelementptr inbounds i32** %in, i64 %21
%24 = getelementptr inbounds i32** %in, i64 %22
%25 = load i32** %23, align 8, !tbaa !27
%26 = load i32** %24, align 8, !tbaa !27
%27 = getelementptr inbounds i32* %25, i64 %indvars.iv7.1
%28 = getelementptr inbounds i32* %26, i64 %indvars.iv7.1
%29 = load i32* %27, align 4, !tbaa !5
%30 = load i32* %28, align 4, !tbaa !5
%31 = getelementptr inbounds i32** %coeff, i64 %index26
%32 = getelementptr inbounds i32** %coeff, i64 %induction3271
%33 = load i32** %31, align 8, !tbaa !27
%34 = load i32** %32, align 8, !tbaa !27
%35 = getelementptr inbounds i32* %33, i64 %indvars.iv7.1
%36 = getelementptr inbounds i32* %34, i64 %indvars.iv7.1
%37 = load i32* %35, align 4, !tbaa !5
%38 = load i32* %36, align 4, !tbaa !5
%39 = mul nsw i32 %37, %29
%40 = mul nsw i32 %38, %30
%41 = add nsw i32 %39, %vec.phi33
%42 = add nsw i32 %40, %vec.phi34
%index.next30 = add i64 %index26, 2
%43 = icmp eq i64 %index.next30, 1024
br i1 %43, label %middle.block24, label %vector.body23, !llvm.loop !30
middle.block24: ; preds = %vector.body23
%bin.rdx37 = add i32 %42, %41
%indvars.iv.next8.1 = add nuw nsw i64 %indvars.iv7.1, 1
%exitcond9.1 = icmp eq i64 %indvars.iv.next8.1, 32
br i1 %exitcond9.1, label %.preheader1.214, label %vector.ph22
.preheader1.214: ; preds = %middle.block24
%44 = getelementptr inbounds i32* %out, i64 1
store i32 %bin.rdx37, i32* %44, align 4, !tbaa !5
br label %vector.ph38
vector.ph38: ; preds = %.preheader1.214, %middle.block40
%indvars.iv7.2 = phi i64 [ 0, %.preheader1.214 ], [ %indvars.iv.next8.2, %middle.block40 ]
%sum.05.2 = phi i32 [ 0, %.preheader1.214 ], [ %bin.rdx53, %middle.block40 ]
br label %vector.body39
vector.body39: ; preds = %vector.body39, %vector.ph38
%index42 = phi i64 [ 0, %vector.ph38 ], [ %index.next46, %vector.body39 ]
%vec.phi49 = phi i32 [ %sum.05.2, %vector.ph38 ], [ %65, %vector.body39 ]
%vec.phi50 = phi i32 [ 0, %vector.ph38 ], [ %66, %vector.body39 ]
%induction4872 = or i64 %index42, 1
%45 = add nsw i64 %index42, 2
%46 = add nsw i64 %induction4872, 2
%47 = getelementptr inbounds i32** %in, i64 %45
%48 = getelementptr inbounds i32** %in, i64 %46
%49 = load i32** %47, align 8, !tbaa !27
%50 = load i32** %48, align 8, !tbaa !27
%51 = getelementptr inbounds i32* %49, i64 %indvars.iv7.2
%52 = getelementptr inbounds i32* %50, i64 %indvars.iv7.2
%53 = load i32* %51, align 4, !tbaa !5
%54 = load i32* %52, align 4, !tbaa !5
%55 = getelementptr inbounds i32** %coeff, i64 %index42
%56 = getelementptr inbounds i32** %coeff, i64 %induction4872
%57 = load i32** %55, align 8, !tbaa !27
%58 = load i32** %56, align 8, !tbaa !27
%59 = getelementptr inbounds i32* %57, i64 %indvars.iv7.2
%60 = getelementptr inbounds i32* %58, i64 %indvars.iv7.2
%61 = load i32* %59, align 4, !tbaa !5
%62 = load i32* %60, align 4, !tbaa !5
%63 = mul nsw i32 %61, %53
%64 = mul nsw i32 %62, %54
%65 = add nsw i32 %63, %vec.phi49
%66 = add nsw i32 %64, %vec.phi50
%index.next46 = add i64 %index42, 2
%67 = icmp eq i64 %index.next46, 1024
br i1 %67, label %middle.block40, label %vector.body39, !llvm.loop !31
middle.block40: ; preds = %vector.body39
%bin.rdx53 = add i32 %66, %65
%indvars.iv.next8.2 = add nuw nsw i64 %indvars.iv7.2, 1
%exitcond9.2 = icmp eq i64 %indvars.iv.next8.2, 32
br i1 %exitcond9.2, label %.preheader1.315, label %vector.ph38
.preheader1.315: ; preds = %middle.block40
%68 = getelementptr inbounds i32* %out, i64 2
store i32 %bin.rdx53, i32* %68, align 4, !tbaa !5
br label %vector.ph54
vector.ph54: ; preds = %.preheader1.315, %middle.block56
%indvars.iv7.3 = phi i64 [ 0, %.preheader1.315 ], [ %indvars.iv.next8.3, %middle.block56 ]
%sum.05.3 = phi i32 [ 0, %.preheader1.315 ], [ %bin.rdx69, %middle.block56 ]
br label %vector.body55
vector.body55: ; preds = %vector.body55, %vector.ph54
%index58 = phi i64 [ 0, %vector.ph54 ], [ %index.next62, %vector.body55 ]
%vec.phi65 = phi i32 [ %sum.05.3, %vector.ph54 ], [ %89, %vector.body55 ]
%vec.phi66 = phi i32 [ 0, %vector.ph54 ], [ %90, %vector.body55 ]
%induction6473 = or i64 %index58, 1
%69 = add nsw i64 %index58, 3
%70 = add nsw i64 %induction6473, 3
%71 = getelementptr inbounds i32** %in, i64 %69
%72 = getelementptr inbounds i32** %in, i64 %70
%73 = load i32** %71, align 8, !tbaa !27
%74 = load i32** %72, align 8, !tbaa !27
%75 = getelementptr inbounds i32* %73, i64 %indvars.iv7.3
%76 = getelementptr inbounds i32* %74, i64 %indvars.iv7.3
%77 = load i32* %75, align 4, !tbaa !5
%78 = load i32* %76, align 4, !tbaa !5
%79 = getelementptr inbounds i32** %coeff, i64 %index58
%80 = getelementptr inbounds i32** %coeff, i64 %induction6473
%81 = load i32** %79, align 8, !tbaa !27
%82 = load i32** %80, align 8, !tbaa !27
%83 = getelementptr inbounds i32* %81, i64 %indvars.iv7.3
%84 = getelementptr inbounds i32* %82, i64 %indvars.iv7.3
%85 = load i32* %83, align 4, !tbaa !5
%86 = load i32* %84, align 4, !tbaa !5
%87 = mul nsw i32 %85, %77
%88 = mul nsw i32 %86, %78
%89 = add nsw i32 %87, %vec.phi65
%90 = add nsw i32 %88, %vec.phi66
%index.next62 = add i64 %index58, 2
%91 = icmp eq i64 %index.next62, 1024
br i1 %91, label %middle.block56, label %vector.body55, !llvm.loop !32
middle.block56: ; preds = %vector.body55
%bin.rdx69 = add i32 %90, %89
%indvars.iv.next8.3 = add nuw nsw i64 %indvars.iv7.3, 1
%exitcond9.3 = icmp eq i64 %indvars.iv.next8.3, 32
br i1 %exitcond9.3, label %92, label %vector.ph54
; <label>:92 ; preds = %middle.block56
%93 = getelementptr inbounds i32* %out, i64 3
store i32 %bin.rdx69, i32* %93, align 4, !tbaa !5
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example21Pii(i32* nocapture %b, i32 %n) #2 {
%1 = icmp sgt i32 %n, 0
br i1 %1, label %.lr.ph, label %._crit_edge
.lr.ph: ; preds = %0
%2 = sext i32 %n to i64
%3 = add i32 %n, -1
%4 = zext i32 %3 to i64
%5 = add i64 %4, 1
%end.idx = add i64 %4, 1
%n.vec = and i64 %5, 8589934584
%cmp.zero = icmp eq i64 %n.vec, 0
%rev.ind.end = sub i64 %2, %n.vec
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph ]
%vec.phi = phi <4 x i32> [ %10, %vector.body ], [ zeroinitializer, %.lr.ph ]
%vec.phi5 = phi <4 x i32> [ %11, %vector.body ], [ zeroinitializer, %.lr.ph ]
%reverse.idx = sub i64 %2, %index
%.sum = add i64 %reverse.idx, -4
%6 = getelementptr i32* %b, i64 %.sum
%7 = bitcast i32* %6 to <4 x i32>*
%wide.load = load <4 x i32>* %7, align 4
%reverse = shufflevector <4 x i32> %wide.load, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%.sum13 = add i64 %reverse.idx, -8
%8 = getelementptr i32* %b, i64 %.sum13
%9 = bitcast i32* %8 to <4 x i32>*
%wide.load6 = load <4 x i32>* %9, align 4
%reverse7 = shufflevector <4 x i32> %wide.load6, <4 x i32> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%10 = add nsw <4 x i32> %reverse, %vec.phi
%11 = add nsw <4 x i32> %reverse7, %vec.phi5
%index.next = add i64 %index, 8
%12 = icmp eq i64 %index.next, %n.vec
br i1 %12, label %middle.block, label %vector.body, !llvm.loop !33
middle.block: ; preds = %vector.body, %.lr.ph
%resume.val = phi i64 [ %2, %.lr.ph ], [ %rev.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph ], [ %n.vec, %vector.body ]
%rdx.vec.exit.phi = phi <4 x i32> [ zeroinitializer, %.lr.ph ], [ %10, %vector.body ]
%rdx.vec.exit.phi8 = phi <4 x i32> [ zeroinitializer, %.lr.ph ], [ %11, %vector.body ]
%bin.rdx = add <4 x i32> %rdx.vec.exit.phi8, %rdx.vec.exit.phi
%rdx.shuf = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx9 = add <4 x i32> %bin.rdx, %rdx.shuf
%rdx.shuf10 = shufflevector <4 x i32> %bin.rdx9, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx11 = add <4 x i32> %bin.rdx9, %rdx.shuf10
%13 = extractelement <4 x i32> %bin.rdx11, i32 0
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %._crit_edge, label %scalar.ph
scalar.ph: ; preds = %middle.block, %scalar.ph
%indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %resume.val, %middle.block ]
%a.02 = phi i32 [ %16, %scalar.ph ], [ %13, %middle.block ]
%indvars.iv.next = add nsw i64 %indvars.iv, -1
%14 = getelementptr inbounds i32* %b, i64 %indvars.iv.next
%15 = load i32* %14, align 4, !tbaa !5
%16 = add nsw i32 %15, %a.02
%17 = trunc i64 %indvars.iv.next to i32
%18 = icmp sgt i32 %17, 0
br i1 %18, label %scalar.ph, label %._crit_edge, !llvm.loop !34
._crit_edge: ; preds = %scalar.ph, %middle.block, %0
%a.0.lcssa = phi i32 [ 0, %0 ], [ %16, %scalar.ph ], [ %13, %middle.block ]
store i32 %a.0.lcssa, i32* %b, align 4, !tbaa !5
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example23PtPj(i16* nocapture readonly %src, i32* nocapture %dst) #2 {
vector.memcheck:
%scevgep8 = getelementptr i16* %src, i64 255
%scevgep = getelementptr i32* %dst, i64 255
%0 = bitcast i32* %scevgep to i16*
%1 = bitcast i16* %scevgep8 to i32*
%bound1 = icmp uge i16* %0, %src
%bound0 = icmp uge i32* %1, %dst
%memcheck.conflict = and i1 %bound0, %bound1
%ptr.ind.end = getelementptr i32* %dst, i64 256
%ptr.ind.end12 = getelementptr i16* %src, i64 256
br i1 %memcheck.conflict, label %middle.block, label %vector.body
vector.body: ; preds = %vector.memcheck, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
%next.gep = getelementptr i32* %dst, i64 %index
%next.gep37 = getelementptr i16* %src, i64 %index
%2 = bitcast i16* %next.gep37 to <4 x i16>*
%wide.load = load <4 x i16>* %2, align 2
%next.gep37.sum79 = or i64 %index, 4
%3 = getelementptr i16* %src, i64 %next.gep37.sum79
%4 = bitcast i16* %3 to <4 x i16>*
%wide.load60 = load <4 x i16>* %4, align 2
%5 = zext <4 x i16> %wide.load to <4 x i32>
%6 = zext <4 x i16> %wide.load60 to <4 x i32>
%7 = shl nuw nsw <4 x i32> %5, <i32 7, i32 7, i32 7, i32 7>
%8 = shl nuw nsw <4 x i32> %6, <i32 7, i32 7, i32 7, i32 7>
%9 = bitcast i32* %next.gep to <4 x i32>*
store <4 x i32> %7, <4 x i32>* %9, align 4
%next.gep.sum84 = or i64 %index, 4
%10 = getelementptr i32* %dst, i64 %next.gep.sum84
%11 = bitcast i32* %10 to <4 x i32>*
store <4 x i32> %8, <4 x i32>* %11, align 4
%index.next = add i64 %index, 8
%12 = icmp eq i64 %index.next, 256
br i1 %12, label %middle.block, label %vector.body, !llvm.loop !35
middle.block: ; preds = %vector.body, %vector.memcheck
%resume.val = phi i1 [ false, %vector.memcheck ], [ true, %vector.body ]
%trunc.resume.val = phi i32 [ 0, %vector.memcheck ], [ 256, %vector.body ]
%resume.val10 = phi i32* [ %dst, %vector.memcheck ], [ %ptr.ind.end, %vector.body ]
%resume.val11 = phi i16* [ %src, %vector.memcheck ], [ %ptr.ind.end12, %vector.body ]
br i1 %resume.val, label %19, label %scalar.ph
scalar.ph: ; preds = %middle.block, %scalar.ph
%i.04 = phi i32 [ %18, %scalar.ph ], [ %trunc.resume.val, %middle.block ]
%.03 = phi i32* [ %17, %scalar.ph ], [ %resume.val10, %middle.block ]
%.012 = phi i16* [ %13, %scalar.ph ], [ %resume.val11, %middle.block ]
%13 = getelementptr inbounds i16* %.012, i64 1
%14 = load i16* %.012, align 2, !tbaa !36
%15 = zext i16 %14 to i32
%16 = shl nuw nsw i32 %15, 7
%17 = getelementptr inbounds i32* %.03, i64 1
store i32 %16, i32* %.03, align 4, !tbaa !5
%18 = add nsw i32 %i.04, 1
%exitcond = icmp eq i32 %18, 256
br i1 %exitcond, label %19, label %scalar.ph, !llvm.loop !38
; <label>:19 ; preds = %middle.block, %scalar.ph
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example24ss(i16 signext %x, i16 signext %y) #2 {
vector.ph:
%broadcast.splatinsert3 = insertelement <4 x i16> undef, i16 %x, i32 0
%broadcast.splat4 = shufflevector <4 x i16> %broadcast.splatinsert3, <4 x i16> undef, <4 x i32> zeroinitializer
%broadcast.splatinsert5 = insertelement <4 x i16> undef, i16 %y, i32 0
%broadcast.splat6 = shufflevector <4 x i16> %broadcast.splatinsert5, <4 x i16> undef, <4 x i32> zeroinitializer
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [1024 x float]* @fa, i64 0, i64 %index
%1 = bitcast float* %0 to <4 x float>*
%wide.load = load <4 x float>* %1, align 16
%2 = getelementptr inbounds [1024 x float]* @fb, i64 0, i64 %index
%3 = bitcast float* %2 to <4 x float>*
%wide.load2 = load <4 x float>* %3, align 16
%4 = fcmp olt <4 x float> %wide.load, %wide.load2
%5 = select <4 x i1> %4, <4 x i16> %broadcast.splat4, <4 x i16> %broadcast.splat6
%6 = sext <4 x i16> %5 to <4 x i32>
%7 = getelementptr inbounds [1024 x i32]* @ic, i64 0, i64 %index
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> %6, <4 x i32>* %8, align 16
%index.next = add i64 %index, 4
%9 = icmp eq i64 %index.next, 1024
br i1 %9, label %middle.block, label %vector.body, !llvm.loop !39
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: noinline nounwind uwtable
define void @_Z9example25v() #2 {
vector.ph:
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%0 = getelementptr inbounds [1024 x float]* @da, i64 0, i64 %index
%1 = bitcast float* %0 to <4 x float>*
%wide.load = load <4 x float>* %1, align 16
%2 = getelementptr inbounds [1024 x float]* @db, i64 0, i64 %index
%3 = bitcast float* %2 to <4 x float>*
%wide.load2 = load <4 x float>* %3, align 16
%4 = fcmp olt <4 x float> %wide.load, %wide.load2
%5 = getelementptr inbounds [1024 x float]* @dc, i64 0, i64 %index
%6 = bitcast float* %5 to <4 x float>*
%wide.load3 = load <4 x float>* %6, align 16
%7 = getelementptr inbounds [1024 x float]* @dd, i64 0, i64 %index
%8 = bitcast float* %7 to <4 x float>*
%wide.load4 = load <4 x float>* %8, align 16
%9 = fcmp olt <4 x float> %wide.load3, %wide.load4
%10 = and <4 x i1> %4, %9
%11 = zext <4 x i1> %10 to <4 x i32>
%12 = getelementptr inbounds [1024 x i32]* @dj, i64 0, i64 %index
%13 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %11, <4 x i32>* %13, align 16
%index.next = add i64 %index, 4
%14 = icmp eq i64 %index.next, 1024
br i1 %14, label %middle.block, label %vector.body, !llvm.loop !40
middle.block: ; preds = %vector.body
ret void
}
; Function Attrs: nounwind uwtable
define void @_Z11init_memoryPvS_(i8* %start, i8* readnone %end) #3 {
%1 = icmp eq i8* %start, %end
br i1 %1, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %0, %.lr.ph
%state.02 = phi i32 [ %6, %.lr.ph ], [ 1, %0 ]
%.01 = phi i8* [ %8, %.lr.ph ], [ %start, %0 ]
%2 = and i32 %state.02, 255
%3 = mul nsw i32 %2, 7
%4 = and i32 %3, 255
%5 = xor i32 %4, 39
%6 = add nsw i32 %5, 1
%7 = trunc i32 %6 to i8
store i8 %7, i8* %.01, align 1, !tbaa !41
%8 = getelementptr inbounds i8* %.01, i64 1
%9 = icmp eq i8* %8, %end
br i1 %9, label %._crit_edge, label %.lr.ph
._crit_edge: ; preds = %.lr.ph, %0
ret void
}
; Function Attrs: nounwind uwtable
define void @_Z17init_memory_floatPfS_(float* %start, float* readnone %end) #3 {
%1 = icmp eq float* %start, %end
br i1 %1, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %0, %.lr.ph
%state.02 = phi float [ %4, %.lr.ph ], [ 1.000000e+00, %0 ]
%.01 = phi float* [ %5, %.lr.ph ], [ %start, %0 ]
%2 = fpext float %state.02 to double
%3 = fmul double %2, 1.100000e+00
%4 = fptrunc double %3 to float
store float %4, float* %.01, align 4, !tbaa !42
%5 = getelementptr inbounds float* %.01, i64 1
%6 = icmp eq float* %5, %end
br i1 %6, label %._crit_edge, label %.lr.ph
._crit_edge: ; preds = %.lr.ph, %0
ret void
}
; Function Attrs: nounwind readonly uwtable
define i32 @_Z13digest_memoryPvS_(i8* readonly %start, i8* readnone %end) #4 {
%1 = icmp eq i8* %start, %end
br i1 %1, label %._crit_edge, label %.lr.ph
.lr.ph: ; preds = %0, %.lr.ph
%state.02 = phi i32 [ %8, %.lr.ph ], [ 1, %0 ]
%.01 = phi i8* [ %9, %.lr.ph ], [ %start, %0 ]
%2 = mul i32 %state.02, 3
%3 = load i8* %.01, align 1, !tbaa !41
%4 = zext i8 %3 to i32
%5 = xor i32 %4, %2
%6 = lshr i32 %2, 8
%7 = shl i32 %5, 8
%8 = xor i32 %7, %6
%9 = getelementptr inbounds i8* %.01, i64 1
%10 = icmp eq i8* %9, %end
br i1 %10, label %._crit_edge, label %.lr.ph
._crit_edge: ; preds = %.lr.ph, %0
%state.0.lcssa = phi i32 [ 1, %0 ], [ %8, %.lr.ph ]
ret i32 %state.0.lcssa
}
; Function Attrs: uwtable
define i32 @main(i32 %argc, i8** nocapture readnone %argv) #5 {
%results = alloca %"class.std::vector", align 8
%dummy = alloca i32, align 4
%atimer = alloca %class.Timer, align 8
%r = alloca i32, align 4
%atimer1 = alloca %class.Timer, align 8
%r3 = alloca i32, align 4
%atimer4 = alloca %class.Timer, align 8
%r6 = alloca i32, align 4
%atimer7 = alloca %class.Timer, align 8
%r9 = alloca i32, align 4
%atimer10 = alloca %class.Timer, align 8
%r12 = alloca i32, align 4
%atimer13 = alloca %class.Timer, align 8
%r15 = alloca i32, align 4
%atimer16 = alloca %class.Timer, align 8
%r18 = alloca i32, align 4
%atimer19 = alloca %class.Timer, align 8
%r21 = alloca i32, align 4
%atimer22 = alloca %class.Timer, align 8
%r24 = alloca i32, align 4
%atimer25 = alloca %class.Timer, align 8
%r27 = alloca i32, align 4
%atimer28 = alloca %class.Timer, align 8
%r30 = alloca i32, align 4
%atimer31 = alloca %class.Timer, align 8
%r33 = alloca i32, align 4
%atimer34 = alloca %class.Timer, align 8
%r36 = alloca i32, align 4
%atimer37 = alloca %class.Timer, align 8
%r39 = alloca i32, align 4
%atimer40 = alloca %class.Timer, align 8
%r42 = alloca i32, align 4
%atimer43 = alloca %class.Timer, align 8
%r45 = alloca i32, align 4
%atimer46 = alloca %class.Timer, align 8
%r48 = alloca i32, align 4
%1 = bitcast %"class.std::vector"* %results to i8*
call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 24, i32 8, i1 false) #1
store i32 0, i32* %dummy, align 4, !tbaa !5
br label %.lr.ph.i
.lr.ph.i: ; preds = %.lr.ph.i, %0
%state.02.i = phi i32 [ %6, %.lr.ph.i ], [ 1, %0 ]
%.01.i = phi i8* [ %8, %.lr.ph.i ], [ bitcast ([1024 x i32]* @ia to i8*), %0 ]
%2 = and i32 %state.02.i, 255
%3 = mul nsw i32 %2, 7
%4 = and i32 %3, 255
%5 = xor i32 %4, 39
%6 = add nsw i32 %5, 1
%7 = trunc i32 %6 to i8
store i8 %7, i8* %.01.i, align 1, !tbaa !41
%8 = getelementptr inbounds i8* %.01.i, i64 1
%9 = icmp eq i8* %8, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %9, label %.lr.ph.i54.preheader, label %.lr.ph.i
.lr.ph.i54.preheader: ; preds = %.lr.ph.i
%10 = icmp sgt i32 %argc, 1
br label %.lr.ph.i54
.lr.ph.i54: ; preds = %.lr.ph.i54.preheader, %.lr.ph.i54
%state.02.i52 = phi i32 [ %15, %.lr.ph.i54 ], [ 1, %.lr.ph.i54.preheader ]
%.01.i53 = phi i8* [ %17, %.lr.ph.i54 ], [ bitcast ([1024 x i32]* @ib to i8*), %.lr.ph.i54.preheader ]
%11 = and i32 %state.02.i52, 255
%12 = mul nsw i32 %11, 7
%13 = and i32 %12, 255
%14 = xor i32 %13, 39
%15 = add nsw i32 %14, 1
%16 = trunc i32 %15 to i8
store i8 %16, i8* %.01.i53, align 1, !tbaa !41
%17 = getelementptr inbounds i8* %.01.i53, i64 1
%18 = icmp eq i8* %17, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ib, i64 1, i64 0) to i8*)
br i1 %18, label %.lr.ph.i59, label %.lr.ph.i54
.lr.ph.i59: ; preds = %.lr.ph.i54, %.lr.ph.i59
%state.02.i57 = phi i32 [ %23, %.lr.ph.i59 ], [ 1, %.lr.ph.i54 ]
%.01.i58 = phi i8* [ %25, %.lr.ph.i59 ], [ bitcast ([1024 x i32]* @ic to i8*), %.lr.ph.i54 ]
%19 = and i32 %state.02.i57, 255
%20 = mul nsw i32 %19, 7
%21 = and i32 %20, 255
%22 = xor i32 %21, 39
%23 = add nsw i32 %22, 1
%24 = trunc i32 %23 to i8
store i8 %24, i8* %.01.i58, align 1, !tbaa !41
%25 = getelementptr inbounds i8* %.01.i58, i64 1
%26 = icmp eq i8* %25, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ic, i64 1, i64 0) to i8*)
br i1 %26, label %.lr.ph.i63, label %.lr.ph.i59
.lr.ph.i63: ; preds = %.lr.ph.i59, %.lr.ph.i63
%state.02.i61 = phi i32 [ %31, %.lr.ph.i63 ], [ 1, %.lr.ph.i59 ]
%.01.i62 = phi i8* [ %33, %.lr.ph.i63 ], [ bitcast ([1024 x i16]* @sa to i8*), %.lr.ph.i59 ]
%27 = and i32 %state.02.i61, 255
%28 = mul nsw i32 %27, 7
%29 = and i32 %28, 255
%30 = xor i32 %29, 39
%31 = add nsw i32 %30, 1
%32 = trunc i32 %31 to i8
store i8 %32, i8* %.01.i62, align 1, !tbaa !41
%33 = getelementptr inbounds i8* %.01.i62, i64 1
%34 = icmp eq i8* %33, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sa, i64 1, i64 0) to i8*)
br i1 %34, label %.lr.ph.i67, label %.lr.ph.i63
.lr.ph.i67: ; preds = %.lr.ph.i63, %.lr.ph.i67
%state.02.i65 = phi i32 [ %39, %.lr.ph.i67 ], [ 1, %.lr.ph.i63 ]
%.01.i66 = phi i8* [ %41, %.lr.ph.i67 ], [ bitcast ([1024 x i16]* @sb to i8*), %.lr.ph.i63 ]
%35 = and i32 %state.02.i65, 255
%36 = mul nsw i32 %35, 7
%37 = and i32 %36, 255
%38 = xor i32 %37, 39
%39 = add nsw i32 %38, 1
%40 = trunc i32 %39 to i8
store i8 %40, i8* %.01.i66, align 1, !tbaa !41
%41 = getelementptr inbounds i8* %.01.i66, i64 1
%42 = icmp eq i8* %41, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sb, i64 1, i64 0) to i8*)
br i1 %42, label %.lr.ph.i71, label %.lr.ph.i67
.lr.ph.i71: ; preds = %.lr.ph.i67, %.lr.ph.i71
%state.02.i69 = phi i32 [ %47, %.lr.ph.i71 ], [ 1, %.lr.ph.i67 ]
%.01.i70 = phi i8* [ %49, %.lr.ph.i71 ], [ bitcast ([1024 x i16]* @sc to i8*), %.lr.ph.i67 ]
%43 = and i32 %state.02.i69, 255
%44 = mul nsw i32 %43, 7
%45 = and i32 %44, 255
%46 = xor i32 %45, 39
%47 = add nsw i32 %46, 1
%48 = trunc i32 %47 to i8
store i8 %48, i8* %.01.i70, align 1, !tbaa !41
%49 = getelementptr inbounds i8* %.01.i70, i64 1
%50 = icmp eq i8* %49, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sc, i64 1, i64 0) to i8*)
br i1 %50, label %.lr.ph.i76, label %.lr.ph.i71
.lr.ph.i76: ; preds = %.lr.ph.i71, %.lr.ph.i76
%state.02.i74 = phi i32 [ %55, %.lr.ph.i76 ], [ 1, %.lr.ph.i71 ]
%.01.i75 = phi i8* [ %57, %.lr.ph.i76 ], [ bitcast ([2048 x i32]* @a to i8*), %.lr.ph.i71 ]
%51 = and i32 %state.02.i74, 255
%52 = mul nsw i32 %51, 7
%53 = and i32 %52, 255
%54 = xor i32 %53, 39
%55 = add nsw i32 %54, 1
%56 = trunc i32 %55 to i8
store i8 %56, i8* %.01.i75, align 1, !tbaa !41
%57 = getelementptr inbounds i8* %.01.i75, i64 1
%58 = icmp eq i8* %57, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 1, i64 0) to i8*)
br i1 %58, label %.lr.ph.i80, label %.lr.ph.i76
.lr.ph.i80: ; preds = %.lr.ph.i76, %.lr.ph.i80
%state.02.i78 = phi i32 [ %63, %.lr.ph.i80 ], [ 1, %.lr.ph.i76 ]
%.01.i79 = phi i8* [ %65, %.lr.ph.i80 ], [ bitcast ([2048 x i32]* @b to i8*), %.lr.ph.i76 ]
%59 = and i32 %state.02.i78, 255
%60 = mul nsw i32 %59, 7
%61 = and i32 %60, 255
%62 = xor i32 %61, 39
%63 = add nsw i32 %62, 1
%64 = trunc i32 %63 to i8
store i8 %64, i8* %.01.i79, align 1, !tbaa !41
%65 = getelementptr inbounds i8* %.01.i79, i64 1
%66 = icmp eq i8* %65, bitcast (i32* getelementptr inbounds ([2048 x i32]* @b, i64 1, i64 0) to i8*)
br i1 %66, label %.lr.ph.i85, label %.lr.ph.i80
.lr.ph.i85: ; preds = %.lr.ph.i80, %.lr.ph.i85
%state.02.i83 = phi i32 [ %71, %.lr.ph.i85 ], [ 1, %.lr.ph.i80 ]
%.01.i84 = phi i8* [ %73, %.lr.ph.i85 ], [ bitcast ([2048 x i32]* @c to i8*), %.lr.ph.i80 ]
%67 = and i32 %state.02.i83, 255
%68 = mul nsw i32 %67, 7
%69 = and i32 %68, 255
%70 = xor i32 %69, 39
%71 = add nsw i32 %70, 1
%72 = trunc i32 %71 to i8
store i8 %72, i8* %.01.i84, align 1, !tbaa !41
%73 = getelementptr inbounds i8* %.01.i84, i64 1
%74 = icmp eq i8* %73, bitcast (i32* getelementptr inbounds ([2048 x i32]* @c, i64 1, i64 0) to i8*)
br i1 %74, label %.lr.ph.i89, label %.lr.ph.i85
.lr.ph.i89: ; preds = %.lr.ph.i85, %.lr.ph.i89
%state.02.i87 = phi i32 [ %79, %.lr.ph.i89 ], [ 1, %.lr.ph.i85 ]
%.01.i88 = phi i8* [ %81, %.lr.ph.i89 ], [ bitcast ([1024 x i32]* @ua to i8*), %.lr.ph.i85 ]
%75 = and i32 %state.02.i87, 255
%76 = mul nsw i32 %75, 7
%77 = and i32 %76, 255
%78 = xor i32 %77, 39
%79 = add nsw i32 %78, 1
%80 = trunc i32 %79 to i8
store i8 %80, i8* %.01.i88, align 1, !tbaa !41
%81 = getelementptr inbounds i8* %.01.i88, i64 1
%82 = icmp eq i8* %81, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ua, i64 1, i64 0) to i8*)
br i1 %82, label %.lr.ph.i95, label %.lr.ph.i89
.lr.ph.i95: ; preds = %.lr.ph.i89, %.lr.ph.i95
%state.02.i93 = phi i32 [ %87, %.lr.ph.i95 ], [ 1, %.lr.ph.i89 ]
%.01.i94 = phi i8* [ %89, %.lr.ph.i95 ], [ bitcast ([1024 x i32]* @ub to i8*), %.lr.ph.i89 ]
%83 = and i32 %state.02.i93, 255
%84 = mul nsw i32 %83, 7
%85 = and i32 %84, 255
%86 = xor i32 %85, 39
%87 = add nsw i32 %86, 1
%88 = trunc i32 %87 to i8
store i8 %88, i8* %.01.i94, align 1, !tbaa !41
%89 = getelementptr inbounds i8* %.01.i94, i64 1
%90 = icmp eq i8* %89, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ub, i64 1, i64 0) to i8*)
br i1 %90, label %.lr.ph.i99, label %.lr.ph.i95
.lr.ph.i99: ; preds = %.lr.ph.i95, %.lr.ph.i99
%state.02.i97 = phi i32 [ %95, %.lr.ph.i99 ], [ 1, %.lr.ph.i95 ]
%.01.i98 = phi i8* [ %97, %.lr.ph.i99 ], [ bitcast ([1024 x i32]* @uc to i8*), %.lr.ph.i95 ]
%91 = and i32 %state.02.i97, 255
%92 = mul nsw i32 %91, 7
%93 = and i32 %92, 255
%94 = xor i32 %93, 39
%95 = add nsw i32 %94, 1
%96 = trunc i32 %95 to i8
store i8 %96, i8* %.01.i98, align 1, !tbaa !41
%97 = getelementptr inbounds i8* %.01.i98, i64 1
%98 = icmp eq i8* %97, bitcast (i32* getelementptr inbounds ([1024 x i32]* @uc, i64 1, i64 0) to i8*)
br i1 %98, label %.lr.ph.i103, label %.lr.ph.i99
.lr.ph.i103: ; preds = %.lr.ph.i99, %.lr.ph.i103
%state.02.i101 = phi i32 [ %103, %.lr.ph.i103 ], [ 1, %.lr.ph.i99 ]
%.01.i102 = phi i8* [ %105, %.lr.ph.i103 ], [ bitcast ([32 x [1024 x i32]]* @G to i8*), %.lr.ph.i99 ]
%99 = and i32 %state.02.i101, 255
%100 = mul nsw i32 %99, 7
%101 = and i32 %100, 255
%102 = xor i32 %101, 39
%103 = add nsw i32 %102, 1
%104 = trunc i32 %103 to i8
store i8 %104, i8* %.01.i102, align 1, !tbaa !41
%105 = getelementptr inbounds i8* %.01.i102, i64 1
%106 = icmp eq i8* %105, bitcast (i32* getelementptr inbounds ([32 x [1024 x i32]]* @G, i64 0, i64 1, i64 0) to i8*)
br i1 %106, label %.lr.ph.i107, label %.lr.ph.i103
.lr.ph.i107: ; preds = %.lr.ph.i103, %.lr.ph.i107
%state.02.i105 = phi float [ %109, %.lr.ph.i107 ], [ 1.000000e+00, %.lr.ph.i103 ]
%.01.i106 = phi float* [ %110, %.lr.ph.i107 ], [ getelementptr inbounds ([1024 x float]* @fa, i64 0, i64 0), %.lr.ph.i103 ]
%107 = fpext float %state.02.i105 to double
%108 = fmul double %107, 1.100000e+00
%109 = fptrunc double %108 to float
store float %109, float* %.01.i106, align 4, !tbaa !42
%110 = getelementptr inbounds float* %.01.i106, i64 1
%111 = icmp eq float* %110, getelementptr inbounds ([1024 x float]* @fa, i64 1, i64 0)
br i1 %111, label %.lr.ph.i113, label %.lr.ph.i107
.lr.ph.i113: ; preds = %.lr.ph.i107, %.lr.ph.i113
%state.02.i111 = phi float [ %114, %.lr.ph.i113 ], [ 1.000000e+00, %.lr.ph.i107 ]
%.01.i112 = phi float* [ %115, %.lr.ph.i113 ], [ getelementptr inbounds ([1024 x float]* @fb, i64 0, i64 0), %.lr.ph.i107 ]
%112 = fpext float %state.02.i111 to double
%113 = fmul double %112, 1.100000e+00
%114 = fptrunc double %113 to float
store float %114, float* %.01.i112, align 4, !tbaa !42
%115 = getelementptr inbounds float* %.01.i112, i64 1
%116 = icmp eq float* %115, getelementptr inbounds ([1024 x float]* @fb, i64 1, i64 0)
br i1 %116, label %.lr.ph.i117, label %.lr.ph.i113
.lr.ph.i117: ; preds = %.lr.ph.i113, %.lr.ph.i117
%state.02.i115 = phi float [ %119, %.lr.ph.i117 ], [ 1.000000e+00, %.lr.ph.i113 ]
%.01.i116 = phi float* [ %120, %.lr.ph.i117 ], [ getelementptr inbounds ([1024 x float]* @da, i64 0, i64 0), %.lr.ph.i113 ]
%117 = fpext float %state.02.i115 to double
%118 = fmul double %117, 1.100000e+00
%119 = fptrunc double %118 to float
store float %119, float* %.01.i116, align 4, !tbaa !42
%120 = getelementptr inbounds float* %.01.i116, i64 1
%121 = icmp eq float* %120, getelementptr inbounds ([1024 x float]* @da, i64 1, i64 0)
br i1 %121, label %.lr.ph.i121, label %.lr.ph.i117
.lr.ph.i121: ; preds = %.lr.ph.i117, %.lr.ph.i121
%state.02.i119 = phi float [ %124, %.lr.ph.i121 ], [ 1.000000e+00, %.lr.ph.i117 ]
%.01.i120 = phi float* [ %125, %.lr.ph.i121 ], [ getelementptr inbounds ([1024 x float]* @db, i64 0, i64 0), %.lr.ph.i117 ]
%122 = fpext float %state.02.i119 to double
%123 = fmul double %122, 1.100000e+00
%124 = fptrunc double %123 to float
store float %124, float* %.01.i120, align 4, !tbaa !42
%125 = getelementptr inbounds float* %.01.i120, i64 1
%126 = icmp eq float* %125, getelementptr inbounds ([1024 x float]* @db, i64 1, i64 0)
br i1 %126, label %.lr.ph.i125, label %.lr.ph.i121
.lr.ph.i125: ; preds = %.lr.ph.i121, %.lr.ph.i125
%state.02.i123 = phi float [ %129, %.lr.ph.i125 ], [ 1.000000e+00, %.lr.ph.i121 ]
%.01.i124 = phi float* [ %130, %.lr.ph.i125 ], [ getelementptr inbounds ([1024 x float]* @dc, i64 0, i64 0), %.lr.ph.i121 ]
%127 = fpext float %state.02.i123 to double
%128 = fmul double %127, 1.100000e+00
%129 = fptrunc double %128 to float
store float %129, float* %.01.i124, align 4, !tbaa !42
%130 = getelementptr inbounds float* %.01.i124, i64 1
%131 = icmp eq float* %130, getelementptr inbounds ([1024 x float]* @dc, i64 1, i64 0)
br i1 %131, label %.lr.ph.i129, label %.lr.ph.i125
.lr.ph.i129: ; preds = %.lr.ph.i125, %.lr.ph.i129
%state.02.i127 = phi float [ %134, %.lr.ph.i129 ], [ 1.000000e+00, %.lr.ph.i125 ]
%.01.i128 = phi float* [ %135, %.lr.ph.i129 ], [ getelementptr inbounds ([1024 x float]* @dd, i64 0, i64 0), %.lr.ph.i125 ]
%132 = fpext float %state.02.i127 to double
%133 = fmul double %132, 1.100000e+00
%134 = fptrunc double %133 to float
store float %134, float* %.01.i128, align 4, !tbaa !42
%135 = getelementptr inbounds float* %.01.i128, i64 1
%136 = icmp eq float* %135, getelementptr inbounds ([1024 x float]* @dd, i64 1, i64 0)
br i1 %136, label %_Z17init_memory_floatPfS_.exit130, label %.lr.ph.i129
_Z17init_memory_floatPfS_.exit130: ; preds = %.lr.ph.i129
call void @_Z8example1v()
%137 = bitcast %class.Timer* %atimer to i8*
call void @llvm.lifetime.start(i64 48, i8* %137) #1
%138 = getelementptr inbounds %class.Timer* %atimer, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str, i64 0, i64 0), i8** %138, align 8, !tbaa !44
%139 = getelementptr inbounds %class.Timer* %atimer, i64 0, i32 1
%140 = zext i1 %10 to i8
store i8 %140, i8* %139, align 8, !tbaa !49
%141 = getelementptr inbounds %class.Timer* %atimer, i64 0, i32 2
%142 = call i32 @gettimeofday(%struct.timeval* %141, %struct.timezone* null) #1
br label %143
; <label>:143 ; preds = %143, %_Z17init_memory_floatPfS_.exit130
%i.0272 = phi i32 [ 0, %_Z17init_memory_floatPfS_.exit130 ], [ %144, %143 ]
call void @_Z8example1v()
%144 = add nsw i32 %i.0272, 1
%exitcond304 = icmp eq i32 %144, 2621440
br i1 %exitcond304, label %.lr.ph.i136, label %143
.loopexit: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73, %.lr.ph
%lpad.loopexit = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %145
.nonloopexit: ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133, %_ZNSt6vectorIjSaIjEE9push_backERKj.exit, %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge, %663, %630
%lpad.nonloopexit = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
br label %145
; <label>:145 ; preds = %.nonloopexit, %.loopexit
%lpad.phi = phi { i8*, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.nonloopexit, %.nonloopexit ]
%146 = extractvalue { i8*, i32 } %lpad.phi, 0
%147 = extractvalue { i8*, i32 } %lpad.phi, 1
br label %689
; <label>:148 ; preds = %170
%149 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%150 = extractvalue { i8*, i32 } %149, 0
%151 = extractvalue { i8*, i32 } %149, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer)
to label %689 unwind label %697
.lr.ph.i136: ; preds = %143, %.lr.ph.i136
%state.02.i134 = phi i32 [ %158, %.lr.ph.i136 ], [ 1, %143 ]
%.01.i135 = phi i8* [ %159, %.lr.ph.i136 ], [ bitcast ([2048 x i32]* @a to i8*), %143 ]
%152 = mul i32 %state.02.i134, 3
%153 = load i8* %.01.i135, align 1, !tbaa !41
%154 = zext i8 %153 to i32
%155 = xor i32 %154, %152
%156 = lshr i32 %152, 8
%157 = shl i32 %155, 8
%158 = xor i32 %157, %156
%159 = getelementptr inbounds i8* %.01.i135, i64 1
%160 = icmp eq i8* %159, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 256) to i8*)
br i1 %160, label %_Z13digest_memoryPvS_.exit137, label %.lr.ph.i136
_Z13digest_memoryPvS_.exit137: ; preds = %.lr.ph.i136
store i32 %158, i32* %r, align 4, !tbaa !5
%161 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 1
%162 = load i32** %161, align 8, !tbaa !50
%163 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 2
%164 = load i32** %163, align 8, !tbaa !53
%165 = icmp eq i32* %162, %164
br i1 %165, label %170, label %166
; <label>:166 ; preds = %_Z13digest_memoryPvS_.exit137
%167 = icmp eq i32* %162, null
br i1 %167, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138, label %168
; <label>:168 ; preds = %166
store i32 %158, i32* %162, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138: ; preds = %168, %166
%169 = getelementptr inbounds i32* %162, i64 1
store i32* %169, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140
; <label>:170 ; preds = %_Z13digest_memoryPvS_.exit137
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %162, i32* %r)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140 unwind label %148
_ZNSt6vectorIjSaIjEE9push_backERKj.exit140: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i138, %170
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer)
to label %171 unwind label %.nonloopexit
; <label>:171 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit140
call void @llvm.lifetime.end(i64 48, i8* %137) #1
call void @_Z9example2aii(i32 1024, i32 2)
%172 = bitcast %class.Timer* %atimer1 to i8*
call void @llvm.lifetime.start(i64 48, i8* %172) #1
%173 = getelementptr inbounds %class.Timer* %atimer1, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str1, i64 0, i64 0), i8** %173, align 8, !tbaa !44
%174 = getelementptr inbounds %class.Timer* %atimer1, i64 0, i32 1
store i8 %140, i8* %174, align 8, !tbaa !49
%175 = getelementptr inbounds %class.Timer* %atimer1, i64 0, i32 2
%176 = call i32 @gettimeofday(%struct.timeval* %175, %struct.timezone* null) #1
br label %177
; <label>:177 ; preds = %177, %171
%i2.0271 = phi i32 [ 0, %171 ], [ %178, %177 ]
call void @_Z9example2aii(i32 1024, i32 2)
%178 = add nsw i32 %i2.0271, 1
%exitcond303 = icmp eq i32 %178, 1048576
br i1 %exitcond303, label %.lr.ph.i143, label %177
; <label>:179 ; preds = %199
%180 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%181 = extractvalue { i8*, i32 } %180, 0
%182 = extractvalue { i8*, i32 } %180, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer1)
to label %689 unwind label %697
.lr.ph.i143: ; preds = %177, %.lr.ph.i143
%state.02.i141 = phi i32 [ %189, %.lr.ph.i143 ], [ 1, %177 ]
%.01.i142 = phi i8* [ %190, %.lr.ph.i143 ], [ bitcast ([2048 x i32]* @b to i8*), %177 ]
%183 = mul i32 %state.02.i141, 3
%184 = load i8* %.01.i142, align 1, !tbaa !41
%185 = zext i8 %184 to i32
%186 = xor i32 %185, %183
%187 = lshr i32 %183, 8
%188 = shl i32 %186, 8
%189 = xor i32 %188, %187
%190 = getelementptr inbounds i8* %.01.i142, i64 1
%191 = icmp eq i8* %190, bitcast (i32* getelementptr inbounds ([2048 x i32]* @b, i64 0, i64 1024) to i8*)
br i1 %191, label %_Z13digest_memoryPvS_.exit144, label %.lr.ph.i143
_Z13digest_memoryPvS_.exit144: ; preds = %.lr.ph.i143
store i32 %189, i32* %r3, align 4, !tbaa !5
%192 = load i32** %161, align 8, !tbaa !50
%193 = load i32** %163, align 8, !tbaa !53
%194 = icmp eq i32* %192, %193
br i1 %194, label %199, label %195
; <label>:195 ; preds = %_Z13digest_memoryPvS_.exit144
%196 = icmp eq i32* %192, null
br i1 %196, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145, label %197
; <label>:197 ; preds = %195
store i32 %189, i32* %192, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145: ; preds = %197, %195
%198 = getelementptr inbounds i32* %192, i64 1
store i32* %198, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147
; <label>:199 ; preds = %_Z13digest_memoryPvS_.exit144
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %192, i32* %r3)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147 unwind label %179
_ZNSt6vectorIjSaIjEE9push_backERKj.exit147: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i145, %199
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer1)
to label %200 unwind label %.nonloopexit
; <label>:200 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit147
call void @llvm.lifetime.end(i64 48, i8* %172) #1
call void @_Z9example2bii(i32 1024, i32 undef)
%201 = bitcast %class.Timer* %atimer4 to i8*
call void @llvm.lifetime.start(i64 48, i8* %201) #1
%202 = getelementptr inbounds %class.Timer* %atimer4, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str2, i64 0, i64 0), i8** %202, align 8, !tbaa !44
%203 = getelementptr inbounds %class.Timer* %atimer4, i64 0, i32 1
store i8 %140, i8* %203, align 8, !tbaa !49
%204 = getelementptr inbounds %class.Timer* %atimer4, i64 0, i32 2
%205 = call i32 @gettimeofday(%struct.timeval* %204, %struct.timezone* null) #1
br label %206
; <label>:206 ; preds = %206, %200
%i5.0270 = phi i32 [ 0, %200 ], [ %207, %206 ]
call void @_Z9example2bii(i32 1024, i32 undef)
%207 = add nsw i32 %i5.0270, 1
%exitcond302 = icmp eq i32 %207, 524288
br i1 %exitcond302, label %.lr.ph.i150, label %206
; <label>:208 ; preds = %228
%209 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%210 = extractvalue { i8*, i32 } %209, 0
%211 = extractvalue { i8*, i32 } %209, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer4)
to label %689 unwind label %697
.lr.ph.i150: ; preds = %206, %.lr.ph.i150
%state.02.i148 = phi i32 [ %218, %.lr.ph.i150 ], [ 1, %206 ]
%.01.i149 = phi i8* [ %219, %.lr.ph.i150 ], [ bitcast ([2048 x i32]* @a to i8*), %206 ]
%212 = mul i32 %state.02.i148, 3
%213 = load i8* %.01.i149, align 1, !tbaa !41
%214 = zext i8 %213 to i32
%215 = xor i32 %214, %212
%216 = lshr i32 %212, 8
%217 = shl i32 %215, 8
%218 = xor i32 %217, %216
%219 = getelementptr inbounds i8* %.01.i149, i64 1
%220 = icmp eq i8* %219, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 1024) to i8*)
br i1 %220, label %_Z13digest_memoryPvS_.exit151, label %.lr.ph.i150
_Z13digest_memoryPvS_.exit151: ; preds = %.lr.ph.i150
store i32 %218, i32* %r6, align 4, !tbaa !5
%221 = load i32** %161, align 8, !tbaa !50
%222 = load i32** %163, align 8, !tbaa !53
%223 = icmp eq i32* %221, %222
br i1 %223, label %228, label %224
; <label>:224 ; preds = %_Z13digest_memoryPvS_.exit151
%225 = icmp eq i32* %221, null
br i1 %225, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152, label %226
; <label>:226 ; preds = %224
store i32 %218, i32* %221, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152: ; preds = %226, %224
%227 = getelementptr inbounds i32* %221, i64 1
store i32* %227, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154
; <label>:228 ; preds = %_Z13digest_memoryPvS_.exit151
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %221, i32* %r6)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154 unwind label %208
_ZNSt6vectorIjSaIjEE9push_backERKj.exit154: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i152, %228
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer4)
to label %229 unwind label %.nonloopexit
; <label>:229 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit154
call void @llvm.lifetime.end(i64 48, i8* %201) #1
call void @_Z8example3iPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%230 = bitcast %class.Timer* %atimer7 to i8*
call void @llvm.lifetime.start(i64 48, i8* %230) #1
%231 = getelementptr inbounds %class.Timer* %atimer7, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str3, i64 0, i64 0), i8** %231, align 8, !tbaa !44
%232 = getelementptr inbounds %class.Timer* %atimer7, i64 0, i32 1
store i8 %140, i8* %232, align 8, !tbaa !49
%233 = getelementptr inbounds %class.Timer* %atimer7, i64 0, i32 2
%234 = call i32 @gettimeofday(%struct.timeval* %233, %struct.timezone* null) #1
br label %235
; <label>:235 ; preds = %235, %229
%i8.0269 = phi i32 [ 0, %229 ], [ %236, %235 ]
call void @_Z8example3iPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%236 = add nsw i32 %i8.0269, 1
%exitcond301 = icmp eq i32 %236, 524288
br i1 %exitcond301, label %.lr.ph.i157, label %235
; <label>:237 ; preds = %257
%238 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%239 = extractvalue { i8*, i32 } %238, 0
%240 = extractvalue { i8*, i32 } %238, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer7)
to label %689 unwind label %697
.lr.ph.i157: ; preds = %235, %.lr.ph.i157
%state.02.i155 = phi i32 [ %247, %.lr.ph.i157 ], [ 1, %235 ]
%.01.i156 = phi i8* [ %248, %.lr.ph.i157 ], [ bitcast ([1024 x i32]* @ia to i8*), %235 ]
%241 = mul i32 %state.02.i155, 3
%242 = load i8* %.01.i156, align 1, !tbaa !41
%243 = zext i8 %242 to i32
%244 = xor i32 %243, %241
%245 = lshr i32 %241, 8
%246 = shl i32 %244, 8
%247 = xor i32 %246, %245
%248 = getelementptr inbounds i8* %.01.i156, i64 1
%249 = icmp eq i8* %248, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %249, label %_Z13digest_memoryPvS_.exit158, label %.lr.ph.i157
_Z13digest_memoryPvS_.exit158: ; preds = %.lr.ph.i157
store i32 %247, i32* %r9, align 4, !tbaa !5
%250 = load i32** %161, align 8, !tbaa !50
%251 = load i32** %163, align 8, !tbaa !53
%252 = icmp eq i32* %250, %251
br i1 %252, label %257, label %253
; <label>:253 ; preds = %_Z13digest_memoryPvS_.exit158
%254 = icmp eq i32* %250, null
br i1 %254, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159, label %255
; <label>:255 ; preds = %253
store i32 %247, i32* %250, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159: ; preds = %255, %253
%256 = getelementptr inbounds i32* %250, i64 1
store i32* %256, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161
; <label>:257 ; preds = %_Z13digest_memoryPvS_.exit158
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %250, i32* %r9)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161 unwind label %237
_ZNSt6vectorIjSaIjEE9push_backERKj.exit161: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i159, %257
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer7)
to label %258 unwind label %.nonloopexit
; <label>:258 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit161
call void @llvm.lifetime.end(i64 48, i8* %230) #1
call void @_Z9example4aiPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%259 = bitcast %class.Timer* %atimer10 to i8*
call void @llvm.lifetime.start(i64 48, i8* %259) #1
%260 = getelementptr inbounds %class.Timer* %atimer10, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str4, i64 0, i64 0), i8** %260, align 8, !tbaa !44
%261 = getelementptr inbounds %class.Timer* %atimer10, i64 0, i32 1
store i8 %140, i8* %261, align 8, !tbaa !49
%262 = getelementptr inbounds %class.Timer* %atimer10, i64 0, i32 2
%263 = call i32 @gettimeofday(%struct.timeval* %262, %struct.timezone* null) #1
br label %264
; <label>:264 ; preds = %264, %258
%i11.0268 = phi i32 [ 0, %258 ], [ %265, %264 ]
call void @_Z9example4aiPiS_(i32 1024, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0))
%265 = add nsw i32 %i11.0268, 1
%exitcond300 = icmp eq i32 %265, 524288
br i1 %exitcond300, label %.lr.ph.i164, label %264
; <label>:266 ; preds = %286
%267 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%268 = extractvalue { i8*, i32 } %267, 0
%269 = extractvalue { i8*, i32 } %267, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer10)
to label %689 unwind label %697
.lr.ph.i164: ; preds = %264, %.lr.ph.i164
%state.02.i162 = phi i32 [ %276, %.lr.ph.i164 ], [ 1, %264 ]
%.01.i163 = phi i8* [ %277, %.lr.ph.i164 ], [ bitcast ([1024 x i32]* @ia to i8*), %264 ]
%270 = mul i32 %state.02.i162, 3
%271 = load i8* %.01.i163, align 1, !tbaa !41
%272 = zext i8 %271 to i32
%273 = xor i32 %272, %270
%274 = lshr i32 %270, 8
%275 = shl i32 %273, 8
%276 = xor i32 %275, %274
%277 = getelementptr inbounds i8* %.01.i163, i64 1
%278 = icmp eq i8* %277, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %278, label %_Z13digest_memoryPvS_.exit165, label %.lr.ph.i164
_Z13digest_memoryPvS_.exit165: ; preds = %.lr.ph.i164
store i32 %276, i32* %r12, align 4, !tbaa !5
%279 = load i32** %161, align 8, !tbaa !50
%280 = load i32** %163, align 8, !tbaa !53
%281 = icmp eq i32* %279, %280
br i1 %281, label %286, label %282
; <label>:282 ; preds = %_Z13digest_memoryPvS_.exit165
%283 = icmp eq i32* %279, null
br i1 %283, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166, label %284
; <label>:284 ; preds = %282
store i32 %276, i32* %279, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166: ; preds = %284, %282
%285 = getelementptr inbounds i32* %279, i64 1
store i32* %285, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168
; <label>:286 ; preds = %_Z13digest_memoryPvS_.exit165
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %279, i32* %r12)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168 unwind label %266
_ZNSt6vectorIjSaIjEE9push_backERKj.exit168: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i166, %286
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer10)
to label %287 unwind label %.nonloopexit
; <label>:287 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit168
call void @llvm.lifetime.end(i64 48, i8* %259) #1
call void @_Z9example4biPiS_(i32 1014, i32* undef, i32* undef)
%288 = bitcast %class.Timer* %atimer13 to i8*
call void @llvm.lifetime.start(i64 48, i8* %288) #1
%289 = getelementptr inbounds %class.Timer* %atimer13, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str5, i64 0, i64 0), i8** %289, align 8, !tbaa !44
%290 = getelementptr inbounds %class.Timer* %atimer13, i64 0, i32 1
store i8 %140, i8* %290, align 8, !tbaa !49
%291 = getelementptr inbounds %class.Timer* %atimer13, i64 0, i32 2
%292 = call i32 @gettimeofday(%struct.timeval* %291, %struct.timezone* null) #1
br label %293
; <label>:293 ; preds = %293, %287
%i14.0267 = phi i32 [ 0, %287 ], [ %294, %293 ]
call void @_Z9example4biPiS_(i32 1014, i32* undef, i32* undef)
%294 = add nsw i32 %i14.0267, 1
%exitcond299 = icmp eq i32 %294, 524288
br i1 %exitcond299, label %.lr.ph.i171, label %293
; <label>:295 ; preds = %315
%296 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%297 = extractvalue { i8*, i32 } %296, 0
%298 = extractvalue { i8*, i32 } %296, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer13)
to label %689 unwind label %697
.lr.ph.i171: ; preds = %293, %.lr.ph.i171
%state.02.i169 = phi i32 [ %305, %.lr.ph.i171 ], [ 1, %293 ]
%.01.i170 = phi i8* [ %306, %.lr.ph.i171 ], [ bitcast ([1024 x i32]* @ia to i8*), %293 ]
%299 = mul i32 %state.02.i169, 3
%300 = load i8* %.01.i170, align 1, !tbaa !41
%301 = zext i8 %300 to i32
%302 = xor i32 %301, %299
%303 = lshr i32 %299, 8
%304 = shl i32 %302, 8
%305 = xor i32 %304, %303
%306 = getelementptr inbounds i8* %.01.i170, i64 1
%307 = icmp eq i8* %306, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %307, label %_Z13digest_memoryPvS_.exit172, label %.lr.ph.i171
_Z13digest_memoryPvS_.exit172: ; preds = %.lr.ph.i171
store i32 %305, i32* %r15, align 4, !tbaa !5
%308 = load i32** %161, align 8, !tbaa !50
%309 = load i32** %163, align 8, !tbaa !53
%310 = icmp eq i32* %308, %309
br i1 %310, label %315, label %311
; <label>:311 ; preds = %_Z13digest_memoryPvS_.exit172
%312 = icmp eq i32* %308, null
br i1 %312, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176, label %313
; <label>:313 ; preds = %311
store i32 %305, i32* %308, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176: ; preds = %313, %311
%314 = getelementptr inbounds i32* %308, i64 1
store i32* %314, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178
; <label>:315 ; preds = %_Z13digest_memoryPvS_.exit172
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %308, i32* %r15)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178 unwind label %295
_ZNSt6vectorIjSaIjEE9push_backERKj.exit178: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i176, %315
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer13)
to label %316 unwind label %.nonloopexit
; <label>:316 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit178
call void @llvm.lifetime.end(i64 48, i8* %288) #1
call void @_Z9example4ciPiS_(i32 1024, i32* undef, i32* undef)
%317 = bitcast %class.Timer* %atimer16 to i8*
call void @llvm.lifetime.start(i64 48, i8* %317) #1
%318 = getelementptr inbounds %class.Timer* %atimer16, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str6, i64 0, i64 0), i8** %318, align 8, !tbaa !44
%319 = getelementptr inbounds %class.Timer* %atimer16, i64 0, i32 1
store i8 %140, i8* %319, align 8, !tbaa !49
%320 = getelementptr inbounds %class.Timer* %atimer16, i64 0, i32 2
%321 = call i32 @gettimeofday(%struct.timeval* %320, %struct.timezone* null) #1
br label %322
; <label>:322 ; preds = %322, %316
%i17.0266 = phi i32 [ 0, %316 ], [ %323, %322 ]
call void @_Z9example4ciPiS_(i32 1024, i32* undef, i32* undef)
%323 = add nsw i32 %i17.0266, 1
%exitcond298 = icmp eq i32 %323, 524288
br i1 %exitcond298, label %.lr.ph.i181, label %322
; <label>:324 ; preds = %344
%325 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%326 = extractvalue { i8*, i32 } %325, 0
%327 = extractvalue { i8*, i32 } %325, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer16)
to label %689 unwind label %697
.lr.ph.i181: ; preds = %322, %.lr.ph.i181
%state.02.i179 = phi i32 [ %334, %.lr.ph.i181 ], [ 1, %322 ]
%.01.i180 = phi i8* [ %335, %.lr.ph.i181 ], [ bitcast ([1024 x i32]* @ib to i8*), %322 ]
%328 = mul i32 %state.02.i179, 3
%329 = load i8* %.01.i180, align 1, !tbaa !41
%330 = zext i8 %329 to i32
%331 = xor i32 %330, %328
%332 = lshr i32 %328, 8
%333 = shl i32 %331, 8
%334 = xor i32 %333, %332
%335 = getelementptr inbounds i8* %.01.i180, i64 1
%336 = icmp eq i8* %335, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ib, i64 1, i64 0) to i8*)
br i1 %336, label %_Z13digest_memoryPvS_.exit182, label %.lr.ph.i181
_Z13digest_memoryPvS_.exit182: ; preds = %.lr.ph.i181
store i32 %334, i32* %r18, align 4, !tbaa !5
%337 = load i32** %161, align 8, !tbaa !50
%338 = load i32** %163, align 8, !tbaa !53
%339 = icmp eq i32* %337, %338
br i1 %339, label %344, label %340
; <label>:340 ; preds = %_Z13digest_memoryPvS_.exit182
%341 = icmp eq i32* %337, null
br i1 %341, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187, label %342
; <label>:342 ; preds = %340
store i32 %334, i32* %337, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187: ; preds = %342, %340
%343 = getelementptr inbounds i32* %337, i64 1
store i32* %343, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189
; <label>:344 ; preds = %_Z13digest_memoryPvS_.exit182
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %337, i32* %r18)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189 unwind label %324
_ZNSt6vectorIjSaIjEE9push_backERKj.exit189: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i187, %344
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer16)
to label %345 unwind label %.nonloopexit
; <label>:345 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit189
call void @llvm.lifetime.end(i64 48, i8* %317) #1
call void @_Z8example7i(i32 4)
%346 = bitcast %class.Timer* %atimer19 to i8*
call void @llvm.lifetime.start(i64 48, i8* %346) #1
%347 = getelementptr inbounds %class.Timer* %atimer19, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str7, i64 0, i64 0), i8** %347, align 8, !tbaa !44
%348 = getelementptr inbounds %class.Timer* %atimer19, i64 0, i32 1
store i8 %140, i8* %348, align 8, !tbaa !49
%349 = getelementptr inbounds %class.Timer* %atimer19, i64 0, i32 2
%350 = call i32 @gettimeofday(%struct.timeval* %349, %struct.timezone* null) #1
br label %351
; <label>:351 ; preds = %351, %345
%i20.0265 = phi i32 [ 0, %345 ], [ %352, %351 ]
call void @_Z8example7i(i32 4)
%352 = add nsw i32 %i20.0265, 1
%exitcond297 = icmp eq i32 %352, 1048576
br i1 %exitcond297, label %.lr.ph.i192, label %351
; <label>:353 ; preds = %373
%354 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%355 = extractvalue { i8*, i32 } %354, 0
%356 = extractvalue { i8*, i32 } %354, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer19)
to label %689 unwind label %697
.lr.ph.i192: ; preds = %351, %.lr.ph.i192
%state.02.i190 = phi i32 [ %363, %.lr.ph.i192 ], [ 1, %351 ]
%.01.i191 = phi i8* [ %364, %.lr.ph.i192 ], [ bitcast ([2048 x i32]* @a to i8*), %351 ]
%357 = mul i32 %state.02.i190, 3
%358 = load i8* %.01.i191, align 1, !tbaa !41
%359 = zext i8 %358 to i32
%360 = xor i32 %359, %357
%361 = lshr i32 %357, 8
%362 = shl i32 %360, 8
%363 = xor i32 %362, %361
%364 = getelementptr inbounds i8* %.01.i191, i64 1
%365 = icmp eq i8* %364, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 1024) to i8*)
br i1 %365, label %_Z13digest_memoryPvS_.exit193, label %.lr.ph.i192
_Z13digest_memoryPvS_.exit193: ; preds = %.lr.ph.i192
store i32 %363, i32* %r21, align 4, !tbaa !5
%366 = load i32** %161, align 8, !tbaa !50
%367 = load i32** %163, align 8, !tbaa !53
%368 = icmp eq i32* %366, %367
br i1 %368, label %373, label %369
; <label>:369 ; preds = %_Z13digest_memoryPvS_.exit193
%370 = icmp eq i32* %366, null
br i1 %370, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194, label %371
; <label>:371 ; preds = %369
store i32 %363, i32* %366, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194: ; preds = %371, %369
%372 = getelementptr inbounds i32* %366, i64 1
store i32* %372, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196
; <label>:373 ; preds = %_Z13digest_memoryPvS_.exit193
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %366, i32* %r21)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196 unwind label %353
_ZNSt6vectorIjSaIjEE9push_backERKj.exit196: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i194, %373
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer19)
to label %374 unwind label %.nonloopexit
; <label>:374 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit196
call void @llvm.lifetime.end(i64 48, i8* %346) #1
call void @_Z8example8i(i32 8)
%375 = bitcast %class.Timer* %atimer22 to i8*
call void @llvm.lifetime.start(i64 48, i8* %375) #1
%376 = getelementptr inbounds %class.Timer* %atimer22, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str8, i64 0, i64 0), i8** %376, align 8, !tbaa !44
%377 = getelementptr inbounds %class.Timer* %atimer22, i64 0, i32 1
store i8 %140, i8* %377, align 8, !tbaa !49
%378 = getelementptr inbounds %class.Timer* %atimer22, i64 0, i32 2
%379 = call i32 @gettimeofday(%struct.timeval* %378, %struct.timezone* null) #1
br label %380
; <label>:380 ; preds = %380, %374
%i23.0264 = phi i32 [ 0, %374 ], [ %381, %380 ]
call void @_Z8example8i(i32 8)
%381 = add nsw i32 %i23.0264, 1
%exitcond296 = icmp eq i32 %381, 65536
br i1 %exitcond296, label %.lr.ph.i199, label %380
; <label>:382 ; preds = %402
%383 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%384 = extractvalue { i8*, i32 } %383, 0
%385 = extractvalue { i8*, i32 } %383, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer22)
to label %689 unwind label %697
.lr.ph.i199: ; preds = %380, %.lr.ph.i199
%state.02.i197 = phi i32 [ %392, %.lr.ph.i199 ], [ 1, %380 ]
%.01.i198 = phi i8* [ %393, %.lr.ph.i199 ], [ bitcast ([32 x [1024 x i32]]* @G to i8*), %380 ]
%386 = mul i32 %state.02.i197, 3
%387 = load i8* %.01.i198, align 1, !tbaa !41
%388 = zext i8 %387 to i32
%389 = xor i32 %388, %386
%390 = lshr i32 %386, 8
%391 = shl i32 %389, 8
%392 = xor i32 %391, %390
%393 = getelementptr inbounds i8* %.01.i198, i64 1
%394 = icmp eq i8* %393, bitcast (i32* getelementptr inbounds ([32 x [1024 x i32]]* @G, i64 0, i64 1, i64 0) to i8*)
br i1 %394, label %_Z13digest_memoryPvS_.exit200, label %.lr.ph.i199
_Z13digest_memoryPvS_.exit200: ; preds = %.lr.ph.i199
store i32 %392, i32* %r24, align 4, !tbaa !5
%395 = load i32** %161, align 8, !tbaa !50
%396 = load i32** %163, align 8, !tbaa !53
%397 = icmp eq i32* %395, %396
br i1 %397, label %402, label %398
; <label>:398 ; preds = %_Z13digest_memoryPvS_.exit200
%399 = icmp eq i32* %395, null
br i1 %399, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201, label %400
; <label>:400 ; preds = %398
store i32 %392, i32* %395, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201: ; preds = %400, %398
%401 = getelementptr inbounds i32* %395, i64 1
store i32* %401, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203
; <label>:402 ; preds = %_Z13digest_memoryPvS_.exit200
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %395, i32* %r24)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203 unwind label %382
_ZNSt6vectorIjSaIjEE9push_backERKj.exit203: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i201, %402
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer22)
to label %403 unwind label %.nonloopexit
; <label>:403 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit203
call void @llvm.lifetime.end(i64 48, i8* %375) #1
call void @_Z8example9Pj(i32* %dummy)
%404 = bitcast %class.Timer* %atimer25 to i8*
call void @llvm.lifetime.start(i64 48, i8* %404) #1
%405 = getelementptr inbounds %class.Timer* %atimer25, i64 0, i32 0
store i8* getelementptr inbounds ([9 x i8]* @.str9, i64 0, i64 0), i8** %405, align 8, !tbaa !44
%406 = getelementptr inbounds %class.Timer* %atimer25, i64 0, i32 1
store i8 %140, i8* %406, align 8, !tbaa !49
%407 = getelementptr inbounds %class.Timer* %atimer25, i64 0, i32 2
%408 = call i32 @gettimeofday(%struct.timeval* %407, %struct.timezone* null) #1
br label %409
; <label>:409 ; preds = %409, %403
%i26.0263 = phi i32 [ 0, %403 ], [ %410, %409 ]
call void @_Z8example9Pj(i32* %dummy)
%410 = add nsw i32 %i26.0263, 1
%exitcond295 = icmp eq i32 %410, 524288
br i1 %exitcond295, label %415, label %409
; <label>:411 ; preds = %424
%412 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%413 = extractvalue { i8*, i32 } %412, 0
%414 = extractvalue { i8*, i32 } %412, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer25)
to label %689 unwind label %697
; <label>:415 ; preds = %409
%416 = load i32* %dummy, align 4, !tbaa !5
store i32 %416, i32* %r27, align 4, !tbaa !5
%417 = load i32** %161, align 8, !tbaa !50
%418 = load i32** %163, align 8, !tbaa !53
%419 = icmp eq i32* %417, %418
br i1 %419, label %424, label %420
; <label>:420 ; preds = %415
%421 = icmp eq i32* %417, null
br i1 %421, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204, label %422
; <label>:422 ; preds = %420
store i32 %416, i32* %417, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204: ; preds = %422, %420
%423 = getelementptr inbounds i32* %417, i64 1
store i32* %423, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206
; <label>:424 ; preds = %415
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %417, i32* %r27)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206 unwind label %411
_ZNSt6vectorIjSaIjEE9push_backERKj.exit206: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i204, %424
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer25)
to label %425 unwind label %.nonloopexit
; <label>:425 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit206
call void @llvm.lifetime.end(i64 48, i8* %404) #1
call void @_Z10example10aPsS_S_PiS0_S0_(i16* getelementptr inbounds ([1024 x i16]* @sa, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sc, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ic, i64 0, i64 0))
%426 = bitcast %class.Timer* %atimer28 to i8*
call void @llvm.lifetime.start(i64 48, i8* %426) #1
%427 = getelementptr inbounds %class.Timer* %atimer28, i64 0, i32 0
store i8* getelementptr inbounds ([11 x i8]* @.str10, i64 0, i64 0), i8** %427, align 8, !tbaa !44
%428 = getelementptr inbounds %class.Timer* %atimer28, i64 0, i32 1
store i8 %140, i8* %428, align 8, !tbaa !49
%429 = getelementptr inbounds %class.Timer* %atimer28, i64 0, i32 2
%430 = call i32 @gettimeofday(%struct.timeval* %429, %struct.timezone* null) #1
br label %431
; <label>:431 ; preds = %431, %425
%i29.0262 = phi i32 [ 0, %425 ], [ %432, %431 ]
call void @_Z10example10aPsS_S_PiS0_S0_(i16* getelementptr inbounds ([1024 x i16]* @sa, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* getelementptr inbounds ([1024 x i16]* @sc, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ib, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ic, i64 0, i64 0))
%432 = add nsw i32 %i29.0262, 1
%exitcond294 = icmp eq i32 %432, 524288
br i1 %exitcond294, label %.lr.ph.i209, label %431
; <label>:433 ; preds = %463
%434 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%435 = extractvalue { i8*, i32 } %434, 0
%436 = extractvalue { i8*, i32 } %434, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer28)
to label %689 unwind label %697
.lr.ph.i209: ; preds = %431, %.lr.ph.i209
%state.02.i207 = phi i32 [ %443, %.lr.ph.i209 ], [ 1, %431 ]
%.01.i208 = phi i8* [ %444, %.lr.ph.i209 ], [ bitcast ([1024 x i32]* @ia to i8*), %431 ]
%437 = mul i32 %state.02.i207, 3
%438 = load i8* %.01.i208, align 1, !tbaa !41
%439 = zext i8 %438 to i32
%440 = xor i32 %439, %437
%441 = lshr i32 %437, 8
%442 = shl i32 %440, 8
%443 = xor i32 %442, %441
%444 = getelementptr inbounds i8* %.01.i208, i64 1
%445 = icmp eq i8* %444, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %445, label %.lr.ph.i213, label %.lr.ph.i209
.lr.ph.i213: ; preds = %.lr.ph.i209, %.lr.ph.i213
%state.02.i211 = phi i32 [ %452, %.lr.ph.i213 ], [ 1, %.lr.ph.i209 ]
%.01.i212 = phi i8* [ %453, %.lr.ph.i213 ], [ bitcast ([1024 x i16]* @sa to i8*), %.lr.ph.i209 ]
%446 = mul i32 %state.02.i211, 3
%447 = load i8* %.01.i212, align 1, !tbaa !41
%448 = zext i8 %447 to i32
%449 = xor i32 %448, %446
%450 = lshr i32 %446, 8
%451 = shl i32 %449, 8
%452 = xor i32 %451, %450
%453 = getelementptr inbounds i8* %.01.i212, i64 1
%454 = icmp eq i8* %453, bitcast (i16* getelementptr inbounds ([1024 x i16]* @sa, i64 1, i64 0) to i8*)
br i1 %454, label %_Z13digest_memoryPvS_.exit214, label %.lr.ph.i213
_Z13digest_memoryPvS_.exit214: ; preds = %.lr.ph.i213
%455 = add i32 %452, %443
store i32 %455, i32* %r30, align 4, !tbaa !5
%456 = load i32** %161, align 8, !tbaa !50
%457 = load i32** %163, align 8, !tbaa !53
%458 = icmp eq i32* %456, %457
br i1 %458, label %463, label %459
; <label>:459 ; preds = %_Z13digest_memoryPvS_.exit214
%460 = icmp eq i32* %456, null
br i1 %460, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215, label %461
; <label>:461 ; preds = %459
store i32 %455, i32* %456, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215: ; preds = %461, %459
%462 = getelementptr inbounds i32* %456, i64 1
store i32* %462, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217
; <label>:463 ; preds = %_Z13digest_memoryPvS_.exit214
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %456, i32* %r30)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217 unwind label %433
_ZNSt6vectorIjSaIjEE9push_backERKj.exit217: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i215, %463
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer28)
to label %464 unwind label %.nonloopexit
; <label>:464 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit217
call void @llvm.lifetime.end(i64 48, i8* %426) #1
call void @_Z10example10bPsS_S_PiS0_S0_(i16* undef, i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* undef, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* undef, i32* undef)
%465 = bitcast %class.Timer* %atimer31 to i8*
call void @llvm.lifetime.start(i64 48, i8* %465) #1
%466 = getelementptr inbounds %class.Timer* %atimer31, i64 0, i32 0
store i8* getelementptr inbounds ([11 x i8]* @.str11, i64 0, i64 0), i8** %466, align 8, !tbaa !44
%467 = getelementptr inbounds %class.Timer* %atimer31, i64 0, i32 1
store i8 %140, i8* %467, align 8, !tbaa !49
%468 = getelementptr inbounds %class.Timer* %atimer31, i64 0, i32 2
%469 = call i32 @gettimeofday(%struct.timeval* %468, %struct.timezone* null) #1
br label %470
; <label>:470 ; preds = %470, %464
%i32.0261 = phi i32 [ 0, %464 ], [ %471, %470 ]
call void @_Z10example10bPsS_S_PiS0_S0_(i16* undef, i16* getelementptr inbounds ([1024 x i16]* @sb, i64 0, i64 0), i16* undef, i32* getelementptr inbounds ([1024 x i32]* @ia, i64 0, i64 0), i32* undef, i32* undef)
%471 = add nsw i32 %i32.0261, 1
%exitcond293 = icmp eq i32 %471, 1048576
br i1 %exitcond293, label %.lr.ph.i220, label %470
; <label>:472 ; preds = %492
%473 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%474 = extractvalue { i8*, i32 } %473, 0
%475 = extractvalue { i8*, i32 } %473, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer31)
to label %689 unwind label %697
.lr.ph.i220: ; preds = %470, %.lr.ph.i220
%state.02.i218 = phi i32 [ %482, %.lr.ph.i220 ], [ 1, %470 ]
%.01.i219 = phi i8* [ %483, %.lr.ph.i220 ], [ bitcast ([1024 x i32]* @ia to i8*), %470 ]
%476 = mul i32 %state.02.i218, 3
%477 = load i8* %.01.i219, align 1, !tbaa !41
%478 = zext i8 %477 to i32
%479 = xor i32 %478, %476
%480 = lshr i32 %476, 8
%481 = shl i32 %479, 8
%482 = xor i32 %481, %480
%483 = getelementptr inbounds i8* %.01.i219, i64 1
%484 = icmp eq i8* %483, bitcast (i32* getelementptr inbounds ([1024 x i32]* @ia, i64 1, i64 0) to i8*)
br i1 %484, label %_Z13digest_memoryPvS_.exit221, label %.lr.ph.i220
_Z13digest_memoryPvS_.exit221: ; preds = %.lr.ph.i220
store i32 %482, i32* %r33, align 4, !tbaa !5
%485 = load i32** %161, align 8, !tbaa !50
%486 = load i32** %163, align 8, !tbaa !53
%487 = icmp eq i32* %485, %486
br i1 %487, label %492, label %488
; <label>:488 ; preds = %_Z13digest_memoryPvS_.exit221
%489 = icmp eq i32* %485, null
br i1 %489, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225, label %490
; <label>:490 ; preds = %488
store i32 %482, i32* %485, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225: ; preds = %490, %488
%491 = getelementptr inbounds i32* %485, i64 1
store i32* %491, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227
; <label>:492 ; preds = %_Z13digest_memoryPvS_.exit221
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %485, i32* %r33)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227 unwind label %472
_ZNSt6vectorIjSaIjEE9push_backERKj.exit227: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i225, %492
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer31)
to label %493 unwind label %.nonloopexit
; <label>:493 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit227
call void @llvm.lifetime.end(i64 48, i8* %465) #1
call void @_Z9example11v()
%494 = bitcast %class.Timer* %atimer34 to i8*
call void @llvm.lifetime.start(i64 48, i8* %494) #1
%495 = getelementptr inbounds %class.Timer* %atimer34, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str12, i64 0, i64 0), i8** %495, align 8, !tbaa !44
%496 = getelementptr inbounds %class.Timer* %atimer34, i64 0, i32 1
store i8 %140, i8* %496, align 8, !tbaa !49
%497 = getelementptr inbounds %class.Timer* %atimer34, i64 0, i32 2
%498 = call i32 @gettimeofday(%struct.timeval* %497, %struct.timezone* null) #1
br label %499
; <label>:499 ; preds = %499, %493
%i35.0260 = phi i32 [ 0, %493 ], [ %500, %499 ]
call void @_Z9example11v()
%500 = add nsw i32 %i35.0260, 1
%exitcond292 = icmp eq i32 %500, 524288
br i1 %exitcond292, label %.lr.ph.i230, label %499
; <label>:501 ; preds = %521
%502 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%503 = extractvalue { i8*, i32 } %502, 0
%504 = extractvalue { i8*, i32 } %502, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer34)
to label %689 unwind label %697
.lr.ph.i230: ; preds = %499, %.lr.ph.i230
%state.02.i228 = phi i32 [ %511, %.lr.ph.i230 ], [ 1, %499 ]
%.01.i229 = phi i8* [ %512, %.lr.ph.i230 ], [ bitcast ([2048 x i32]* @d to i8*), %499 ]
%505 = mul i32 %state.02.i228, 3
%506 = load i8* %.01.i229, align 1, !tbaa !41
%507 = zext i8 %506 to i32
%508 = xor i32 %507, %505
%509 = lshr i32 %505, 8
%510 = shl i32 %508, 8
%511 = xor i32 %510, %509
%512 = getelementptr inbounds i8* %.01.i229, i64 1
%513 = icmp eq i8* %512, bitcast (i32* getelementptr inbounds ([2048 x i32]* @d, i64 0, i64 1024) to i8*)
br i1 %513, label %_Z13digest_memoryPvS_.exit231, label %.lr.ph.i230
_Z13digest_memoryPvS_.exit231: ; preds = %.lr.ph.i230
store i32 %511, i32* %r36, align 4, !tbaa !5
%514 = load i32** %161, align 8, !tbaa !50
%515 = load i32** %163, align 8, !tbaa !53
%516 = icmp eq i32* %514, %515
br i1 %516, label %521, label %517
; <label>:517 ; preds = %_Z13digest_memoryPvS_.exit231
%518 = icmp eq i32* %514, null
br i1 %518, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236, label %519
; <label>:519 ; preds = %517
store i32 %511, i32* %514, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236: ; preds = %519, %517
%520 = getelementptr inbounds i32* %514, i64 1
store i32* %520, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238
; <label>:521 ; preds = %_Z13digest_memoryPvS_.exit231
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %514, i32* %r36)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238 unwind label %501
_ZNSt6vectorIjSaIjEE9push_backERKj.exit238: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i236, %521
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer34)
to label %522 unwind label %.nonloopexit
; <label>:522 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit238
call void @llvm.lifetime.end(i64 48, i8* %494) #1
call void @_Z9example12v()
%523 = bitcast %class.Timer* %atimer37 to i8*
call void @llvm.lifetime.start(i64 48, i8* %523) #1
%524 = getelementptr inbounds %class.Timer* %atimer37, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str13, i64 0, i64 0), i8** %524, align 8, !tbaa !44
%525 = getelementptr inbounds %class.Timer* %atimer37, i64 0, i32 1
store i8 %140, i8* %525, align 8, !tbaa !49
%526 = getelementptr inbounds %class.Timer* %atimer37, i64 0, i32 2
%527 = call i32 @gettimeofday(%struct.timeval* %526, %struct.timezone* null) #1
br label %528
; <label>:528 ; preds = %528, %522
%i38.0259 = phi i32 [ 0, %522 ], [ %529, %528 ]
call void @_Z9example12v()
%529 = add nsw i32 %i38.0259, 1
%exitcond291 = icmp eq i32 %529, 1048576
br i1 %exitcond291, label %.lr.ph.i234, label %528
; <label>:530 ; preds = %550
%531 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%532 = extractvalue { i8*, i32 } %531, 0
%533 = extractvalue { i8*, i32 } %531, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer37)
to label %689 unwind label %697
.lr.ph.i234: ; preds = %528, %.lr.ph.i234
%state.02.i232 = phi i32 [ %540, %.lr.ph.i234 ], [ 1, %528 ]
%.01.i233 = phi i8* [ %541, %.lr.ph.i234 ], [ bitcast ([2048 x i32]* @a to i8*), %528 ]
%534 = mul i32 %state.02.i232, 3
%535 = load i8* %.01.i233, align 1, !tbaa !41
%536 = zext i8 %535 to i32
%537 = xor i32 %536, %534
%538 = lshr i32 %534, 8
%539 = shl i32 %537, 8
%540 = xor i32 %539, %538
%541 = getelementptr inbounds i8* %.01.i233, i64 1
%542 = icmp eq i8* %541, bitcast (i32* getelementptr inbounds ([2048 x i32]* @a, i64 0, i64 1024) to i8*)
br i1 %542, label %_Z13digest_memoryPvS_.exit235, label %.lr.ph.i234
_Z13digest_memoryPvS_.exit235: ; preds = %.lr.ph.i234
store i32 %540, i32* %r39, align 4, !tbaa !5
%543 = load i32** %161, align 8, !tbaa !50
%544 = load i32** %163, align 8, !tbaa !53
%545 = icmp eq i32* %543, %544
br i1 %545, label %550, label %546
; <label>:546 ; preds = %_Z13digest_memoryPvS_.exit235
%547 = icmp eq i32* %543, null
br i1 %547, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222, label %548
; <label>:548 ; preds = %546
store i32 %540, i32* %543, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222: ; preds = %548, %546
%549 = getelementptr inbounds i32* %543, i64 1
store i32* %549, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224
; <label>:550 ; preds = %_Z13digest_memoryPvS_.exit235
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %543, i32* %r39)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224 unwind label %530
_ZNSt6vectorIjSaIjEE9push_backERKj.exit224: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i222, %550
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer37)
to label %551 unwind label %.nonloopexit
; <label>:551 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit224
call void @llvm.lifetime.end(i64 48, i8* %523) #1
call void @_Z9example23PtPj(i16* getelementptr inbounds ([1024 x i16]* @usa, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ua, i64 0, i64 0))
%552 = bitcast %class.Timer* %atimer40 to i8*
call void @llvm.lifetime.start(i64 48, i8* %552) #1
%553 = getelementptr inbounds %class.Timer* %atimer40, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str14, i64 0, i64 0), i8** %553, align 8, !tbaa !44
%554 = getelementptr inbounds %class.Timer* %atimer40, i64 0, i32 1
store i8 %140, i8* %554, align 8, !tbaa !49
%555 = getelementptr inbounds %class.Timer* %atimer40, i64 0, i32 2
%556 = call i32 @gettimeofday(%struct.timeval* %555, %struct.timezone* null) #1
br label %557
; <label>:557 ; preds = %557, %551
%i41.0258 = phi i32 [ 0, %551 ], [ %558, %557 ]
call void @_Z9example23PtPj(i16* getelementptr inbounds ([1024 x i16]* @usa, i64 0, i64 0), i32* getelementptr inbounds ([1024 x i32]* @ua, i64 0, i64 0))
%558 = add nsw i32 %i41.0258, 1
%exitcond290 = icmp eq i32 %558, 2097152
br i1 %exitcond290, label %.lr.ph.i185, label %557
; <label>:559 ; preds = %579
%560 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%561 = extractvalue { i8*, i32 } %560, 0
%562 = extractvalue { i8*, i32 } %560, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer40)
to label %689 unwind label %697
.lr.ph.i185: ; preds = %557, %.lr.ph.i185
%state.02.i183 = phi i32 [ %569, %.lr.ph.i185 ], [ 1, %557 ]
%.01.i184 = phi i8* [ %570, %.lr.ph.i185 ], [ bitcast ([1024 x i16]* @usa to i8*), %557 ]
%563 = mul i32 %state.02.i183, 3
%564 = load i8* %.01.i184, align 1, !tbaa !41
%565 = zext i8 %564 to i32
%566 = xor i32 %565, %563
%567 = lshr i32 %563, 8
%568 = shl i32 %566, 8
%569 = xor i32 %568, %567
%570 = getelementptr inbounds i8* %.01.i184, i64 1
%571 = icmp eq i8* %570, bitcast (i16* getelementptr inbounds ([1024 x i16]* @usa, i64 0, i64 256) to i8*)
br i1 %571, label %_Z13digest_memoryPvS_.exit186, label %.lr.ph.i185
_Z13digest_memoryPvS_.exit186: ; preds = %.lr.ph.i185
store i32 %569, i32* %r42, align 4, !tbaa !5
%572 = load i32** %161, align 8, !tbaa !50
%573 = load i32** %163, align 8, !tbaa !53
%574 = icmp eq i32* %572, %573
br i1 %574, label %579, label %575
; <label>:575 ; preds = %_Z13digest_memoryPvS_.exit186
%576 = icmp eq i32* %572, null
br i1 %576, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173, label %577
; <label>:577 ; preds = %575
store i32 %569, i32* %572, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173: ; preds = %577, %575
%578 = getelementptr inbounds i32* %572, i64 1
store i32* %578, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175
; <label>:579 ; preds = %_Z13digest_memoryPvS_.exit186
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %572, i32* %r42)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175 unwind label %559
_ZNSt6vectorIjSaIjEE9push_backERKj.exit175: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i173, %579
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer40)
to label %580 unwind label %.nonloopexit
; <label>:580 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit175
call void @llvm.lifetime.end(i64 48, i8* %552) #1
call void @_Z9example24ss(i16 signext 2, i16 signext 4)
%581 = bitcast %class.Timer* %atimer43 to i8*
call void @llvm.lifetime.start(i64 48, i8* %581) #1
%582 = getelementptr inbounds %class.Timer* %atimer43, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str15, i64 0, i64 0), i8** %582, align 8, !tbaa !44
%583 = getelementptr inbounds %class.Timer* %atimer43, i64 0, i32 1
store i8 %140, i8* %583, align 8, !tbaa !49
%584 = getelementptr inbounds %class.Timer* %atimer43, i64 0, i32 2
%585 = call i32 @gettimeofday(%struct.timeval* %584, %struct.timezone* null) #1
br label %586
; <label>:586 ; preds = %586, %580
%i44.0257 = phi i32 [ 0, %580 ], [ %587, %586 ]
call void @_Z9example24ss(i16 signext 2, i16 signext 4)
%587 = add nsw i32 %i44.0257, 1
%exitcond289 = icmp eq i32 %587, 524288
br i1 %exitcond289, label %592, label %586
; <label>:588 ; preds = %600
%589 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%590 = extractvalue { i8*, i32 } %589, 0
%591 = extractvalue { i8*, i32 } %589, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer43)
to label %689 unwind label %697
; <label>:592 ; preds = %586
store i32 0, i32* %r45, align 4, !tbaa !5
%593 = load i32** %161, align 8, !tbaa !50
%594 = load i32** %163, align 8, !tbaa !53
%595 = icmp eq i32* %593, %594
br i1 %595, label %600, label %596
; <label>:596 ; preds = %592
%597 = icmp eq i32* %593, null
br i1 %597, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131, label %598
; <label>:598 ; preds = %596
store i32 0, i32* %593, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131: ; preds = %598, %596
%599 = getelementptr inbounds i32* %593, i64 1
store i32* %599, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133
; <label>:600 ; preds = %592
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %593, i32* %r45)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133 unwind label %588
_ZNSt6vectorIjSaIjEE9push_backERKj.exit133: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i131, %600
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer43)
to label %601 unwind label %.nonloopexit
; <label>:601 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit133
call void @llvm.lifetime.end(i64 48, i8* %581) #1
call void @_Z9example25v()
%602 = bitcast %class.Timer* %atimer46 to i8*
call void @llvm.lifetime.start(i64 48, i8* %602) #1
%603 = getelementptr inbounds %class.Timer* %atimer46, i64 0, i32 0
store i8* getelementptr inbounds ([10 x i8]* @.str16, i64 0, i64 0), i8** %603, align 8, !tbaa !44
%604 = getelementptr inbounds %class.Timer* %atimer46, i64 0, i32 1
store i8 %140, i8* %604, align 8, !tbaa !49
%605 = getelementptr inbounds %class.Timer* %atimer46, i64 0, i32 2
%606 = call i32 @gettimeofday(%struct.timeval* %605, %struct.timezone* null) #1
br label %607
; <label>:607 ; preds = %607, %601
%i47.0256 = phi i32 [ 0, %601 ], [ %608, %607 ]
call void @_Z9example25v()
%608 = add nsw i32 %i47.0256, 1
%exitcond = icmp eq i32 %608, 524288
br i1 %exitcond, label %.lr.ph.i110, label %607
; <label>:609 ; preds = %629
%610 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
cleanup
%611 = extractvalue { i8*, i32 } %610, 0
%612 = extractvalue { i8*, i32 } %610, 1
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer46)
to label %689 unwind label %697
.lr.ph.i110: ; preds = %607, %.lr.ph.i110
%state.02.i108 = phi i32 [ %619, %.lr.ph.i110 ], [ 1, %607 ]
%.01.i109 = phi i8* [ %620, %.lr.ph.i110 ], [ bitcast ([1024 x i32]* @dj to i8*), %607 ]
%613 = mul i32 %state.02.i108, 3
%614 = load i8* %.01.i109, align 1, !tbaa !41
%615 = zext i8 %614 to i32
%616 = xor i32 %615, %613
%617 = lshr i32 %613, 8
%618 = shl i32 %616, 8
%619 = xor i32 %618, %617
%620 = getelementptr inbounds i8* %.01.i109, i64 1
%621 = icmp eq i8* %620, bitcast (i32* getelementptr inbounds ([1024 x i32]* @dj, i64 1, i64 0) to i8*)
br i1 %621, label %_Z13digest_memoryPvS_.exit, label %.lr.ph.i110
_Z13digest_memoryPvS_.exit: ; preds = %.lr.ph.i110
store i32 %619, i32* %r48, align 4, !tbaa !5
%622 = load i32** %161, align 8, !tbaa !50
%623 = load i32** %163, align 8, !tbaa !53
%624 = icmp eq i32* %622, %623
br i1 %624, label %629, label %625
; <label>:625 ; preds = %_Z13digest_memoryPvS_.exit
%626 = icmp eq i32* %622, null
br i1 %626, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i, label %627
; <label>:627 ; preds = %625
store i32 %619, i32* %622, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i: ; preds = %627, %625
%628 = getelementptr inbounds i32* %622, i64 1
store i32* %628, i32** %161, align 8, !tbaa !50
br label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit
; <label>:629 ; preds = %_Z13digest_memoryPvS_.exit
invoke void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* %results, i32* %622, i32* %r48)
to label %_ZNSt6vectorIjSaIjEE9push_backERKj.exit unwind label %609
_ZNSt6vectorIjSaIjEE9push_backERKj.exit: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit.i, %629
invoke void @_ZN5TimerD2Ev(%class.Timer* %atimer46)
to label %630 unwind label %.nonloopexit
; <label>:630 ; preds = %_ZNSt6vectorIjSaIjEE9push_backERKj.exit
call void @llvm.lifetime.end(i64 48, i8* %602) #1
%631 = load i8** bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8**), align 8, !tbaa !54
%632 = getelementptr i8* %631, i64 -24
%633 = bitcast i8* %632 to i64*
%634 = load i64* %633, align 8
%.sum = add i64 %634, 24
%635 = getelementptr inbounds i8* bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8*), i64 %.sum
%636 = bitcast i8* %635 to i32*
%637 = load i32* %636, align 4, !tbaa !56
%638 = and i32 %637, -75
%639 = or i32 %638, 8
store i32 %639, i32* %636, align 4, !tbaa !56
%640 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([11 x i8]* @.str17, i64 0, i64 0), i64 10)
to label %641 unwind label %.nonloopexit
; <label>:641 ; preds = %630
%642 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 0
%643 = load i32** %642, align 8, !tbaa !27
%644 = load i32** %161, align 8, !tbaa !27
%645 = icmp eq i32* %643, %644
br i1 %645, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, label %.lr.ph.i91.preheader
.lr.ph.i91.preheader: ; preds = %641
%646 = ptrtoint i32* %643 to i64
%scevgep = getelementptr i32* %644, i64 -1
%647 = ptrtoint i32* %scevgep to i64
%648 = sub i64 %647, %646
%649 = lshr i64 %648, 2
%650 = add i64 %649, 1
%end.idx = add i64 %649, 1
%n.vec = and i64 %650, 9223372036854775800
%cmp.zero = icmp eq i64 %n.vec, 0
%ptr.ind.end = getelementptr i32* %643, i64 %n.vec
br i1 %cmp.zero, label %middle.block, label %vector.body
vector.body: ; preds = %.lr.ph.i91.preheader, %vector.body
%index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph.i91.preheader ]
%vec.phi = phi <4 x i32> [ %654, %vector.body ], [ zeroinitializer, %.lr.ph.i91.preheader ]
%vec.phi323 = phi <4 x i32> [ %655, %vector.body ], [ zeroinitializer, %.lr.ph.i91.preheader ]
%next.gep = getelementptr i32* %643, i64 %index
%651 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>* %651, align 4
%next.gep.sum357 = or i64 %index, 4
%652 = getelementptr i32* %643, i64 %next.gep.sum357
%653 = bitcast i32* %652 to <4 x i32>*
%wide.load345 = load <4 x i32>* %653, align 4
%654 = add <4 x i32> %wide.load, %vec.phi
%655 = add <4 x i32> %wide.load345, %vec.phi323
%index.next = add i64 %index, 8
%656 = icmp eq i64 %index.next, %n.vec
br i1 %656, label %middle.block, label %vector.body, !llvm.loop !58
middle.block: ; preds = %vector.body, %.lr.ph.i91.preheader
%resume.val = phi i32* [ %643, %.lr.ph.i91.preheader ], [ %ptr.ind.end, %vector.body ]
%new.indc.resume.val = phi i64 [ 0, %.lr.ph.i91.preheader ], [ %n.vec, %vector.body ]
%rdx.vec.exit.phi = phi <4 x i32> [ zeroinitializer, %.lr.ph.i91.preheader ], [ %654, %vector.body ]
%rdx.vec.exit.phi346 = phi <4 x i32> [ zeroinitializer, %.lr.ph.i91.preheader ], [ %655, %vector.body ]
%bin.rdx = add <4 x i32> %rdx.vec.exit.phi346, %rdx.vec.exit.phi
%rdx.shuf = shufflevector <4 x i32> %bin.rdx, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx347 = add <4 x i32> %bin.rdx, %rdx.shuf
%rdx.shuf348 = shufflevector <4 x i32> %bin.rdx347, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx349 = add <4 x i32> %bin.rdx347, %rdx.shuf348
%657 = extractelement <4 x i32> %bin.rdx349, i32 0
%cmp.n = icmp eq i64 %end.idx, %new.indc.resume.val
br i1 %cmp.n, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, label %.lr.ph.i91
.lr.ph.i91: ; preds = %middle.block, %.lr.ph.i91
%.03.i = phi i32 [ %659, %.lr.ph.i91 ], [ %657, %middle.block ]
%__first.coerce12.i = phi i32* [ %660, %.lr.ph.i91 ], [ %resume.val, %middle.block ]
%658 = load i32* %__first.coerce12.i, align 4, !tbaa !5
%659 = add i32 %658, %.03.i
%660 = getelementptr inbounds i32* %__first.coerce12.i, i64 1
%661 = icmp eq i32* %660, %644
br i1 %661, label %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit, label %.lr.ph.i91, !llvm.loop !59
_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit: ; preds = %.lr.ph.i91, %middle.block, %641
%.0.lcssa.i = phi i32 [ 0, %641 ], [ %659, %.lr.ph.i91 ], [ %657, %middle.block ]
%662 = invoke %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"* @_ZSt4cout, i32 %.0.lcssa.i)
to label %663 unwind label %.nonloopexit
; <label>:663 ; preds = %_ZSt10accumulateIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiET0_T_S8_S7_.exit
%664 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* %662, i8* getelementptr inbounds ([3 x i8]* @.str18, i64 0, i64 0), i64 2)
to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader unwind label %.nonloopexit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader: ; preds = %663
%665 = load i32** %161, align 8, !tbaa !50
%666 = load i32** %642, align 8, !tbaa !60
%667 = icmp eq i32* %665, %666
br i1 %667, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge, label %.lr.ph
.lr.ph: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader, %_ZNSolsEj.exit
%668 = phi i64 [ %676, %_ZNSolsEj.exit ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader ]
%i49.0255 = phi i32 [ %675, %_ZNSolsEj.exit ], [ 0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader ]
%669 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([2 x i8]* @.str19, i64 0, i64 0), i64 1)
to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73 unwind label %.loopexit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73: ; preds = %.lr.ph
%670 = load i32** %642, align 8, !tbaa !60
%671 = getelementptr inbounds i32* %670, i64 %668
%672 = load i32* %671, align 4, !tbaa !5
%673 = zext i32 %672 to i64
%674 = invoke %"class.std::basic_ostream"* @_ZNSo9_M_insertImEERSoT_(%"class.std::basic_ostream"* @_ZSt4cout, i64 %673)
to label %_ZNSolsEj.exit unwind label %.loopexit
_ZNSolsEj.exit: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit73
%675 = add i32 %i49.0255, 1
%676 = zext i32 %675 to i64
%677 = load i32** %161, align 8, !tbaa !50
%678 = load i32** %642, align 8, !tbaa !60
%679 = ptrtoint i32* %677 to i64
%680 = ptrtoint i32* %678 to i64
%681 = sub i64 %679, %680
%682 = ashr exact i64 %681, 2
%683 = icmp ult i64 %676, %682
br i1 %683, label %.lr.ph, label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge: ; preds = %_ZNSolsEj.exit, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82.preheader
%684 = invoke %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([2 x i8]* @.str20, i64 0, i64 0), i64 1)
to label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit unwind label %.nonloopexit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit82._crit_edge
%685 = load i32** %642, align 8, !tbaa !60
%686 = icmp eq i32* %685, null
br i1 %686, label %_ZNSt6vectorIjSaIjEED2Ev.exit56, label %687
; <label>:687 ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
%688 = bitcast i32* %685 to i8*
call void @_ZdlPv(i8* %688) #1
br label %_ZNSt6vectorIjSaIjEED2Ev.exit56
_ZNSt6vectorIjSaIjEED2Ev.exit56: ; preds = %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit, %687
ret i32 0
; <label>:689 ; preds = %609, %588, %559, %530, %501, %472, %433, %411, %382, %353, %324, %295, %266, %237, %208, %179, %148, %145
%.051 = phi i32 [ %147, %145 ], [ %612, %609 ], [ %591, %588 ], [ %562, %559 ], [ %533, %530 ], [ %504, %501 ], [ %475, %472 ], [ %436, %433 ], [ %414, %411 ], [ %385, %382 ], [ %356, %353 ], [ %327, %324 ], [ %298, %295 ], [ %269, %266 ], [ %240, %237 ], [ %211, %208 ], [ %182, %179 ], [ %151, %148 ]
%.0 = phi i8* [ %146, %145 ], [ %611, %609 ], [ %590, %588 ], [ %561, %559 ], [ %532, %530 ], [ %503, %501 ], [ %474, %472 ], [ %435, %433 ], [ %413, %411 ], [ %384, %382 ], [ %355, %353 ], [ %326, %324 ], [ %297, %295 ], [ %268, %266 ], [ %239, %237 ], [ %210, %208 ], [ %181, %179 ], [ %150, %148 ]
%690 = getelementptr inbounds %"class.std::vector"* %results, i64 0, i32 0, i32 0, i32 0
%691 = load i32** %690, align 8, !tbaa !60
%692 = icmp eq i32* %691, null
br i1 %692, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %693
; <label>:693 ; preds = %689
%694 = bitcast i32* %691 to i8*
call void @_ZdlPv(i8* %694) #1
br label %_ZNSt6vectorIjSaIjEED2Ev.exit
_ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %693, %689
%695 = insertvalue { i8*, i32 } undef, i8* %.0, 0
%696 = insertvalue { i8*, i32 } %695, i32 %.051, 1
resume { i8*, i32 } %696
; <label>:697 ; preds = %609, %588, %559, %530, %501, %472, %433, %411, %382, %353, %324, %295, %266, %237, %208, %179, %148
%698 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
catch i8* null
%699 = extractvalue { i8*, i32 } %698, 0
call void @__clang_call_terminate(i8* %699) #13
unreachable
}
declare i32 @__gxx_personality_v0(...)
; Function Attrs: nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #1
; Function Attrs: uwtable
define linkonce_odr void @_ZN5TimerD2Ev(%class.Timer* nocapture %this) unnamed_addr #5 align 2 {
%1 = getelementptr inbounds %class.Timer* %this, i64 0, i32 3
%2 = tail call i32 @gettimeofday(%struct.timeval* %1, %struct.timezone* null) #1
%3 = getelementptr inbounds %class.Timer* %this, i64 0, i32 1
%4 = load i8* %3, align 1, !tbaa !49, !range !61
%5 = icmp eq i8 %4, 0
br i1 %5, label %44, label %6
; <label>:6 ; preds = %0
%7 = getelementptr inbounds %class.Timer* %this, i64 0, i32 2, i32 1
%8 = getelementptr inbounds %class.Timer* %this, i64 0, i32 3, i32 1
%9 = getelementptr inbounds %class.Timer* %this, i64 0, i32 2, i32 0
%10 = getelementptr inbounds %struct.timeval* %1, i64 0, i32 0
%11 = load i64* %7, align 8, !tbaa !62
%12 = load i64* %8, align 8, !tbaa !63
%13 = load i64* %9, align 8, !tbaa !64
%14 = load i64* %10, align 8, !tbaa !65
%15 = sub nsw i64 %12, %11
%16 = sub nsw i64 %14, %13
%17 = sitofp i64 %15 to double
%18 = mul nsw i64 %16, 1000
%19 = fdiv double %17, 1.000000e+03
%20 = sitofp i64 %18 to double
%21 = fadd double %19, %20
%22 = fadd double %21, 5.000000e-01
%23 = fptosi double %22 to i64
%24 = getelementptr inbounds %class.Timer* %this, i64 0, i32 0
%25 = load i8** %24, align 8, !tbaa !44
%26 = icmp eq i8* %25, null
br i1 %26, label %27, label %38
; <label>:27 ; preds = %6
%28 = load i8** bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8**), align 8, !tbaa !54
%29 = getelementptr i8* %28, i64 -24
%30 = bitcast i8* %29 to i64*
%31 = load i64* %30, align 8
%32 = getelementptr inbounds i8* bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8*), i64 %31
%33 = bitcast i8* %32 to %"class.std::basic_ios"*
%.sum.i = add i64 %31, 32
%34 = getelementptr inbounds i8* bitcast (%"class.std::basic_ostream"* @_ZSt4cout to i8*), i64 %.sum.i
%35 = bitcast i8* %34 to i32*
%36 = load i32* %35, align 4, !tbaa !66
%37 = or i32 %36, 1
tail call void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"* %33, i32 %37)
br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
; <label>:38 ; preds = %6
%39 = tail call i64 @strlen(i8* %25) #1
%40 = tail call %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* %25, i64 %39)
br label %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit: ; preds = %27, %38
%41 = tail call %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* @_ZSt4cout, i8* getelementptr inbounds ([3 x i8]* @.str22, i64 0, i64 0), i64 2)
%42 = tail call %"class.std::basic_ostream"* @_ZNSo9_M_insertIlEERSoT_(%"class.std::basic_ostream"* @_ZSt4cout, i64 %23)
%43 = tail call %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"* %42, i8* getelementptr inbounds ([8 x i8]* @.str23, i64 0, i64 0), i64 7)
br label %44
; <label>:44 ; preds = %0, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit
ret void
}
; Function Attrs: noinline noreturn nounwind
define linkonce_odr hidden void @__clang_call_terminate(i8*) #6 {
%2 = tail call i8* @__cxa_begin_catch(i8* %0) #1
tail call void @_ZSt9terminatev() #13
unreachable
}
declare i8* @__cxa_begin_catch(i8*)
declare void @_ZSt9terminatev()
; Function Attrs: nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #1
declare %"class.std::basic_ostream"* @_ZNSolsEi(%"class.std::basic_ostream"*, i32) #0
declare %"class.std::basic_ostream"* @_ZNSo9_M_insertImEERSoT_(%"class.std::basic_ostream"*, i64) #0
; Function Attrs: uwtable
define linkonce_odr void @_ZNSt6vectorIjSaIjEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPjS1_EERKj(%"class.std::vector"* nocapture %this, i32* %__position.coerce, i32* nocapture readonly %__x) #5 align 2 {
%1 = getelementptr inbounds %"class.std::vector"* %this, i64 0, i32 0, i32 0, i32 1
%2 = load i32** %1, align 8, !tbaa !50
%3 = getelementptr inbounds %"class.std::vector"* %this, i64 0, i32 0, i32 0, i32 2
%4 = load i32** %3, align 8, !tbaa !53
%5 = icmp eq i32* %2, %4
br i1 %5, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit, label %6
; <label>:6 ; preds = %0
%7 = icmp eq i32* %2, null
%.pre = getelementptr inbounds i32* %2, i64 -1
br i1 %7, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit, label %8
; <label>:8 ; preds = %6
%9 = load i32* %.pre, align 4, !tbaa !5
store i32 %9, i32* %2, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit: ; preds = %6, %8
%10 = getelementptr inbounds i32* %2, i64 1
store i32* %10, i32** %1, align 8, !tbaa !50
%11 = load i32* %__x, align 4, !tbaa !5
%12 = ptrtoint i32* %.pre to i64
%13 = ptrtoint i32* %__position.coerce to i64
%14 = sub i64 %12, %13
%15 = ashr exact i64 %14, 2
%16 = icmp eq i64 %15, 0
br i1 %16, label %_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit, label %17
; <label>:17 ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit
%.pre.i.i.i.i = sub i64 0, %15
%.pre1.i.i.i.i = getelementptr inbounds i32* %2, i64 %.pre.i.i.i.i
%18 = bitcast i32* %.pre1.i.i.i.i to i8*
%19 = bitcast i32* %__position.coerce to i8*
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %18, i8* %19, i64 %14, i32 4, i1 false) #1
br label %_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit
_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit: ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit, %17
store i32 %11, i32* %__position.coerce, align 4, !tbaa !5
br label %71
_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit: ; preds = %0
%20 = getelementptr inbounds %"class.std::vector"* %this, i64 0, i32 0, i32 0, i32 0
%21 = load i32** %20, align 8, !tbaa !60
%22 = ptrtoint i32* %2 to i64
%23 = ptrtoint i32* %21 to i64
%24 = sub i64 %22, %23
%25 = ashr exact i64 %24, 2
%26 = icmp eq i64 %25, 0
%27 = select i1 %26, i64 1, i64 %25
%uadd.i = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %25, i64 %27)
%28 = extractvalue { i64, i1 } %uadd.i, 0
%29 = extractvalue { i64, i1 } %uadd.i, 1
%30 = icmp ugt i64 %28, 4611686018427387903
%or.cond.i = or i1 %29, %30
%31 = select i1 %or.cond.i, i64 4611686018427387903, i64 %28
%32 = ptrtoint i32* %__position.coerce to i64
%33 = sub i64 %32, %23
%34 = ashr exact i64 %33, 2
%35 = icmp eq i64 %31, 0
br i1 %35, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit, label %36
; <label>:36 ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit
%37 = icmp ugt i64 %31, 4611686018427387903
br i1 %37, label %38, label %_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i
; <label>:38 ; preds = %36
tail call void @_ZSt17__throw_bad_allocv() #14
unreachable
_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i: ; preds = %36
%39 = shl i64 %31, 2
%40 = tail call noalias i8* @_Znwm(i64 %39)
%41 = bitcast i8* %40 to i32*
br label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit
_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit, %_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i
%42 = phi i32* [ %41, %_ZN9__gnu_cxx13new_allocatorIjE8allocateEmPKv.exit.i ], [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit ]
%43 = getelementptr inbounds i32* %42, i64 %34
%44 = icmp eq i32* %43, null
br i1 %44, label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3, label %45
; <label>:45 ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit
%46 = load i32* %__x, align 4, !tbaa !5
store i32 %46, i32* %43, align 4, !tbaa !5
br label %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3
_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3: ; preds = %45, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit
%47 = load i32** %20, align 8, !tbaa !60
%48 = ptrtoint i32* %47 to i64
%49 = sub i64 %32, %48
%50 = ashr exact i64 %49, 2
%51 = icmp eq i64 %50, 0
br i1 %51, label %55, label %52
; <label>:52 ; preds = %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3
%53 = bitcast i32* %42 to i8*
%54 = bitcast i32* %47 to i8*
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %53, i8* %54, i64 %49, i32 4, i1 false) #1
br label %55
; <label>:55 ; preds = %52, %_ZN9__gnu_cxx14__alloc_traitsISaIjEE9constructIjEEvRS1_PjRKT_.exit3
%.sum = add i64 %50, 1
%56 = load i32** %1, align 8, !tbaa !50
%57 = ptrtoint i32* %56 to i64
%58 = sub i64 %57, %32
%59 = ashr exact i64 %58, 2
%60 = icmp eq i64 %59, 0
br i1 %60, label %65, label %61
; <label>:61 ; preds = %55
%62 = getelementptr inbounds i32* %42, i64 %.sum
%63 = bitcast i32* %62 to i8*
%64 = bitcast i32* %__position.coerce to i8*
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %63, i8* %64, i64 %58, i32 4, i1 false) #1
br label %65
; <label>:65 ; preds = %61, %55
%.sum4 = add i64 %59, %.sum
%66 = getelementptr inbounds i32* %42, i64 %.sum4
%67 = icmp eq i32* %47, null
br i1 %67, label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1, label %68
; <label>:68 ; preds = %65
%69 = bitcast i32* %47 to i8*
tail call void @_ZdlPv(i8* %69) #1
br label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1
_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1: ; preds = %65, %68
store i32* %42, i32** %20, align 8, !tbaa !60
store i32* %66, i32** %1, align 8, !tbaa !50
%70 = getelementptr inbounds i32* %42, i64 %31
store i32* %70, i32** %3, align 8, !tbaa !53
br label %71
; <label>:71 ; preds = %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit1, %_ZSt13copy_backwardIPjS0_ET0_T_S2_S1_.exit
ret void
}
; Function Attrs: nobuiltin nounwind
declare void @_ZdlPv(i8*) #7
; Function Attrs: nounwind
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
; Function Attrs: noreturn
declare void @_ZSt17__throw_bad_allocv() #8
; Function Attrs: nobuiltin
declare noalias i8* @_Znwm(i64) #9
declare %"class.std::basic_ostream"* @_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l(%"class.std::basic_ostream"*, i8*, i64) #0
; Function Attrs: nounwind readonly
declare i64 @strlen(i8* nocapture) #10
declare void @_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate(%"class.std::basic_ios"*, i32) #0
; Function Attrs: nounwind
declare i32 @gettimeofday(%struct.timeval* nocapture, %struct.timezone* nocapture) #11
declare %"class.std::basic_ostream"* @_ZNSo9_M_insertIlEERSoT_(%"class.std::basic_ostream"*, i64) #0
define internal void @_GLOBAL__I_a() section ".text.startup" {
tail call void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"* @_ZStL8__ioinit)
%1 = tail call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::ios_base::Init"*)* @_ZNSt8ios_base4InitD1Ev to void (i8*)*), i8* getelementptr inbounds (%"class.std::ios_base::Init"* @_ZStL8__ioinit, i64 0, i32 0), i8* @__dso_handle) #1
ret void
}
; Function Attrs: nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
; Function Attrs: nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #1
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #12
attributes #0 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind }
attributes #2 = { noinline nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { nounwind readonly uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #6 = { noinline noreturn nounwind }
attributes #7 = { nobuiltin nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #8 = { noreturn "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #9 = { nobuiltin "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #10 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #11 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #12 = { nounwind readnone }
attributes #13 = { noreturn nounwind }
attributes #14 = { noreturn }
!llvm.ident = !{!0}
!0 = metadata !{metadata !"clang version 3.5 "}
!1 = metadata !{metadata !1, metadata !2, metadata !3}
!2 = metadata !{metadata !"llvm.vectorizer.width", i32 1}
!3 = metadata !{metadata !"llvm.vectorizer.unroll", i32 1}
!4 = metadata !{metadata !4, metadata !2, metadata !3}
!5 = metadata !{metadata !6, metadata !6, i64 0}
!6 = metadata !{metadata !"int", metadata !7, i64 0}
!7 = metadata !{metadata !"omnipotent char", metadata !8, i64 0}
!8 = metadata !{metadata !"Simple C/C++ TBAA"}
!9 = metadata !{metadata !9, metadata !2, metadata !3}
!10 = metadata !{metadata !10, metadata !2, metadata !3}
!11 = metadata !{metadata !11, metadata !2, metadata !3}
!12 = metadata !{metadata !12, metadata !2, metadata !3}
!13 = metadata !{metadata !13, metadata !2, metadata !3}
!14 = metadata !{metadata !14, metadata !2, metadata !3}
!15 = metadata !{metadata !15, metadata !2, metadata !3}
!16 = metadata !{metadata !16, metadata !2, metadata !3}
!17 = metadata !{metadata !17, metadata !2, metadata !3}
!18 = metadata !{metadata !18, metadata !2, metadata !3}
!19 = metadata !{metadata !19, metadata !2, metadata !3}
!20 = metadata !{metadata !20, metadata !2, metadata !3}
!21 = metadata !{metadata !21, metadata !2, metadata !3}
!22 = metadata !{metadata !22, metadata !2, metadata !3}
!23 = metadata !{metadata !23, metadata !2, metadata !3}
!24 = metadata !{metadata !24, metadata !2, metadata !3}
!25 = metadata !{metadata !25, metadata !2, metadata !3}
!26 = metadata !{metadata !26, metadata !2, metadata !3}
!27 = metadata !{metadata !28, metadata !28, i64 0}
!28 = metadata !{metadata !"any pointer", metadata !7, i64 0}
!29 = metadata !{metadata !29, metadata !2, metadata !3}
!30 = metadata !{metadata !30, metadata !2, metadata !3}
!31 = metadata !{metadata !31, metadata !2, metadata !3}
!32 = metadata !{metadata !32, metadata !2, metadata !3}
!33 = metadata !{metadata !33, metadata !2, metadata !3}
!34 = metadata !{metadata !34, metadata !2, metadata !3}
!35 = metadata !{metadata !35, metadata !2, metadata !3}
!36 = metadata !{metadata !37, metadata !37, i64 0}
!37 = metadata !{metadata !"short", metadata !7, i64 0}
!38 = metadata !{metadata !38, metadata !2, metadata !3}
!39 = metadata !{metadata !39, metadata !2, metadata !3}
!40 = metadata !{metadata !40, metadata !2, metadata !3}
!41 = metadata !{metadata !7, metadata !7, i64 0}
!42 = metadata !{metadata !43, metadata !43, i64 0}
!43 = metadata !{metadata !"float", metadata !7, i64 0}
!44 = metadata !{metadata !45, metadata !28, i64 0}
!45 = metadata !{metadata !"_ZTS5Timer", metadata !28, i64 0, metadata !46, i64 8, metadata !47, i64 16, metadata !47, i64 32}
!46 = metadata !{metadata !"bool", metadata !7, i64 0}
!47 = metadata !{metadata !"_ZTS7timeval", metadata !48, i64 0, metadata !48, i64 8}
!48 = metadata !{metadata !"long", metadata !7, i64 0}
!49 = metadata !{metadata !45, metadata !46, i64 8}
!50 = metadata !{metadata !51, metadata !28, i64 8}
!51 = metadata !{metadata !"_ZTSSt12_Vector_baseIjSaIjEE", metadata !52, i64 0}
!52 = metadata !{metadata !"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", metadata !28, i64 0, metadata !28, i64 8, metadata !28, i64 16}
!53 = metadata !{metadata !51, metadata !28, i64 16}
!54 = metadata !{metadata !55, metadata !55, i64 0}
!55 = metadata !{metadata !"vtable pointer", metadata !8, i64 0}
!56 = metadata !{metadata !57, metadata !57, i64 0}
!57 = metadata !{metadata !"_ZTSSt13_Ios_Fmtflags", metadata !7, i64 0}
!58 = metadata !{metadata !58, metadata !2, metadata !3}
!59 = metadata !{metadata !59, metadata !2, metadata !3}
!60 = metadata !{metadata !51, metadata !28, i64 0}
!61 = metadata !{i8 0, i8 2}
!62 = metadata !{metadata !45, metadata !48, i64 24}
!63 = metadata !{metadata !45, metadata !48, i64 40}
!64 = metadata !{metadata !45, metadata !48, i64 16}
!65 = metadata !{metadata !45, metadata !48, i64 32}
!66 = metadata !{metadata !67, metadata !68, i64 32}
!67 = metadata !{metadata !"_ZTSSt8ios_base", metadata !48, i64 8, metadata !48, i64 16, metadata !57, i64 24, metadata !68, i64 28, metadata !68, i64 32, metadata !28, i64 40, metadata !69, i64 48, metadata !7, i64 64, metadata !6, i64 192, metadata !28, i64 200, metadata !70, i64 208}
!68 = metadata !{metadata !"_ZTSSt12_Ios_Iostate", metadata !7, i64 0}
!69 = metadata !{metadata !"_ZTSNSt8ios_base6_WordsE", metadata !28, i64 0, metadata !48, i64 8}
!70 = metadata !{metadata !"_ZTSSt6locale", metadata !28, i64 0}
More information about the llvm-commits
mailing list