Skip to content

Instantly share code, notes, and snippets.

@omochi
Last active October 23, 2017 05:31
Show Gist options
  • Save omochi/0e823119a114f8412c04e708da03d5a8 to your computer and use it in GitHub Desktop.
Save omochi/0e823119a114f8412c04e708da03d5a8 to your computer and use it in GitHub Desktop.
import Foundation
let ns = 0..<10000
let loop = 1000 * 100
func measure(_ f: () -> Void) {
var t: TimeInterval = 0
for _ in 0..<loop {
let start = Date()
f()
let end = Date()
t += end.timeIntervalSince(start)
}
print("x1000: \(t)")
}
func testForLoop() {
print("testForLoop")
var k = 0
measure {
var result: Int = 0
for n in ns {
result += n * n
}
k = (k + result) / 2
}
print(k)
}
func testMapReduce() {
print("testMapReduce")
var k = 0
measure {
let result = ns.map { $0 * $0 }.reduce(0) { $0 + $1 }
k = (k + result) / 2
}
print(k)
}
func testLazyMapReduce() {
print("testLazyMapReduce")
var k = 0
measure {
let result = ns.lazy.map { $0 * $0 }.reduce(0) { $0 + $1 }
k = (k + result) / 2
}
print(k)
}
func main() {
testForLoop()
testMapReduce()
testLazyMapReduce()
}
main()
; ModuleID = '-'
source_filename = "-"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.9"
%Ts14CountableRangeVySiG = type <{ %TSi, %TSi }>
%TSi = type <{ i64 }>
%Ts6UInt32V = type <{ i32 }>
%struct._SwiftEmptyArrayStorage = type { %struct.HeapObject, %struct._SwiftArrayBodyStorage }
%struct.HeapObject = type { %struct.HeapMetadata*, %struct.InlineRefCounts }
%struct.HeapMetadata = type opaque
%struct.InlineRefCounts = type { i32, i32 }
%struct._SwiftArrayBodyStorage = type { i64, i64 }
%swift.refcounted = type { %swift.type*, i32, i32 }
%swift.type = type { i64 }
%swift.protocol = type { i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i32, i16, i16, i32 }
%TSS = type <{ %Ts11_StringCoreV }>
%Ts11_StringCoreV = type <{ %TSvSg, %TSu, %TyXlSg }>
%TSvSg = type <{ [8 x i8] }>
%TSu = type <{ i64 }>
%TyXlSg = type <{ [8 x i8] }>
%TSd = type <{ double }>
%swift.bridge = type opaque
%objc_object = type opaque
%Ts15ContiguousArrayV = type <{ %Ts22_ContiguousArrayBufferV }>
%Ts22_ContiguousArrayBufferV = type <{ %Ts27_ContiguousArrayStorageBaseC* }>
%Ts27_ContiguousArrayStorageBaseC = type <{ %swift.refcounted, %Ts10_ArrayBodyV }>
%Ts10_ArrayBodyV = type <{ %TSC22_SwiftArrayBodyStorageV }>
%TSC22_SwiftArrayBodyStorageV = type <{ %TSi, %TSu }>
%Ts6UInt16V = type <{ i16 }>
%Ts14_IgnorePointerV = type opaque
@_T01a2nss14CountableRangeVySiGv = hidden local_unnamed_addr global %Ts14CountableRangeVySiG zeroinitializer, align 16
@_T01a4loopSiv = hidden local_unnamed_addr global %TSi zeroinitializer, align 8
@_T0s19_emptyStringStorages6UInt32Vv = external global %Ts6UInt32V, align 4
@_swiftEmptyArrayStorage = external global %struct._SwiftEmptyArrayStorage, align 8
@_swift_release = external local_unnamed_addr global void (%swift.refcounted*)*
@_T0s23_ContiguousArrayStorageCyypGML = linkonce_odr hidden local_unnamed_addr global %swift.type* null, align 8
@_T0ypML = linkonce_odr hidden local_unnamed_addr global %swift.type* null, align 8
@_swift_getExistentialTypeMetadata = external local_unnamed_addr global %swift.type* (i1, %swift.type*, i64, %swift.protocol**)*
@_swift_allocObject = external local_unnamed_addr global %swift.refcounted* (%swift.type*, i64, i64)*
@_T0SSN = external global %swift.type, align 8
@0 = private unnamed_addr constant [12 x i8] c"testForLoop\00"
@_T0s23_ContiguousArrayStorageCySSGML = linkonce_odr hidden local_unnamed_addr global %swift.type* null, align 8
@1 = private unnamed_addr constant [8 x i8] c"x1000: \00"
@2 = private unnamed_addr constant [1 x i8] zeroinitializer
@_T0SiN = external global %swift.type, align 8
@3 = private unnamed_addr constant [14 x i8] c"testMapReduce\00"
@_swift_retain = external local_unnamed_addr global void (%swift.refcounted*)*
@_swift_isUniquelyReferenced_nonNull_native = external local_unnamed_addr global i1 (%swift.refcounted*)*
@4 = private unnamed_addr constant [18 x i8] c"testLazyMapReduce\00"
@"_swift_FORCE_LOAD_$_swiftFoundation" = external global i1
@"_swift_FORCE_LOAD_$_swiftFoundation_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftFoundation"
@"_swift_FORCE_LOAD_$_swiftObjectiveC" = external global i1
@"_swift_FORCE_LOAD_$_swiftObjectiveC_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftObjectiveC"
@"_swift_FORCE_LOAD_$_swiftDarwin" = external global i1
@"_swift_FORCE_LOAD_$_swiftDarwin_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftDarwin"
@"_swift_FORCE_LOAD_$_swiftIOKit" = external global i1
@"_swift_FORCE_LOAD_$_swiftIOKit_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftIOKit"
@"_swift_FORCE_LOAD_$_swiftDispatch" = external global i1
@"_swift_FORCE_LOAD_$_swiftDispatch_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftDispatch"
@"_swift_FORCE_LOAD_$_swiftCoreFoundation" = external global i1
@"_swift_FORCE_LOAD_$_swiftCoreFoundation_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftCoreFoundation"
@"_swift_FORCE_LOAD_$_swiftCoreGraphics" = external global i1
@"_swift_FORCE_LOAD_$_swiftCoreGraphics_$_a" = weak hidden constant i1* @"_swift_FORCE_LOAD_$_swiftCoreGraphics"
@_T0s23_ContiguousArrayStorageCySiGML = linkonce_odr hidden local_unnamed_addr global %swift.type* null, align 8
@__swift_reflection_version = linkonce_odr hidden constant i16 3
@llvm.used = appending global [8 x i8*] [i8* bitcast (i16* @__swift_reflection_version to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftCoreFoundation_$_a" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftCoreGraphics_$_a" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftDarwin_$_a" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftDispatch_$_a" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftFoundation_$_a" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftIOKit_$_a" to i8*), i8* bitcast (i1** @"_swift_FORCE_LOAD_$_swiftObjectiveC_$_a" to i8*)], section "llvm.metadata"
define i32 @main(i32, i8** nocapture readnone) local_unnamed_addr #0 {
entry:
store <2 x i64> <i64 0, i64 10000>, <2 x i64>* bitcast (%Ts14CountableRangeVySiG* @_T01a2nss14CountableRangeVySiGv to <2 x i64>*), align 16
store i64 100000, i64* getelementptr inbounds (%TSi, %TSi* @_T01a4loopSiv, i64 0, i32 0), align 8
tail call swiftcc void @_T01a11testForLoopyyF()
tail call swiftcc void @_T01a13testMapReduceyyF()
tail call swiftcc void @_T01a17testLazyMapReduceyyF()
ret i32 0
}
define hidden swiftcc void @_T01a7measureyyycF(i8*, %swift.refcounted*) local_unnamed_addr #0 {
entry:
tail call swiftcc void @_T01a7measureyyycFTf4g_n(i8* %0, %swift.refcounted* %1) #8
tail call void @swift_rt_swift_release(%swift.refcounted* %1) #9
ret void
}
define hidden swiftcc void @_T01a11testForLoopyyF() local_unnamed_addr #0 {
entry:
%protocols.i.i = alloca [0 x %swift.protocol*], align 8
%reference.raw13 = alloca [104 x i8], align 8
%0 = alloca %TSS, align 16
%1 = alloca %TSd, align 8
%2 = alloca %TSS, align 8
%3 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML, align 8
%4 = icmp eq %swift.type* %3, null
br i1 %4, label %cacheIsNull.i, label %_T0s23_ContiguousArrayStorageCyypGMa.exit
cacheIsNull.i: ; preds = %entry
%5 = load %swift.type*, %swift.type** @_T0ypML, align 8
%6 = icmp eq %swift.type* %5, null
br i1 %6, label %cacheIsNull.i.i, label %_T0ypMa.exit.i
cacheIsNull.i.i: ; preds = %cacheIsNull.i
%7 = bitcast [0 x %swift.protocol*]* %protocols.i.i to i8*
call void @llvm.lifetime.start(i64 0, i8* nonnull %7) #9
%8 = getelementptr inbounds [0 x %swift.protocol*], [0 x %swift.protocol*]* %protocols.i.i, i64 0, i64 0
%9 = call %swift.type* @swift_rt_swift_getExistentialTypeMetadata(i1 true, %swift.type* null, i64 0, %swift.protocol** nonnull %8) #9
call void @llvm.lifetime.end(i64 0, i8* nonnull %7) #9
store atomic %swift.type* %9, %swift.type** @_T0ypML release, align 8
br label %_T0ypMa.exit.i
_T0ypMa.exit.i: ; preds = %cacheIsNull.i.i, %cacheIsNull.i
%10 = phi %swift.type* [ %5, %cacheIsNull.i ], [ %9, %cacheIsNull.i.i ]
%11 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* %10) #5
store atomic %swift.type* %11, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML release, align 8
br label %_T0s23_ContiguousArrayStorageCyypGMa.exit
_T0s23_ContiguousArrayStorageCyypGMa.exit: ; preds = %entry, %_T0ypMa.exit.i
%12 = phi %swift.type* [ %3, %entry ], [ %11, %_T0ypMa.exit.i ]
%13 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %12, i64 64, i64 7) #9
%14 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 1
%15 = bitcast %swift.refcounted* %14 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %15, align 8
%16 = bitcast %swift.refcounted* %13 to %swift.bridge*
%17 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 2
%18 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 3, i32 1
%19 = bitcast i32* %18 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %19, align 8
%20 = bitcast %swift.refcounted* %17 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([12 x i8]* @0 to i64), i64 11>, <2 x i64>* %20, align 8
%._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 3
%21 = bitcast %swift.refcounted* %._core._owner to i64*
store i64 0, i64* %21, align 8
%22 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%23 = extractvalue { i64, i64, i64 } %22, 0
%24 = extractvalue { i64, i64, i64 } %22, 1
%25 = extractvalue { i64, i64, i64 } %22, 2
%26 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%27 = extractvalue { i64, i64, i64 } %26, 0
%28 = extractvalue { i64, i64, i64 } %26, 1
%29 = extractvalue { i64, i64, i64 } %26, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %16, i64 %23, i64 %24, i64 %25, i64 %27, i64 %28, i64 %29)
br label %30
; <label>:30: ; preds = %54, %_T0s23_ContiguousArrayStorageCyypGMa.exit
%31 = phi double [ 0.000000e+00, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %59, %54 ]
%32 = phi i64 [ 0, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %51, %54 ]
%33 = phi i64 [ 0, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %56, %54 ]
%34 = call swiftcc double @_T010Foundation4DateVACycfC()
br label %35
; <label>:35: ; preds = %145, %30
%36 = phi i64 [ 0, %30 ], [ %143, %145 ]
%37 = phi i64 [ 0, %30 ], [ %47, %145 ]
%38 = or i64 %37, 1
%39 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %37, i64 %37)
%40 = extractvalue { i64, i1 } %39, 1
br i1 %40, label %137, label %41
; <label>:41: ; preds = %35
%42 = extractvalue { i64, i1 } %39, 0
%43 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %36, i64 %42)
%44 = extractvalue { i64, i1 } %43, 0
%45 = extractvalue { i64, i1 } %43, 1
br i1 %45, label %138, label %46
; <label>:46: ; preds = %41
%47 = add nsw i64 %37, 2
%48 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %38, i64 %38)
%49 = extractvalue { i64, i1 } %48, 1
br i1 %49, label %137, label %140
; <label>:50: ; preds = %145
%51 = add nuw nsw i64 %32, 1
%52 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %33, i64 %143)
%53 = extractvalue { i64, i1 } %52, 1
br i1 %53, label %139, label %54
; <label>:54: ; preds = %50
%55 = extractvalue { i64, i1 } %52, 0
%56 = sdiv i64 %55, 2
%57 = call swiftcc double @_T010Foundation4DateVACycfC()
%58 = call swiftcc double @_T010Foundation4DateV17timeIntervalSinceSdACF(double %34, double %57)
%59 = fadd double %31, %58
%60 = icmp eq i64 %51, 100000
br i1 %60, label %61, label %30
; <label>:61: ; preds = %54
%62 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %12, i64 64, i64 7) #9
%63 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %62, i64 1
%64 = bitcast %swift.refcounted* %63 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %64, align 8
%65 = bitcast %swift.refcounted* %62 to %swift.bridge*
%66 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %62, i64 2
%67 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %62, i64 3, i32 1
%68 = bitcast i32* %67 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %68, align 8
%69 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML, align 8
%70 = icmp eq %swift.type* %69, null
br i1 %70, label %cacheIsNull.i14, label %_T0s23_ContiguousArrayStorageCySSGMa.exit
cacheIsNull.i14: ; preds = %61
%71 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* nonnull @_T0SSN) #5
store atomic %swift.type* %71, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML release, align 8
br label %_T0s23_ContiguousArrayStorageCySSGMa.exit
_T0s23_ContiguousArrayStorageCySSGMa.exit: ; preds = %61, %cacheIsNull.i14
%72 = phi %swift.type* [ %69, %61 ], [ %71, %cacheIsNull.i14 ]
%73 = bitcast [104 x i8]* %reference.raw13 to %swift.refcounted*
%reference.new = call %swift.refcounted* @swift_initStackObject(%swift.type* %72, %swift.refcounted* nonnull %73) #9
%74 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 1
%75 = bitcast %swift.refcounted* %74 to <2 x i64>*
store <2 x i64> <i64 3, i64 6>, <2 x i64>* %75, align 8
%76 = bitcast %swift.refcounted* %reference.new to %swift.bridge*
%77 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2
%78 = getelementptr inbounds %TSS, %TSS* %0, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %78)
%79 = bitcast %TSS* %0 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([8 x i8]* @1 to i64), i64 7>, <2 x i64>* %79, align 16
%._core5._owner = getelementptr inbounds %TSS, %TSS* %0, i64 0, i32 0, i32 2
%80 = bitcast %TyXlSg* %._core5._owner to i64*
store i64 0, i64* %80, align 16
%81 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %0)
%82 = extractvalue { i64, i64, i64 } %81, 0
%83 = extractvalue { i64, i64, i64 } %81, 1
%84 = extractvalue { i64, i64, i64 } %81, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %78)
%85 = bitcast %swift.refcounted* %77 to i64*
store i64 %82, i64* %85, align 8
%tailaddr4._core._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2, i32 1
%tailaddr4._core._countAndFlags._value = bitcast i32* %tailaddr4._core._countAndFlags to i64*
store i64 %83, i64* %tailaddr4._core._countAndFlags._value, align 8
%tailaddr4._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3
%86 = bitcast %swift.refcounted* %tailaddr4._core._owner to i64*
store i64 %84, i64* %86, align 8
%87 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3, i32 1
%88 = bitcast %TSd* %1 to i8*
call void @llvm.lifetime.start(i64 8, i8* nonnull %88)
%._value = getelementptr inbounds %TSd, %TSd* %1, i64 0, i32 0
store double %59, double* %._value, align 8
%89 = call swiftcc { i64, i64, i64 } @_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSd_Tg5(%TSd* noalias nocapture nonnull dereferenceable(8) %1)
%90 = extractvalue { i64, i64, i64 } %89, 0
%91 = extractvalue { i64, i64, i64 } %89, 1
%92 = extractvalue { i64, i64, i64 } %89, 2
call void @llvm.lifetime.end(i64 8, i8* nonnull %88)
%93 = bitcast i32* %87 to i64*
store i64 %90, i64* %93, align 8
%._core6._countAndFlags = getelementptr inbounds i32, i32* %87, i64 2
%._core6._countAndFlags._value = bitcast i32* %._core6._countAndFlags to i64*
store i64 %91, i64* %._core6._countAndFlags._value, align 8
%._core6._owner = getelementptr inbounds i32, i32* %87, i64 4
%94 = bitcast i32* %._core6._owner to i64*
store i64 %92, i64* %94, align 8
%95 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5
%96 = getelementptr inbounds %TSS, %TSS* %2, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %96)
%97 = bitcast %TSS* %2 to i64*
store i64 ptrtoint ([1 x i8]* @2 to i64), i64* %97, align 8
%._core7._countAndFlags._value = getelementptr inbounds %TSS, %TSS* %2, i64 0, i32 0, i32 1, i32 0
%98 = bitcast i64* %._core7._countAndFlags._value to i8*
call void @llvm.memset.p0i8.i64(i8* %98, i8 0, i64 16, i32 8, i1 false)
%99 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %2)
%100 = extractvalue { i64, i64, i64 } %99, 0
%101 = extractvalue { i64, i64, i64 } %99, 1
%102 = extractvalue { i64, i64, i64 } %99, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %96)
%103 = bitcast %swift.refcounted* %95 to i64*
store i64 %100, i64* %103, align 8
%._core8._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5, i32 1
%._core8._countAndFlags._value = bitcast i32* %._core8._countAndFlags to i64*
store i64 %101, i64* %._core8._countAndFlags._value, align 8
%._core8._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 6
%104 = bitcast %swift.refcounted* %._core8._owner to i64*
store i64 %102, i64* %104, align 8
%105 = inttoptr i64 %84 to %objc_object*
%106 = inttoptr i64 %102 to %objc_object*
call void @swift_unknownRetain(%objc_object* %106) #9
call void @swift_unknownRetain(%objc_object* %105) #9
%107 = call swiftcc { i64, i64, i64 } @_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n(%swift.bridge* %76)
%108 = extractvalue { i64, i64, i64 } %107, 0
%109 = extractvalue { i64, i64, i64 } %107, 1
%110 = extractvalue { i64, i64, i64 } %107, 2
%111 = bitcast %swift.refcounted* %reference.new to i8*
call void @llvm.lifetime.end(i64 -1, i8* %111)
%112 = bitcast %swift.refcounted* %66 to i64*
store i64 %108, i64* %112, align 8
%._core9._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %62, i64 2, i32 1
%._core9._countAndFlags._value = bitcast i32* %._core9._countAndFlags to i64*
store i64 %109, i64* %._core9._countAndFlags._value, align 8
%._core9._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %62, i64 3
%113 = bitcast %swift.refcounted* %._core9._owner to i64*
store i64 %110, i64* %113, align 8
%114 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%115 = extractvalue { i64, i64, i64 } %114, 0
%116 = extractvalue { i64, i64, i64 } %114, 1
%117 = extractvalue { i64, i64, i64 } %114, 2
%118 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%119 = extractvalue { i64, i64, i64 } %118, 0
%120 = extractvalue { i64, i64, i64 } %118, 1
%121 = extractvalue { i64, i64, i64 } %118, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %65, i64 %115, i64 %116, i64 %117, i64 %119, i64 %120, i64 %121)
%122 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %12, i64 64, i64 7) #9
%123 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %122, i64 1
%124 = bitcast %swift.refcounted* %123 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %124, align 8
%125 = bitcast %swift.refcounted* %122 to %swift.bridge*
%126 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %122, i64 2
%127 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %122, i64 3, i32 1
%128 = bitcast i32* %127 to %swift.type**
store %swift.type* @_T0SiN, %swift.type** %128, align 8
%._value12 = bitcast %swift.refcounted* %126 to i64*
store i64 %56, i64* %._value12, align 8
%129 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%130 = extractvalue { i64, i64, i64 } %129, 0
%131 = extractvalue { i64, i64, i64 } %129, 1
%132 = extractvalue { i64, i64, i64 } %129, 2
%133 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%134 = extractvalue { i64, i64, i64 } %133, 0
%135 = extractvalue { i64, i64, i64 } %133, 1
%136 = extractvalue { i64, i64, i64 } %133, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %125, i64 %130, i64 %131, i64 %132, i64 %134, i64 %135, i64 %136)
ret void
; <label>:137: ; preds = %46, %35
call void asm sideeffect "", "n"(i32 0) #9
call void @llvm.trap()
unreachable
; <label>:138: ; preds = %140, %41
call void asm sideeffect "", "n"(i32 1) #9
call void @llvm.trap()
unreachable
; <label>:139: ; preds = %50
call void asm sideeffect "", "n"(i32 2) #9
call void @llvm.trap()
unreachable
; <label>:140: ; preds = %46
%141 = extractvalue { i64, i1 } %48, 0
%142 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %44, i64 %141)
%143 = extractvalue { i64, i1 } %142, 0
%144 = extractvalue { i64, i1 } %142, 1
br i1 %144, label %138, label %145
; <label>:145: ; preds = %140
%146 = icmp eq i64 %47, 10000
br i1 %146, label %50, label %35
}
define hidden swiftcc void @_T01a13testMapReduceyyF() local_unnamed_addr #0 {
entry:
%protocols.i.i = alloca [0 x %swift.protocol*], align 8
%0 = alloca %swift.refcounted*, align 8
%tmpcast = bitcast %swift.refcounted** %0 to %Ts15ContiguousArrayV*
%reference.raw21 = alloca [104 x i8], align 8
%1 = alloca %TSS, align 16
%2 = alloca %TSd, align 8
%3 = alloca %TSS, align 8
%4 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML, align 8
%5 = icmp eq %swift.type* %4, null
br i1 %5, label %cacheIsNull.i, label %_T0s23_ContiguousArrayStorageCyypGMa.exit
cacheIsNull.i: ; preds = %entry
%6 = load %swift.type*, %swift.type** @_T0ypML, align 8
%7 = icmp eq %swift.type* %6, null
br i1 %7, label %cacheIsNull.i.i, label %_T0ypMa.exit.i
cacheIsNull.i.i: ; preds = %cacheIsNull.i
%8 = bitcast [0 x %swift.protocol*]* %protocols.i.i to i8*
call void @llvm.lifetime.start(i64 0, i8* nonnull %8) #9
%9 = getelementptr inbounds [0 x %swift.protocol*], [0 x %swift.protocol*]* %protocols.i.i, i64 0, i64 0
%10 = call %swift.type* @swift_rt_swift_getExistentialTypeMetadata(i1 true, %swift.type* null, i64 0, %swift.protocol** nonnull %9) #9
call void @llvm.lifetime.end(i64 0, i8* nonnull %8) #9
store atomic %swift.type* %10, %swift.type** @_T0ypML release, align 8
br label %_T0ypMa.exit.i
_T0ypMa.exit.i: ; preds = %cacheIsNull.i.i, %cacheIsNull.i
%11 = phi %swift.type* [ %6, %cacheIsNull.i ], [ %10, %cacheIsNull.i.i ]
%12 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* %11) #5
store atomic %swift.type* %12, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML release, align 8
br label %_T0s23_ContiguousArrayStorageCyypGMa.exit
_T0s23_ContiguousArrayStorageCyypGMa.exit: ; preds = %entry, %_T0ypMa.exit.i
%13 = phi %swift.type* [ %4, %entry ], [ %12, %_T0ypMa.exit.i ]
%14 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %13, i64 64, i64 7) #9
%15 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %14, i64 1
%16 = bitcast %swift.refcounted* %15 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %16, align 8
%17 = bitcast %swift.refcounted* %14 to %swift.bridge*
%18 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %14, i64 2
%19 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %14, i64 3, i32 1
%20 = bitcast i32* %19 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %20, align 8
%21 = bitcast %swift.refcounted* %18 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([14 x i8]* @3 to i64), i64 13>, <2 x i64>* %21, align 8
%._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %14, i64 3
%22 = bitcast %swift.refcounted* %._core._owner to i64*
store i64 0, i64* %22, align 8
%23 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%24 = extractvalue { i64, i64, i64 } %23, 0
%25 = extractvalue { i64, i64, i64 } %23, 1
%26 = extractvalue { i64, i64, i64 } %23, 2
%27 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%28 = extractvalue { i64, i64, i64 } %27, 0
%29 = extractvalue { i64, i64, i64 } %27, 1
%30 = extractvalue { i64, i64, i64 } %27, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %17, i64 %24, i64 %25, i64 %26, i64 %28, i64 %29, i64 %30)
%31 = bitcast %swift.refcounted** %0 to i8*
%._buffer._storage = bitcast %swift.refcounted** %0 to %Ts27_ContiguousArrayStorageBaseC**
br label %32
; <label>:32: ; preds = %71, %_T0s23_ContiguousArrayStorageCyypGMa.exit
%33 = phi double [ 0.000000e+00, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %76, %71 ]
%34 = phi i64 [ 0, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %68, %71 ]
%35 = phi i64 [ 0, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %73, %71 ]
%36 = call swiftcc double @_T010Foundation4DateVACycfC()
call void @llvm.lifetime.start(i64 8, i8* nonnull %31)
store %Ts27_ContiguousArrayStorageBaseC* bitcast (%struct._SwiftEmptyArrayStorage* @_swiftEmptyArrayStorage to %Ts27_ContiguousArrayStorageBaseC*), %Ts27_ContiguousArrayStorageBaseC** %._buffer._storage, align 8
call void @swift_rt_swift_retain(%swift.refcounted* bitcast (%struct._SwiftEmptyArrayStorage* @_swiftEmptyArrayStorage to %swift.refcounted*)) #9
call swiftcc void @_T0s15ContiguousArrayV15reserveCapacityySiFSi_Tg5(i64 10000, %Ts15ContiguousArrayV* nocapture nonnull swiftself dereferenceable(8) %tmpcast)
%37 = load %swift.refcounted*, %swift.refcounted** %0, align 8
%38 = call i1 @swift_rt_swift_isUniquelyReferenced_nonNull_native(%swift.refcounted* %37) #9
br i1 %38, label %.preheader23.preheader, label %39, !prof !30
; <label>:39: ; preds = %32
%._storage2.count._value = getelementptr inbounds %swift.refcounted, %swift.refcounted* %37, i64 1
%40 = bitcast %swift.refcounted* %._storage2.count._value to i64*
%41 = load i64, i64* %40, align 8, !range !31
call swiftcc void @_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSi_Tg5(i64 %41, %Ts15ContiguousArrayV* nocapture nonnull swiftself dereferenceable(8) %tmpcast)
br label %.preheader23.preheader
.preheader23.preheader: ; preds = %32, %39
br label %.preheader23
.preheader23: ; preds = %.preheader23.preheader, %57
%42 = phi i64 [ %59, %57 ], [ 0, %.preheader23.preheader ]
%43 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %42, i64 %42)
%44 = extractvalue { i64, i1 } %43, 0
%45 = extractvalue { i64, i1 } %43, 1
br i1 %45, label %165, label %46
; <label>:46: ; preds = %.preheader23
%47 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._buffer._storage, align 8
%._storage3.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %47, i64 0, i32 1, i32 0, i32 0, i32 0
%48 = load i64, i64* %._storage3.count._value, align 8, !range !31
%49 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %48, i64 1)
%50 = extractvalue { i64, i1 } %49, 0
%51 = extractvalue { i64, i1 } %49, 1
br i1 %51, label %166, label %52
; <label>:52: ; preds = %46
%._storage3._capacityAndFlags._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %47, i64 0, i32 1, i32 0, i32 1, i32 0
%53 = load i64, i64* %._storage3._capacityAndFlags._value, align 8
%54 = lshr i64 %53, 1
%55 = icmp slt i64 %54, %50
br i1 %55, label %56, label %57, !prof !32
; <label>:56: ; preds = %52
call swiftcc void @_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSi_Tg5(i64 %48, %Ts15ContiguousArrayV* nocapture nonnull swiftself dereferenceable(8) %tmpcast)
%.pre = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._buffer._storage, align 8
br label %57
; <label>:57: ; preds = %52, %56
%58 = phi %Ts27_ContiguousArrayStorageBaseC* [ %47, %52 ], [ %.pre, %56 ]
%59 = add nuw nsw i64 %42, 1
%._storage4.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %58, i64 0, i32 1, i32 0, i32 0, i32 0
store i64 %50, i64* %._storage4.count._value, align 8
%60 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %58, i64 1
%tailaddr5 = bitcast %Ts27_ContiguousArrayStorageBaseC* %60 to %TSi*
%._value = getelementptr inbounds %TSi, %TSi* %tailaddr5, i64 %48, i32 0
store i64 %44, i64* %._value, align 8
%61 = icmp eq i64 %59, 10000
br i1 %61, label %62, label %.preheader23
; <label>:62: ; preds = %57
call void @llvm.lifetime.end(i64 8, i8* nonnull %31)
%63 = icmp eq i64 %50, 0
br i1 %63, label %64, label %.preheader.preheader
.preheader.preheader: ; preds = %62
br label %.preheader
; <label>:64: ; preds = %62
%65 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %58, i64 0, i32 0
call void @swift_rt_swift_release(%swift.refcounted* %65) #9
br label %66
; <label>:66: ; preds = %64, %163
%67 = phi i64 [ %159, %163 ], [ 0, %64 ]
%68 = add nuw nsw i64 %34, 1
%69 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %35, i64 %67)
%70 = extractvalue { i64, i1 } %69, 1
br i1 %70, label %168, label %71
; <label>:71: ; preds = %66
%72 = extractvalue { i64, i1 } %69, 0
%73 = sdiv i64 %72, 2
%74 = call swiftcc double @_T010Foundation4DateVACycfC()
%75 = call swiftcc double @_T010Foundation4DateV17timeIntervalSinceSdACF(double %36, double %74)
%76 = fadd double %33, %75
%77 = icmp eq i64 %68, 100000
br i1 %77, label %78, label %32
; <label>:78: ; preds = %71
%79 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %13, i64 64, i64 7) #9
%80 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %79, i64 1
%81 = bitcast %swift.refcounted* %80 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %81, align 8
%82 = bitcast %swift.refcounted* %79 to %swift.bridge*
%83 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %79, i64 2
%84 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %79, i64 3, i32 1
%85 = bitcast i32* %84 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %85, align 8
%86 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML, align 8
%87 = icmp eq %swift.type* %86, null
br i1 %87, label %cacheIsNull.i22, label %_T0s23_ContiguousArrayStorageCySSGMa.exit
cacheIsNull.i22: ; preds = %78
%88 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* nonnull @_T0SSN) #5
store atomic %swift.type* %88, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML release, align 8
br label %_T0s23_ContiguousArrayStorageCySSGMa.exit
_T0s23_ContiguousArrayStorageCySSGMa.exit: ; preds = %78, %cacheIsNull.i22
%89 = phi %swift.type* [ %86, %78 ], [ %88, %cacheIsNull.i22 ]
%90 = bitcast [104 x i8]* %reference.raw21 to %swift.refcounted*
%reference.new = call %swift.refcounted* @swift_initStackObject(%swift.type* %89, %swift.refcounted* nonnull %90) #9
%91 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 1
%92 = bitcast %swift.refcounted* %91 to <2 x i64>*
store <2 x i64> <i64 3, i64 6>, <2 x i64>* %92, align 8
%93 = bitcast %swift.refcounted* %reference.new to %swift.bridge*
%94 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2
%95 = getelementptr inbounds %TSS, %TSS* %1, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %95)
%96 = bitcast %TSS* %1 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([8 x i8]* @1 to i64), i64 7>, <2 x i64>* %96, align 16
%._core12._owner = getelementptr inbounds %TSS, %TSS* %1, i64 0, i32 0, i32 2
%97 = bitcast %TyXlSg* %._core12._owner to i64*
store i64 0, i64* %97, align 16
%98 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %1)
%99 = extractvalue { i64, i64, i64 } %98, 0
%100 = extractvalue { i64, i64, i64 } %98, 1
%101 = extractvalue { i64, i64, i64 } %98, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %95)
%102 = bitcast %swift.refcounted* %94 to i64*
store i64 %99, i64* %102, align 8
%tailaddr11._core._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2, i32 1
%tailaddr11._core._countAndFlags._value = bitcast i32* %tailaddr11._core._countAndFlags to i64*
store i64 %100, i64* %tailaddr11._core._countAndFlags._value, align 8
%tailaddr11._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3
%103 = bitcast %swift.refcounted* %tailaddr11._core._owner to i64*
store i64 %101, i64* %103, align 8
%104 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3, i32 1
%105 = bitcast %TSd* %2 to i8*
call void @llvm.lifetime.start(i64 8, i8* nonnull %105)
%._value13 = getelementptr inbounds %TSd, %TSd* %2, i64 0, i32 0
store double %76, double* %._value13, align 8
%106 = call swiftcc { i64, i64, i64 } @_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSd_Tg5(%TSd* noalias nocapture nonnull dereferenceable(8) %2)
%107 = extractvalue { i64, i64, i64 } %106, 0
%108 = extractvalue { i64, i64, i64 } %106, 1
%109 = extractvalue { i64, i64, i64 } %106, 2
call void @llvm.lifetime.end(i64 8, i8* nonnull %105)
%110 = bitcast i32* %104 to i64*
store i64 %107, i64* %110, align 8
%._core14._countAndFlags = getelementptr inbounds i32, i32* %104, i64 2
%._core14._countAndFlags._value = bitcast i32* %._core14._countAndFlags to i64*
store i64 %108, i64* %._core14._countAndFlags._value, align 8
%._core14._owner = getelementptr inbounds i32, i32* %104, i64 4
%111 = bitcast i32* %._core14._owner to i64*
store i64 %109, i64* %111, align 8
%112 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5
%113 = getelementptr inbounds %TSS, %TSS* %3, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %113)
%114 = bitcast %TSS* %3 to i64*
store i64 ptrtoint ([1 x i8]* @2 to i64), i64* %114, align 8
%._core15._countAndFlags._value = getelementptr inbounds %TSS, %TSS* %3, i64 0, i32 0, i32 1, i32 0
%115 = bitcast i64* %._core15._countAndFlags._value to i8*
call void @llvm.memset.p0i8.i64(i8* %115, i8 0, i64 16, i32 8, i1 false)
%116 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %3)
%117 = extractvalue { i64, i64, i64 } %116, 0
%118 = extractvalue { i64, i64, i64 } %116, 1
%119 = extractvalue { i64, i64, i64 } %116, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %113)
%120 = bitcast %swift.refcounted* %112 to i64*
store i64 %117, i64* %120, align 8
%._core16._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5, i32 1
%._core16._countAndFlags._value = bitcast i32* %._core16._countAndFlags to i64*
store i64 %118, i64* %._core16._countAndFlags._value, align 8
%._core16._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 6
%121 = bitcast %swift.refcounted* %._core16._owner to i64*
store i64 %119, i64* %121, align 8
%122 = inttoptr i64 %101 to %objc_object*
%123 = inttoptr i64 %119 to %objc_object*
call void @swift_unknownRetain(%objc_object* %123) #9
call void @swift_unknownRetain(%objc_object* %122) #9
%124 = call swiftcc { i64, i64, i64 } @_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n(%swift.bridge* %93)
%125 = extractvalue { i64, i64, i64 } %124, 0
%126 = extractvalue { i64, i64, i64 } %124, 1
%127 = extractvalue { i64, i64, i64 } %124, 2
%128 = bitcast %swift.refcounted* %reference.new to i8*
call void @llvm.lifetime.end(i64 -1, i8* %128)
%129 = bitcast %swift.refcounted* %83 to i64*
store i64 %125, i64* %129, align 8
%._core17._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %79, i64 2, i32 1
%._core17._countAndFlags._value = bitcast i32* %._core17._countAndFlags to i64*
store i64 %126, i64* %._core17._countAndFlags._value, align 8
%._core17._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %79, i64 3
%130 = bitcast %swift.refcounted* %._core17._owner to i64*
store i64 %127, i64* %130, align 8
%131 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%132 = extractvalue { i64, i64, i64 } %131, 0
%133 = extractvalue { i64, i64, i64 } %131, 1
%134 = extractvalue { i64, i64, i64 } %131, 2
%135 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%136 = extractvalue { i64, i64, i64 } %135, 0
%137 = extractvalue { i64, i64, i64 } %135, 1
%138 = extractvalue { i64, i64, i64 } %135, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %82, i64 %132, i64 %133, i64 %134, i64 %136, i64 %137, i64 %138)
%139 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %13, i64 64, i64 7) #9
%140 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %139, i64 1
%141 = bitcast %swift.refcounted* %140 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %141, align 8
%142 = bitcast %swift.refcounted* %139 to %swift.bridge*
%143 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %139, i64 2
%144 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %139, i64 3, i32 1
%145 = bitcast i32* %144 to %swift.type**
store %swift.type* @_T0SiN, %swift.type** %145, align 8
%._value20 = bitcast %swift.refcounted* %143 to i64*
store i64 %73, i64* %._value20, align 8
%146 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%147 = extractvalue { i64, i64, i64 } %146, 0
%148 = extractvalue { i64, i64, i64 } %146, 1
%149 = extractvalue { i64, i64, i64 } %146, 2
%150 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%151 = extractvalue { i64, i64, i64 } %150, 0
%152 = extractvalue { i64, i64, i64 } %150, 1
%153 = extractvalue { i64, i64, i64 } %150, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %142, i64 %147, i64 %148, i64 %149, i64 %151, i64 %152, i64 %153)
ret void
.preheader: ; preds = %.preheader.preheader, %161
%154 = phi i64 [ %159, %161 ], [ 0, %.preheader.preheader ]
%155 = phi i64 [ %157, %161 ], [ 0, %.preheader.preheader ]
%._value7 = getelementptr inbounds %TSi, %TSi* %tailaddr5, i64 %155, i32 0
%156 = load i64, i64* %._value7, align 8
%157 = add nuw nsw i64 %155, 1
%158 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %154, i64 %156)
%159 = extractvalue { i64, i1 } %158, 0
%160 = extractvalue { i64, i1 } %158, 1
br i1 %160, label %167, label %161
; <label>:161: ; preds = %.preheader
%162 = icmp eq i64 %157, %50
br i1 %162, label %163, label %.preheader
; <label>:163: ; preds = %161
%164 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %58, i64 0, i32 0
call void @swift_rt_swift_release(%swift.refcounted* %164) #9
br label %66
; <label>:165: ; preds = %.preheader23
call void asm sideeffect "", "n"(i32 0) #9
call void @llvm.trap()
unreachable
; <label>:166: ; preds = %46
call void asm sideeffect "", "n"(i32 1) #9
call void @llvm.trap()
unreachable
; <label>:167: ; preds = %.preheader
call void asm sideeffect "", "n"(i32 5) #9
call void @llvm.trap()
unreachable
; <label>:168: ; preds = %66
call void asm sideeffect "", "n"(i32 6) #9
call void @llvm.trap()
unreachable
}
define hidden swiftcc void @_T01a17testLazyMapReduceyyF() local_unnamed_addr #0 {
entry:
%protocols.i.i = alloca [0 x %swift.protocol*], align 8
%reference.raw13 = alloca [104 x i8], align 8
%0 = alloca %TSS, align 16
%1 = alloca %TSd, align 8
%2 = alloca %TSS, align 8
%3 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML, align 8
%4 = icmp eq %swift.type* %3, null
br i1 %4, label %cacheIsNull.i, label %_T0s23_ContiguousArrayStorageCyypGMa.exit
cacheIsNull.i: ; preds = %entry
%5 = load %swift.type*, %swift.type** @_T0ypML, align 8
%6 = icmp eq %swift.type* %5, null
br i1 %6, label %cacheIsNull.i.i, label %_T0ypMa.exit.i
cacheIsNull.i.i: ; preds = %cacheIsNull.i
%7 = bitcast [0 x %swift.protocol*]* %protocols.i.i to i8*
call void @llvm.lifetime.start(i64 0, i8* nonnull %7) #9
%8 = getelementptr inbounds [0 x %swift.protocol*], [0 x %swift.protocol*]* %protocols.i.i, i64 0, i64 0
%9 = call %swift.type* @swift_rt_swift_getExistentialTypeMetadata(i1 true, %swift.type* null, i64 0, %swift.protocol** nonnull %8) #9
call void @llvm.lifetime.end(i64 0, i8* nonnull %7) #9
store atomic %swift.type* %9, %swift.type** @_T0ypML release, align 8
br label %_T0ypMa.exit.i
_T0ypMa.exit.i: ; preds = %cacheIsNull.i.i, %cacheIsNull.i
%10 = phi %swift.type* [ %5, %cacheIsNull.i ], [ %9, %cacheIsNull.i.i ]
%11 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* %10) #5
store atomic %swift.type* %11, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML release, align 8
br label %_T0s23_ContiguousArrayStorageCyypGMa.exit
_T0s23_ContiguousArrayStorageCyypGMa.exit: ; preds = %entry, %_T0ypMa.exit.i
%12 = phi %swift.type* [ %3, %entry ], [ %11, %_T0ypMa.exit.i ]
%13 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %12, i64 64, i64 7) #9
%14 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 1
%15 = bitcast %swift.refcounted* %14 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %15, align 8
%16 = bitcast %swift.refcounted* %13 to %swift.bridge*
%17 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 2
%18 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 3, i32 1
%19 = bitcast i32* %18 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %19, align 8
%20 = bitcast %swift.refcounted* %17 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([18 x i8]* @4 to i64), i64 17>, <2 x i64>* %20, align 8
%._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %13, i64 3
%21 = bitcast %swift.refcounted* %._core._owner to i64*
store i64 0, i64* %21, align 8
%22 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%23 = extractvalue { i64, i64, i64 } %22, 0
%24 = extractvalue { i64, i64, i64 } %22, 1
%25 = extractvalue { i64, i64, i64 } %22, 2
%26 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%27 = extractvalue { i64, i64, i64 } %26, 0
%28 = extractvalue { i64, i64, i64 } %26, 1
%29 = extractvalue { i64, i64, i64 } %26, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %16, i64 %23, i64 %24, i64 %25, i64 %27, i64 %28, i64 %29)
br label %30
; <label>:30: ; preds = %39, %_T0s23_ContiguousArrayStorageCyypGMa.exit
%31 = phi double [ 0.000000e+00, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %44, %39 ]
%32 = phi i64 [ 0, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %36, %39 ]
%33 = phi i64 [ 0, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %41, %39 ]
%34 = call swiftcc double @_T010Foundation4DateVACycfC()
br label %122
; <label>:35: ; preds = %145
%36 = add nuw nsw i64 %32, 1
%37 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %33, i64 %143)
%38 = extractvalue { i64, i1 } %37, 1
br i1 %38, label %139, label %39
; <label>:39: ; preds = %35
%40 = extractvalue { i64, i1 } %37, 0
%41 = sdiv i64 %40, 2
%42 = call swiftcc double @_T010Foundation4DateVACycfC()
%43 = call swiftcc double @_T010Foundation4DateV17timeIntervalSinceSdACF(double %34, double %42)
%44 = fadd double %31, %43
%45 = icmp eq i64 %36, 100000
br i1 %45, label %46, label %30
; <label>:46: ; preds = %39
%47 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %12, i64 64, i64 7) #9
%48 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %47, i64 1
%49 = bitcast %swift.refcounted* %48 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %49, align 8
%50 = bitcast %swift.refcounted* %47 to %swift.bridge*
%51 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %47, i64 2
%52 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %47, i64 3, i32 1
%53 = bitcast i32* %52 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %53, align 8
%54 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML, align 8
%55 = icmp eq %swift.type* %54, null
br i1 %55, label %cacheIsNull.i14, label %_T0s23_ContiguousArrayStorageCySSGMa.exit
cacheIsNull.i14: ; preds = %46
%56 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* nonnull @_T0SSN) #5
store atomic %swift.type* %56, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML release, align 8
br label %_T0s23_ContiguousArrayStorageCySSGMa.exit
_T0s23_ContiguousArrayStorageCySSGMa.exit: ; preds = %46, %cacheIsNull.i14
%57 = phi %swift.type* [ %54, %46 ], [ %56, %cacheIsNull.i14 ]
%58 = bitcast [104 x i8]* %reference.raw13 to %swift.refcounted*
%reference.new = call %swift.refcounted* @swift_initStackObject(%swift.type* %57, %swift.refcounted* nonnull %58) #9
%59 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 1
%60 = bitcast %swift.refcounted* %59 to <2 x i64>*
store <2 x i64> <i64 3, i64 6>, <2 x i64>* %60, align 8
%61 = bitcast %swift.refcounted* %reference.new to %swift.bridge*
%62 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2
%63 = getelementptr inbounds %TSS, %TSS* %0, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %63)
%64 = bitcast %TSS* %0 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([8 x i8]* @1 to i64), i64 7>, <2 x i64>* %64, align 16
%._core5._owner = getelementptr inbounds %TSS, %TSS* %0, i64 0, i32 0, i32 2
%65 = bitcast %TyXlSg* %._core5._owner to i64*
store i64 0, i64* %65, align 16
%66 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %0)
%67 = extractvalue { i64, i64, i64 } %66, 0
%68 = extractvalue { i64, i64, i64 } %66, 1
%69 = extractvalue { i64, i64, i64 } %66, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %63)
%70 = bitcast %swift.refcounted* %62 to i64*
store i64 %67, i64* %70, align 8
%tailaddr4._core._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2, i32 1
%tailaddr4._core._countAndFlags._value = bitcast i32* %tailaddr4._core._countAndFlags to i64*
store i64 %68, i64* %tailaddr4._core._countAndFlags._value, align 8
%tailaddr4._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3
%71 = bitcast %swift.refcounted* %tailaddr4._core._owner to i64*
store i64 %69, i64* %71, align 8
%72 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3, i32 1
%73 = bitcast %TSd* %1 to i8*
call void @llvm.lifetime.start(i64 8, i8* nonnull %73)
%._value = getelementptr inbounds %TSd, %TSd* %1, i64 0, i32 0
store double %44, double* %._value, align 8
%74 = call swiftcc { i64, i64, i64 } @_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSd_Tg5(%TSd* noalias nocapture nonnull dereferenceable(8) %1)
%75 = extractvalue { i64, i64, i64 } %74, 0
%76 = extractvalue { i64, i64, i64 } %74, 1
%77 = extractvalue { i64, i64, i64 } %74, 2
call void @llvm.lifetime.end(i64 8, i8* nonnull %73)
%78 = bitcast i32* %72 to i64*
store i64 %75, i64* %78, align 8
%._core6._countAndFlags = getelementptr inbounds i32, i32* %72, i64 2
%._core6._countAndFlags._value = bitcast i32* %._core6._countAndFlags to i64*
store i64 %76, i64* %._core6._countAndFlags._value, align 8
%._core6._owner = getelementptr inbounds i32, i32* %72, i64 4
%79 = bitcast i32* %._core6._owner to i64*
store i64 %77, i64* %79, align 8
%80 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5
%81 = getelementptr inbounds %TSS, %TSS* %2, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %81)
%82 = bitcast %TSS* %2 to i64*
store i64 ptrtoint ([1 x i8]* @2 to i64), i64* %82, align 8
%._core7._countAndFlags._value = getelementptr inbounds %TSS, %TSS* %2, i64 0, i32 0, i32 1, i32 0
%83 = bitcast i64* %._core7._countAndFlags._value to i8*
call void @llvm.memset.p0i8.i64(i8* %83, i8 0, i64 16, i32 8, i1 false)
%84 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %2)
%85 = extractvalue { i64, i64, i64 } %84, 0
%86 = extractvalue { i64, i64, i64 } %84, 1
%87 = extractvalue { i64, i64, i64 } %84, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %81)
%88 = bitcast %swift.refcounted* %80 to i64*
store i64 %85, i64* %88, align 8
%._core8._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5, i32 1
%._core8._countAndFlags._value = bitcast i32* %._core8._countAndFlags to i64*
store i64 %86, i64* %._core8._countAndFlags._value, align 8
%._core8._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 6
%89 = bitcast %swift.refcounted* %._core8._owner to i64*
store i64 %87, i64* %89, align 8
%90 = inttoptr i64 %69 to %objc_object*
%91 = inttoptr i64 %87 to %objc_object*
call void @swift_unknownRetain(%objc_object* %91) #9
call void @swift_unknownRetain(%objc_object* %90) #9
%92 = call swiftcc { i64, i64, i64 } @_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n(%swift.bridge* %61)
%93 = extractvalue { i64, i64, i64 } %92, 0
%94 = extractvalue { i64, i64, i64 } %92, 1
%95 = extractvalue { i64, i64, i64 } %92, 2
%96 = bitcast %swift.refcounted* %reference.new to i8*
call void @llvm.lifetime.end(i64 -1, i8* %96)
%97 = bitcast %swift.refcounted* %51 to i64*
store i64 %93, i64* %97, align 8
%._core9._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %47, i64 2, i32 1
%._core9._countAndFlags._value = bitcast i32* %._core9._countAndFlags to i64*
store i64 %94, i64* %._core9._countAndFlags._value, align 8
%._core9._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %47, i64 3
%98 = bitcast %swift.refcounted* %._core9._owner to i64*
store i64 %95, i64* %98, align 8
%99 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%100 = extractvalue { i64, i64, i64 } %99, 0
%101 = extractvalue { i64, i64, i64 } %99, 1
%102 = extractvalue { i64, i64, i64 } %99, 2
%103 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%104 = extractvalue { i64, i64, i64 } %103, 0
%105 = extractvalue { i64, i64, i64 } %103, 1
%106 = extractvalue { i64, i64, i64 } %103, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %50, i64 %100, i64 %101, i64 %102, i64 %104, i64 %105, i64 %106)
%107 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %12, i64 64, i64 7) #9
%108 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %107, i64 1
%109 = bitcast %swift.refcounted* %108 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %109, align 8
%110 = bitcast %swift.refcounted* %107 to %swift.bridge*
%111 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %107, i64 2
%112 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %107, i64 3, i32 1
%113 = bitcast i32* %112 to %swift.type**
store %swift.type* @_T0SiN, %swift.type** %113, align 8
%._value12 = bitcast %swift.refcounted* %111 to i64*
store i64 %41, i64* %._value12, align 8
%114 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%115 = extractvalue { i64, i64, i64 } %114, 0
%116 = extractvalue { i64, i64, i64 } %114, 1
%117 = extractvalue { i64, i64, i64 } %114, 2
%118 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%119 = extractvalue { i64, i64, i64 } %118, 0
%120 = extractvalue { i64, i64, i64 } %118, 1
%121 = extractvalue { i64, i64, i64 } %118, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %110, i64 %115, i64 %116, i64 %117, i64 %119, i64 %120, i64 %121)
ret void
; <label>:122: ; preds = %145, %30
%123 = phi i64 [ 0, %30 ], [ %143, %145 ]
%124 = phi i64 [ 0, %30 ], [ %134, %145 ]
%125 = or i64 %124, 1
%126 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %124, i64 %124)
%127 = extractvalue { i64, i1 } %126, 1
br i1 %127, label %137, label %128
; <label>:128: ; preds = %122
%129 = extractvalue { i64, i1 } %126, 0
%130 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %123, i64 %129)
%131 = extractvalue { i64, i1 } %130, 0
%132 = extractvalue { i64, i1 } %130, 1
br i1 %132, label %138, label %133
; <label>:133: ; preds = %128
%134 = add nsw i64 %124, 2
%135 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %125, i64 %125)
%136 = extractvalue { i64, i1 } %135, 1
br i1 %136, label %137, label %140
; <label>:137: ; preds = %133, %122
call void asm sideeffect "", "n"(i32 0) #9
call void @llvm.trap()
unreachable
; <label>:138: ; preds = %140, %128
call void asm sideeffect "", "n"(i32 1) #9
call void @llvm.trap()
unreachable
; <label>:139: ; preds = %35
call void asm sideeffect "", "n"(i32 2) #9
call void @llvm.trap()
unreachable
; <label>:140: ; preds = %133
%141 = extractvalue { i64, i1 } %135, 0
%142 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %131, i64 %141)
%143 = extractvalue { i64, i1 } %142, 0
%144 = extractvalue { i64, i1 } %142, 1
br i1 %144, label %138, label %145
; <label>:145: ; preds = %140
%146 = icmp eq i64 %134, 10000
br i1 %146, label %35, label %122
}
define hidden swiftcc void @_T01a4mainyyF() local_unnamed_addr #0 {
entry:
tail call swiftcc void @_T01a11testForLoopyyF()
tail call swiftcc void @_T01a13testMapReduceyyF()
tail call swiftcc void @_T01a17testLazyMapReduceyyF()
ret void
}
; Function Attrs: noinline
define linkonce_odr hidden swiftcc { i64, i64, i64 } @_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSd_Tg5(%TSd* noalias nocapture dereferenceable(8)) local_unnamed_addr #1 {
entry:
%._value = getelementptr inbounds %TSd, %TSd* %0, i64 0, i32 0
%1 = load double, double* %._value, align 8
%2 = tail call swiftcc { i64, i64, i64 } @_T0s16_float64ToStringSSSd_Sb5debugtF(double %1, i1 false)
ret { i64, i64, i64 } %2
}
define linkonce_odr hidden swiftcc { i64, i64, i64 } @_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n(%swift.bridge*) local_unnamed_addr #0 {
entry:
%1 = alloca %Ts11_StringCoreV, align 8
%2 = getelementptr inbounds %Ts11_StringCoreV, %Ts11_StringCoreV* %1, i64 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %2)
%3 = bitcast %Ts11_StringCoreV* %1 to i64*
store i64 ptrtoint (%Ts6UInt32V* @_T0s19_emptyStringStorages6UInt32Vv to i64), i64* %3, align 8
%._countAndFlags._value = getelementptr inbounds %Ts11_StringCoreV, %Ts11_StringCoreV* %1, i64 0, i32 1, i32 0
%._owner = getelementptr inbounds %Ts11_StringCoreV, %Ts11_StringCoreV* %1, i64 0, i32 2
%4 = bitcast %TyXlSg* %._owner to i64*
%5 = bitcast %swift.bridge* %0 to %Ts27_ContiguousArrayStorageBaseC*
%._storage.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 0, i32 1, i32 0, i32 0, i32 0
%6 = bitcast i64* %._countAndFlags._value to i8*
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 16, i32 8, i1 false)
%7 = load i64, i64* %._storage.count._value, align 8, !range !31
%8 = icmp eq i64 %7, 0
br i1 %8, label %33, label %9
; <label>:9: ; preds = %entry
%10 = bitcast %swift.bridge* %0 to i8*
%11 = getelementptr inbounds i8, i8* %10, i64 32
%tailaddr = bitcast i8* %11 to %TSS*
%12 = bitcast %TyXlSg* %._owner to %objc_object**
%13 = tail call %swift.bridge* @swift_bridgeObjectRetain(%swift.bridge* nonnull %0) #9
br label %14
; <label>:14: ; preds = %._crit_edge, %9
%15 = phi i64 [ 0, %9 ], [ %.pre, %._crit_edge ]
%16 = phi i64 [ 0, %9 ], [ %30, %._crit_edge ]
%._core = getelementptr inbounds %TSS, %TSS* %tailaddr, i64 %16, i32 0
%17 = bitcast %Ts11_StringCoreV* %._core to i64*
%18 = load i64, i64* %17, align 8
%._core._countAndFlags._value = getelementptr inbounds %TSS, %TSS* %tailaddr, i64 %16, i32 0, i32 1, i32 0
%19 = load i64, i64* %._core._countAndFlags._value, align 8
%._core._owner = getelementptr inbounds %TSS, %TSS* %tailaddr, i64 %16, i32 0, i32 2
%20 = bitcast %TyXlSg* %._core._owner to i64*
%21 = load i64, i64* %20, align 8
%22 = and i64 %15, 4611686018427387903
%23 = icmp eq i64 %22, 0
br i1 %23, label %26, label %24
; <label>:24: ; preds = %14
%25 = inttoptr i64 %21 to %objc_object*
tail call void @swift_unknownRetain(%objc_object* %25) #9
call swiftcc void @_T0s11_StringCoreV6appendyABFTfq4gXn_n(i64 %18, i64 %19, i64 %21, %Ts11_StringCoreV* nocapture nonnull swiftself dereferenceable(24) %1)
tail call void @swift_unknownRelease(%objc_object* %25) #9
br label %29
; <label>:26: ; preds = %14
%27 = load %objc_object*, %objc_object** %12, align 8
store i64 %18, i64* %3, align 8
store i64 %19, i64* %._countAndFlags._value, align 8
store i64 %21, i64* %4, align 8
%28 = inttoptr i64 %21 to %objc_object*
tail call void @swift_unknownRetain(%objc_object* %28) #9
tail call void @swift_unknownRelease(%objc_object* %27) #9
br label %29
; <label>:29: ; preds = %26, %24
%30 = add nuw nsw i64 %16, 1
%31 = icmp eq i64 %30, %7
br i1 %31, label %32, label %._crit_edge
._crit_edge: ; preds = %29
%.pre = load i64, i64* %._countAndFlags._value, align 8
br label %14
; <label>:32: ; preds = %29
tail call void @swift_bridgeObjectRelease(%swift.bridge* nonnull %0) #9
%.pre10 = load i64, i64* %3, align 8
%.pre11 = load i64, i64* %._countAndFlags._value, align 8
%.pre12 = load i64, i64* %4, align 8
br label %33
; <label>:33: ; preds = %entry, %32
%34 = phi i64 [ 0, %entry ], [ %.pre12, %32 ]
%35 = phi i64 [ 0, %entry ], [ %.pre11, %32 ]
%36 = phi i64 [ ptrtoint (%Ts6UInt32V* @_T0s19_emptyStringStorages6UInt32Vv to i64), %entry ], [ %.pre10, %32 ]
tail call void @swift_bridgeObjectRelease(%swift.bridge* nonnull %0) #9
call void @llvm.lifetime.end(i64 24, i8* nonnull %2)
%37 = insertvalue { i64, i64, i64 } undef, i64 %36, 0
%38 = insertvalue { i64, i64, i64 } %37, i64 %35, 1
%39 = insertvalue { i64, i64, i64 } %38, i64 %34, 2
ret { i64, i64, i64 } %39
}
; Function Attrs: noinline
define linkonce_odr hidden swiftcc void @_T0s11_StringCoreV6appendyABFTfq4gXn_n(i64, i64, i64, %Ts11_StringCoreV* nocapture swiftself dereferenceable(24)) local_unnamed_addr #1 {
entry:
%._countAndFlags._value = getelementptr inbounds %Ts11_StringCoreV, %Ts11_StringCoreV* %3, i64 0, i32 1, i32 0
%4 = load i64, i64* %._countAndFlags._value, align 8
%5 = lshr i64 %4, 63
%6 = add nuw nsw i64 %5, 1
%7 = lshr i64 %1, 63
%8 = add nuw nsw i64 %7, 1
%9 = icmp ult i64 %6, %8
br i1 %9, label %10, label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit
; <label>:10: ; preds = %entry
%11 = icmp eq i64 %0, 0
br i1 %11, label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit, label %12
; <label>:12: ; preds = %10
%13 = icmp sgt i64 %1, -1
br i1 %13, label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit, label %14, !prof !30
; <label>:14: ; preds = %12
%15 = and i64 %1, 4611686018427387903
%16 = inttoptr i64 %0 to %Ts6UInt16V*
%17 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %16, i64 %15
%18 = icmp eq %Ts6UInt16V* %17, null
%19 = bitcast %Ts6UInt16V* %17 to i8*
br label %20
; <label>:20: ; preds = %27, %14
%.sroa.0.0.i.i = phi i64 [ %0, %14 ], [ %32, %27 ]
%21 = icmp eq i64 %.sroa.0.0.i.i, 0
br i1 %18, label %22, label %23
; <label>:22: ; preds = %20
br i1 %21, label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit.loopexit, label %27
; <label>:23: ; preds = %20
br i1 %21, label %33, label %24
; <label>:24: ; preds = %23
%25 = inttoptr i64 %.sroa.0.0.i.i to i8*
%26 = icmp eq i8* %25, %19
br i1 %26, label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit.loopexit, label %27
; <label>:27: ; preds = %24, %22
%28 = inttoptr i64 %.sroa.0.0.i.i to %Ts6UInt16V*
%._value.i.i = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %28, i64 0, i32 0
%29 = load i16, i16* %._value.i.i, align 2, !noalias !33
%30 = icmp ugt i16 %29, 127
%31 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %28, i64 1
%32 = ptrtoint %Ts6UInt16V* %31 to i64
br i1 %30, label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit.loopexit, label %20
; <label>:33: ; preds = %23
tail call void asm sideeffect "", "n"(i32 0) #9, !noalias !33
tail call void @llvm.trap(), !noalias !33
unreachable
_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit.loopexit: ; preds = %22, %24, %27
%.ph = phi i64 [ 1, %22 ], [ 1, %24 ], [ 2, %27 ]
br label %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit
_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit: ; preds = %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit.loopexit, %10, %12, %entry
%34 = phi i64 [ %6, %entry ], [ 2, %10 ], [ 1, %12 ], [ %.ph, %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit.loopexit ]
%35 = and i64 %4, 4611686018427387903
%36 = and i64 %1, 4611686018427387903
%._owner = getelementptr inbounds %Ts11_StringCoreV, %Ts11_StringCoreV* %3, i64 0, i32 2
%37 = add nuw nsw i64 %35, %36
%38 = bitcast %TyXlSg* %._owner to i64*
%39 = load i64, i64* %38, align 8
%.mask = and i64 %4, 4611686018427387904
%40 = icmp ne i64 %.mask, 0
%41 = icmp eq i64 %39, 0
%or.cond7 = or i1 %40, %41
%42 = inttoptr i64 %39 to %objc_object*
%43 = icmp slt i64 %6, %34
%or.cond = or i1 %or.cond7, %43
br i1 %or.cond, label %82, label %44
; <label>:44: ; preds = %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit
%45 = tail call i1 @swift_isUniquelyReferencedNonObjC(%objc_object* %42) #9
br i1 %45, label %46, label %82, !prof !30
; <label>:46: ; preds = %44
%47 = bitcast %Ts11_StringCoreV* %3 to i64*
%48 = load i64, i64* %47, align 8
%49 = icmp eq i64 %48, 0
br i1 %49, label %111, label %50
; <label>:50: ; preds = %46
%51 = inttoptr i64 %48 to i8*
%52 = bitcast %objc_object* %42 to i8*
%53 = getelementptr inbounds i8, i8* %52, i64 32
%54 = icmp eq i8* %53, %51
%.value2.capacityAndElementShift = getelementptr inbounds i8, i8* %52, i64 24
%.value2.capacityAndElementShift._value = bitcast i8* %.value2.capacityAndElementShift to i64*
%55 = load i64, i64* %.value2.capacityAndElementShift._value, align 8
br i1 %54, label %56, label %._crit_edge
; <label>:56: ; preds = %50
%57 = and i64 %55, -2
%58 = and i64 %55, 1
%59 = ashr i64 %57, %58
%60 = icmp slt i64 %59, %37
br i1 %60, label %._crit_edge, label %61, !prof !32
; <label>:61: ; preds = %56
%62 = getelementptr inbounds i8, i8* %52, i64 16
%63 = shl i64 %37, %5
%64 = getelementptr inbounds i8, i8* %51, i64 %63
%65 = ptrtoint i8* %64 to i64
%66 = bitcast i8* %62 to i64*
store i64 %65, i64* %66, align 8
%67 = load i64, i64* %._countAndFlags._value, align 8
%68 = shl i64 %35, %5
%69 = getelementptr inbounds i8, i8* %51, i64 %68
%70 = and i64 %67, -4611686018427387904
%71 = or i64 %70, %37
store i64 %71, i64* %._countAndFlags._value, align 8
br label %93
._crit_edge: ; preds = %50, %56
%72 = and i64 %55, -2
%73 = and i64 %55, 1
%74 = ashr i64 %72, %73
%75 = icmp slt i64 %74, %37
br i1 %75, label %76, label %82
; <label>:76: ; preds = %._crit_edge
%77 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %74, i64 2)
%78 = extractvalue { i64, i1 } %77, 0
%79 = extractvalue { i64, i1 } %77, 1
br i1 %79, label %112, label %80
; <label>:80: ; preds = %76
%81 = icmp slt i64 %37, %78
%.5 = select i1 %81, i64 %78, i64 %37
br label %82
; <label>:82: ; preds = %80, %._crit_edge, %44, %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit
%83 = phi i64 [ %.5, %80 ], [ %37, %._crit_edge ], [ %37, %44 ], [ %37, %_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n.exit ]
tail call swiftcc void @_T0s11_StringCoreV12_copyInPlaceySi7newSize_Si0F8CapacitySi15minElementWidthtF(i64 %37, i64 %83, i64 %34, %Ts11_StringCoreV* nocapture nonnull swiftself dereferenceable(24) %3)
%84 = bitcast %Ts11_StringCoreV* %3 to i64*
%85 = load i64, i64* %84, align 8
%86 = load i64, i64* %._countAndFlags._value, align 8
%87 = icmp eq i64 %85, 0
br i1 %87, label %108, label %88
; <label>:88: ; preds = %82
%89 = inttoptr i64 %85 to i8*
%90 = lshr i64 %86, 63
%91 = shl i64 %35, %90
%92 = getelementptr inbounds i8, i8* %89, i64 %91
br label %93
; <label>:93: ; preds = %61, %88
%94 = phi i8* [ %92, %88 ], [ %69, %61 ]
%95 = phi i64 [ %86, %88 ], [ %71, %61 ]
%96 = icmp eq i64 %0, 0
br i1 %96, label %101, label %97
; <label>:97: ; preds = %93
%98 = lshr i64 %95, 63
%99 = add nuw nsw i64 %98, 1
%100 = inttoptr i64 %0 to i8*
tail call swiftcc void @_T0s11_StringCoreV13_copyElementsySv_Si15srcElementWidthSv8dstStartSi0hfG0Si5counttFZTfq4nnnnnd_n(i8* %100, i64 %8, i8* %94, i64 %99, i64 %36)
br label %107
; <label>:101: ; preds = %93
%.mask21 = and i64 %1, 4611686018427387904
%102 = icmp eq i64 %.mask21, 0
br i1 %102, label %109, label %103
; <label>:103: ; preds = %101
%104 = icmp eq i64 %2, 0
br i1 %104, label %110, label %105
; <label>:105: ; preds = %103
%106 = inttoptr i64 %2 to %objc_object*
tail call void @swift_unknownRetain(%objc_object* %106) #9
tail call swiftcc void @_T0s19_cocoaStringReadAllyyXl_Spys6UInt16VGtFTfq4gn_n(%objc_object* %106, i8* %94)
tail call void @swift_unknownRelease(%objc_object* %106) #9
br label %107
; <label>:107: ; preds = %105, %97
ret void
; <label>:108: ; preds = %82
tail call void asm sideeffect "", "n"(i32 1) #9
tail call void @llvm.trap()
unreachable
; <label>:109: ; preds = %101
tail call void asm sideeffect "", "n"(i32 3) #9
tail call void @llvm.trap()
unreachable
; <label>:110: ; preds = %103
tail call void asm sideeffect "", "n"(i32 4) #9
tail call void @llvm.trap()
unreachable
; <label>:111: ; preds = %46
tail call void asm sideeffect "", "n"(i32 7) #9
tail call void @llvm.trap()
unreachable
; <label>:112: ; preds = %76
tail call void asm sideeffect "", "n"(i32 11) #9
tail call void @llvm.trap()
unreachable
}
declare swiftcc void @_T0s11_StringCoreV12_copyInPlaceySi7newSize_Si0F8CapacitySi15minElementWidthtF(i64, i64, i64, %Ts11_StringCoreV* nocapture swiftself dereferenceable(24)) local_unnamed_addr #0
define linkonce_odr hidden swiftcc void @_T0s11_StringCoreV13_copyElementsySv_Si15srcElementWidthSv8dstStartSi0hfG0Si5counttFZTfq4nnnnnd_n(i8*, i64, i8*, i64, i64) local_unnamed_addr #0 {
entry:
%5 = icmp eq i64 %1, %3
br i1 %5, label %79, label %6, !prof !30
; <label>:6: ; preds = %entry
%7 = icmp slt i64 %1, %3
br i1 %7, label %29, label %8
; <label>:8: ; preds = %6
%9 = bitcast i8* %0 to %Ts6UInt16V*
%10 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %9, i64 %4
%11 = bitcast %Ts6UInt16V* %10 to i8*
%12 = icmp eq i8* %11, %0
br i1 %12, label %.loopexit, label %.preheader6
.preheader6: ; preds = %8
%._value8 = bitcast i8* %0 to i16*
%13 = load i16, i16* %._value8, align 2
%14 = and i16 %13, 255
%15 = icmp ne i16 %14, %13
%16 = icmp ugt i16 %13, 255
%or.cond9 = and i1 %16, %15
br i1 %or.cond9, label %._crit_edge, label %.lr.ph.preheader
.lr.ph.preheader: ; preds = %.preheader6
br label %.lr.ph
; <label>:17: ; preds = %.lr.ph
%18 = getelementptr inbounds i8, i8* %25, i64 1
%._value = bitcast i8* %27 to i16*
%19 = load i16, i16* %._value, align 2
%20 = and i16 %19, 255
%21 = icmp ne i16 %20, %19
%22 = icmp ugt i16 %19, 255
%or.cond = and i1 %22, %21
br i1 %or.cond, label %._crit_edge.loopexit, label %.lr.ph
.lr.ph: ; preds = %.lr.ph.preheader, %17
%23 = phi i16 [ %19, %17 ], [ %13, %.lr.ph.preheader ]
%24 = phi i8* [ %27, %17 ], [ %0, %.lr.ph.preheader ]
%25 = phi i8* [ %18, %17 ], [ %2, %.lr.ph.preheader ]
%26 = trunc i16 %23 to i8
store i8 %26, i8* %25, align 1
%27 = getelementptr inbounds i8, i8* %24, i64 2
%28 = icmp eq i8* %27, %11
br i1 %28, label %.loopexit.loopexit22, label %17
; <label>:29: ; preds = %6
%30 = getelementptr inbounds i8, i8* %0, i64 %4
%31 = icmp eq i64 %4, 0
br i1 %31, label %.loopexit, label %32
; <label>:32: ; preds = %29
%33 = load i8, i8* %0, align 1
%34 = zext i8 %33 to i16
%._value3 = bitcast i8* %2 to i16*
store i16 %34, i16* %._value3, align 2
%35 = icmp eq i64 %4, 1
br i1 %35, label %.loopexit, label %.preheader.preheader
.preheader.preheader: ; preds = %32
%36 = getelementptr inbounds i8, i8* %0, i64 1
%37 = bitcast i8* %2 to %Ts6UInt16V*
%38 = add i64 %4, -1
%min.iters.check = icmp ult i64 %38, 16
br i1 %min.iters.check, label %.preheader.preheader20, label %min.iters.checked
min.iters.checked: ; preds = %.preheader.preheader
%n.vec = and i64 %38, -16
%cmp.zero = icmp eq i64 %n.vec, 0
br i1 %cmp.zero, label %.preheader.preheader20, label %vector.memcheck
vector.memcheck: ; preds = %min.iters.checked
%scevgep = getelementptr i8, i8* %2, i64 2
%39 = shl i64 %4, 1
%scevgep13 = getelementptr i8, i8* %2, i64 %39
%bound0 = icmp ult i8* %scevgep, %30
%bound1 = icmp ult i8* %36, %scevgep13
%memcheck.conflict = and i1 %bound0, %bound1
%ind.end = getelementptr %Ts6UInt16V, %Ts6UInt16V* %37, i64 %n.vec
%ind.end15 = getelementptr i8, i8* %36, i64 %n.vec
br i1 %memcheck.conflict, label %.preheader.preheader20, label %vector.body.preheader
vector.body.preheader: ; preds = %vector.memcheck
%40 = add i64 %n.vec, -16
%41 = lshr exact i64 %40, 4
%42 = and i64 %41, 1
%lcmp.mod = icmp eq i64 %42, 0
br i1 %lcmp.mod, label %vector.body.prol.preheader, label %vector.body.prol.loopexit
vector.body.prol.preheader: ; preds = %vector.body.preheader
br label %vector.body.prol
vector.body.prol: ; preds = %vector.body.prol.preheader
%43 = getelementptr inbounds i8, i8* %2, i64 2
%44 = bitcast i8* %36 to <8 x i8>*
%wide.load.prol = load <8 x i8>, <8 x i8>* %44, align 1, !alias.scope !36
%45 = getelementptr i8, i8* %0, i64 9
%46 = bitcast i8* %45 to <8 x i8>*
%wide.load19.prol = load <8 x i8>, <8 x i8>* %46, align 1, !alias.scope !36
%47 = zext <8 x i8> %wide.load.prol to <8 x i16>
%48 = zext <8 x i8> %wide.load19.prol to <8 x i16>
%49 = bitcast i8* %43 to <8 x i16>*
store <8 x i16> %47, <8 x i16>* %49, align 2, !alias.scope !39, !noalias !36
%50 = getelementptr i8, i8* %2, i64 18
%51 = bitcast i8* %50 to <8 x i16>*
store <8 x i16> %48, <8 x i16>* %51, align 2, !alias.scope !39, !noalias !36
br label %vector.body.prol.loopexit
vector.body.prol.loopexit: ; preds = %vector.body.prol, %vector.body.preheader
%index.unr = phi i64 [ 0, %vector.body.preheader ], [ 16, %vector.body.prol ]
%52 = icmp eq i64 %41, 0
br i1 %52, label %middle.block, label %vector.body.preheader.new
vector.body.preheader.new: ; preds = %vector.body.prol.loopexit
br label %vector.body
vector.body: ; preds = %vector.body, %vector.body.preheader.new
%index = phi i64 [ %index.unr, %vector.body.preheader.new ], [ %index.next.1, %vector.body ]
%next.gep = getelementptr %Ts6UInt16V, %Ts6UInt16V* %37, i64 %index
%next.gep17 = getelementptr i8, i8* %36, i64 %index
%53 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %next.gep, i64 1
%54 = bitcast i8* %next.gep17 to <8 x i8>*
%wide.load = load <8 x i8>, <8 x i8>* %54, align 1, !alias.scope !36
%55 = getelementptr i8, i8* %next.gep17, i64 8
%56 = bitcast i8* %55 to <8 x i8>*
%wide.load19 = load <8 x i8>, <8 x i8>* %56, align 1, !alias.scope !36
%57 = zext <8 x i8> %wide.load to <8 x i16>
%58 = zext <8 x i8> %wide.load19 to <8 x i16>
%59 = bitcast %Ts6UInt16V* %53 to <8 x i16>*
store <8 x i16> %57, <8 x i16>* %59, align 2, !alias.scope !39, !noalias !36
%60 = getelementptr %Ts6UInt16V, %Ts6UInt16V* %53, i64 8
%61 = bitcast %Ts6UInt16V* %60 to <8 x i16>*
store <8 x i16> %58, <8 x i16>* %61, align 2, !alias.scope !39, !noalias !36
%index.next = add i64 %index, 16
%next.gep.1 = getelementptr %Ts6UInt16V, %Ts6UInt16V* %37, i64 %index.next
%next.gep17.1 = getelementptr i8, i8* %36, i64 %index.next
%62 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %next.gep.1, i64 1
%63 = bitcast i8* %next.gep17.1 to <8 x i8>*
%wide.load.1 = load <8 x i8>, <8 x i8>* %63, align 1, !alias.scope !36
%64 = getelementptr i8, i8* %next.gep17.1, i64 8
%65 = bitcast i8* %64 to <8 x i8>*
%wide.load19.1 = load <8 x i8>, <8 x i8>* %65, align 1, !alias.scope !36
%66 = zext <8 x i8> %wide.load.1 to <8 x i16>
%67 = zext <8 x i8> %wide.load19.1 to <8 x i16>
%68 = bitcast %Ts6UInt16V* %62 to <8 x i16>*
store <8 x i16> %66, <8 x i16>* %68, align 2, !alias.scope !39, !noalias !36
%69 = getelementptr %Ts6UInt16V, %Ts6UInt16V* %62, i64 8
%70 = bitcast %Ts6UInt16V* %69 to <8 x i16>*
store <8 x i16> %67, <8 x i16>* %70, align 2, !alias.scope !39, !noalias !36
%index.next.1 = add i64 %index, 32
%71 = icmp eq i64 %index.next.1, %n.vec
br i1 %71, label %middle.block.unr-lcssa, label %vector.body, !llvm.loop !41
middle.block.unr-lcssa: ; preds = %vector.body
br label %middle.block
middle.block: ; preds = %vector.body.prol.loopexit, %middle.block.unr-lcssa
%cmp.n = icmp eq i64 %38, %n.vec
br i1 %cmp.n, label %.loopexit, label %.preheader.preheader20
.preheader.preheader20: ; preds = %middle.block, %vector.memcheck, %min.iters.checked, %.preheader.preheader
%.ph = phi %Ts6UInt16V* [ %37, %vector.memcheck ], [ %37, %min.iters.checked ], [ %37, %.preheader.preheader ], [ %ind.end, %middle.block ]
%.ph21 = phi i8* [ %36, %vector.memcheck ], [ %36, %min.iters.checked ], [ %36, %.preheader.preheader ], [ %ind.end15, %middle.block ]
br label %.preheader
.preheader: ; preds = %.preheader.preheader20, %.preheader
%72 = phi %Ts6UInt16V* [ %74, %.preheader ], [ %.ph, %.preheader.preheader20 ]
%73 = phi i8* [ %77, %.preheader ], [ %.ph21, %.preheader.preheader20 ]
%74 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %72, i64 1
%75 = load i8, i8* %73, align 1
%76 = zext i8 %75 to i16
%._value5 = getelementptr inbounds %Ts6UInt16V, %Ts6UInt16V* %74, i64 0, i32 0
store i16 %76, i16* %._value5, align 2
%77 = getelementptr inbounds i8, i8* %73, i64 1
%78 = icmp eq i8* %77, %30
br i1 %78, label %.loopexit.loopexit, label %.preheader, !llvm.loop !44
; <label>:79: ; preds = %entry
%80 = tail call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %1, i64 1)
%81 = extractvalue { i64, i1 } %80, 1
br i1 %81, label %88, label %82
; <label>:82: ; preds = %79
%83 = extractvalue { i64, i1 } %80, 0
%84 = and i64 %83, 63
%85 = shl i64 %4, %84
%86 = icmp slt i64 %85, 0
br i1 %86, label %89, label %87
; <label>:87: ; preds = %82
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %2, i8* %0, i64 %85, i32 1, i1 false)
br label %.loopexit
.loopexit.loopexit: ; preds = %.preheader
br label %.loopexit
.loopexit.loopexit22: ; preds = %.lr.ph
br label %.loopexit
.loopexit: ; preds = %.loopexit.loopexit22, %.loopexit.loopexit, %middle.block, %32, %29, %8, %87
ret void
._crit_edge.loopexit: ; preds = %17
br label %._crit_edge
._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader6
tail call void asm sideeffect "", "n"(i32 0) #9
tail call void @llvm.trap()
unreachable
; <label>:88: ; preds = %79
tail call void asm sideeffect "", "n"(i32 1) #9
tail call void @llvm.trap()
unreachable
; <label>:89: ; preds = %82
tail call void asm sideeffect "", "n"(i32 2) #9
tail call void @llvm.trap()
unreachable
}
define linkonce_odr hidden swiftcc void @_T0s15ContiguousArrayV15reserveCapacityySiFSi_Tg5(i64, %Ts15ContiguousArrayV* nocapture swiftself dereferenceable(8)) local_unnamed_addr #0 {
entry:
%._buffer._storage = getelementptr inbounds %Ts15ContiguousArrayV, %Ts15ContiguousArrayV* %1, i64 0, i32 0, i32 0
%2 = bitcast %Ts15ContiguousArrayV* %1 to %swift.refcounted**
%3 = load %swift.refcounted*, %swift.refcounted** %2, align 8
%4 = tail call i1 @swift_rt_swift_isUniquelyReferenced_nonNull_native(%swift.refcounted* %3) #9
%5 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._buffer._storage, align 8
br i1 %4, label %6, label %entry._crit_edge
; <label>:6: ; preds = %entry
%._storage5._capacityAndFlags._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 0, i32 1, i32 0, i32 1, i32 0
%7 = load i64, i64* %._storage5._capacityAndFlags._value, align 8
%8 = lshr i64 %7, 1
%9 = icmp slt i64 %8, %0
br i1 %9, label %entry._crit_edge, label %23, !prof !32
entry._crit_edge: ; preds = %entry, %6
%._storage.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 0, i32 1, i32 0, i32 0, i32 0
%10 = load i64, i64* %._storage.count._value, align 8, !range !31
%11 = icmp sgt i64 %10, %0
%. = select i1 %11, i64 %10, i64 %0
%12 = icmp eq i64 %., 0
br i1 %12, label %13, label %24
; <label>:13: ; preds = %entry._crit_edge
tail call void @swift_rt_swift_retain(%swift.refcounted* bitcast (%struct._SwiftEmptyArrayStorage* @_swiftEmptyArrayStorage to %swift.refcounted*)) #9
br label %14
; <label>:14: ; preds = %13, %_T0s23_ContiguousArrayStorageCySiGMa.exit
%15 = phi i64 [ %.pre6, %_T0s23_ContiguousArrayStorageCySiGMa.exit ], [ %10, %13 ]
%16 = phi %Ts27_ContiguousArrayStorageBaseC* [ %32, %_T0s23_ContiguousArrayStorageCySiGMa.exit ], [ bitcast (%struct._SwiftEmptyArrayStorage* @_swiftEmptyArrayStorage to %Ts27_ContiguousArrayStorageBaseC*), %13 ]
%17 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %16, i64 1
%18 = bitcast %Ts27_ContiguousArrayStorageBaseC* %17 to i8*
%19 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 1
%20 = bitcast %Ts27_ContiguousArrayStorageBaseC* %19 to i8*
%21 = shl nuw i64 %15, 3
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %18, i8* %20, i64 %21, i32 8, i1 false)
%22 = load %swift.refcounted*, %swift.refcounted** %2, align 8
store %Ts27_ContiguousArrayStorageBaseC* %16, %Ts27_ContiguousArrayStorageBaseC** %._buffer._storage, align 8
tail call void @swift_rt_swift_release(%swift.refcounted* %22) #9
br label %23
; <label>:23: ; preds = %6, %14
ret void
; <label>:24: ; preds = %entry._crit_edge
%25 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCySiGML, align 8
%26 = icmp eq %swift.type* %25, null
br i1 %26, label %cacheIsNull.i, label %_T0s23_ContiguousArrayStorageCySiGMa.exit
cacheIsNull.i: ; preds = %24
%27 = tail call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* nonnull @_T0SiN) #5
store atomic %swift.type* %27, %swift.type** @_T0s23_ContiguousArrayStorageCySiGML release, align 8
br label %_T0s23_ContiguousArrayStorageCySiGMa.exit
_T0s23_ContiguousArrayStorageCySiGMa.exit: ; preds = %24, %cacheIsNull.i
%28 = phi %swift.type* [ %25, %24 ], [ %27, %cacheIsNull.i ]
%29 = shl i64 %., 3
%30 = add i64 %29, 32
%31 = tail call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %28, i64 %30, i64 7) #9
%32 = bitcast %swift.refcounted* %31 to %Ts27_ContiguousArrayStorageBaseC*
%33 = bitcast %swift.refcounted* %31 to i8*
%34 = tail call i64 @_swift_stdlib_malloc_size(i8* %33)
%35 = add i64 %34, -32
%36 = sdiv i64 %35, 8
%37 = shl nsw i64 %36, 1
%38 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %31, i64 1
%._storage1.count._value = bitcast %swift.refcounted* %38 to i64*
store i64 %10, i64* %._storage1.count._value, align 8
%._storage1._capacityAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %31, i64 1, i32 1
%._storage1._capacityAndFlags._value = bitcast i32* %._storage1._capacityAndFlags to i64*
store i64 %37, i64* %._storage1._capacityAndFlags._value, align 8
%.pre6 = load i64, i64* %._storage.count._value, align 8, !range !31
br label %14
}
; Function Attrs: noinline
define linkonce_odr hidden swiftcc void @_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSi_Tg5(i64, %Ts15ContiguousArrayV* nocapture swiftself dereferenceable(8)) local_unnamed_addr #1 {
entry:
%2 = alloca %swift.refcounted*, align 8
%3 = alloca %swift.refcounted*, align 8
%4 = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %0, i64 1)
%5 = extractvalue { i64, i1 } %4, 1
br i1 %5, label %15, label %6
; <label>:6: ; preds = %entry
%tmpcast4 = bitcast %swift.refcounted** %2 to %Ts22_ContiguousArrayBufferV*
%tmpcast = bitcast %swift.refcounted** %3 to %Ts22_ContiguousArrayBufferV*
%7 = extractvalue { i64, i1 } %4, 0
%8 = bitcast %swift.refcounted** %2 to i8*
call void @llvm.lifetime.start(i64 8, i8* nonnull %8)
%._buffer = getelementptr inbounds %Ts15ContiguousArrayV, %Ts15ContiguousArrayV* %1, i64 0, i32 0
%._buffer._storage = getelementptr inbounds %Ts15ContiguousArrayV, %Ts15ContiguousArrayV* %1, i64 0, i32 0, i32 0
%9 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._buffer._storage, align 8
%10 = bitcast %swift.refcounted** %3 to i8*
call void @llvm.lifetime.start(i64 8, i8* nonnull %10)
%._storage = bitcast %swift.refcounted** %3 to %Ts27_ContiguousArrayStorageBaseC**
store %Ts27_ContiguousArrayStorageBaseC* %9, %Ts27_ContiguousArrayStorageBaseC** %._storage, align 8
%11 = call swiftcc %Ts27_ContiguousArrayStorageBaseC* @_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySiG_Tg5(i64 %0, i64 %7, %Ts22_ContiguousArrayBufferV* noalias nocapture nonnull swiftself dereferenceable(8) %tmpcast)
%12 = load %swift.refcounted*, %swift.refcounted** %3, align 8
%13 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %9, i64 0, i32 0
tail call void @swift_rt_swift_retain(%swift.refcounted* %13) #9
tail call void @swift_rt_swift_release(%swift.refcounted* %12) #9
call void @llvm.lifetime.end(i64 8, i8* nonnull %10)
%._storage2 = bitcast %swift.refcounted** %2 to %Ts27_ContiguousArrayStorageBaseC**
store %Ts27_ContiguousArrayStorageBaseC* %11, %Ts27_ContiguousArrayStorageBaseC** %._storage2, align 8
call swiftcc void @_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySiG_s07_IgnoreK0VySiGTg5(%Ts22_ContiguousArrayBufferV* nocapture nonnull dereferenceable(8) %tmpcast4, i64 %0, i64 0, %Ts14_IgnorePointerV* noalias nocapture undef, %Ts22_ContiguousArrayBufferV* nocapture nonnull swiftself dereferenceable(8) %._buffer)
%14 = load %swift.refcounted*, %swift.refcounted** %2, align 8
tail call void @swift_rt_swift_release(%swift.refcounted* %14) #9
call void @llvm.lifetime.end(i64 8, i8* nonnull %8)
ret void
; <label>:15: ; preds = %entry
tail call void asm sideeffect "", "n"(i32 0) #9
tail call void @llvm.trap()
unreachable
}
; Function Attrs: noinline
define linkonce_odr hidden swiftcc %Ts27_ContiguousArrayStorageBaseC* @_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySiG_Tg5(i64, i64, %Ts22_ContiguousArrayBufferV* noalias nocapture swiftself dereferenceable(8)) local_unnamed_addr #1 {
entry:
%._storage = getelementptr inbounds %Ts22_ContiguousArrayBufferV, %Ts22_ContiguousArrayBufferV* %2, i64 0, i32 0
%3 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._storage, align 8
%._storage1._capacityAndFlags._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %3, i64 0, i32 1, i32 0, i32 1, i32 0
%4 = load i64, i64* %._storage1._capacityAndFlags._value, align 8
%5 = lshr i64 %4, 1
%6 = icmp slt i64 %5, %1
br i1 %6, label %7, label %11
; <label>:7: ; preds = %entry
%8 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %5, i64 2)
%9 = extractvalue { i64, i1 } %8, 0
%10 = extractvalue { i64, i1 } %8, 1
br i1 %10, label %34, label %11
; <label>:11: ; preds = %entry, %7
%12 = phi i64 [ %9, %7 ], [ %5, %entry ]
%13 = icmp slt i64 %12, %1
%. = select i1 %13, i64 %1, i64 %12
%14 = icmp slt i64 %., %0
%.. = select i1 %14, i64 %0, i64 %.
%15 = icmp eq i64 %.., 0
br i1 %15, label %16, label %19
; <label>:16: ; preds = %11
tail call void @swift_rt_swift_retain(%swift.refcounted* bitcast (%struct._SwiftEmptyArrayStorage* @_swiftEmptyArrayStorage to %swift.refcounted*)) #9
br label %17
; <label>:17: ; preds = %16, %_T0s23_ContiguousArrayStorageCySiGMa.exit
%18 = phi %Ts27_ContiguousArrayStorageBaseC* [ %27, %_T0s23_ContiguousArrayStorageCySiGMa.exit ], [ bitcast (%struct._SwiftEmptyArrayStorage* @_swiftEmptyArrayStorage to %Ts27_ContiguousArrayStorageBaseC*), %16 ]
ret %Ts27_ContiguousArrayStorageBaseC* %18
; <label>:19: ; preds = %11
%20 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCySiGML, align 8
%21 = icmp eq %swift.type* %20, null
br i1 %21, label %cacheIsNull.i, label %_T0s23_ContiguousArrayStorageCySiGMa.exit
cacheIsNull.i: ; preds = %19
%22 = tail call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* nonnull @_T0SiN) #5
store atomic %swift.type* %22, %swift.type** @_T0s23_ContiguousArrayStorageCySiGML release, align 8
br label %_T0s23_ContiguousArrayStorageCySiGMa.exit
_T0s23_ContiguousArrayStorageCySiGMa.exit: ; preds = %19, %cacheIsNull.i
%23 = phi %swift.type* [ %20, %19 ], [ %22, %cacheIsNull.i ]
%24 = shl i64 %.., 3
%25 = add i64 %24, 32
%26 = tail call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %23, i64 %25, i64 7) #9
%27 = bitcast %swift.refcounted* %26 to %Ts27_ContiguousArrayStorageBaseC*
%28 = bitcast %swift.refcounted* %26 to i8*
%29 = tail call i64 @_swift_stdlib_malloc_size(i8* %28)
%30 = add i64 %29, -32
%31 = sdiv i64 %30, 8
%32 = shl nsw i64 %31, 1
%33 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %26, i64 1
%._storage2.count._value = bitcast %swift.refcounted* %33 to i64*
store i64 %0, i64* %._storage2.count._value, align 8
%._storage2._capacityAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %26, i64 1, i32 1
%._storage2._capacityAndFlags._value = bitcast i32* %._storage2._capacityAndFlags to i64*
store i64 %32, i64* %._storage2._capacityAndFlags._value, align 8
br label %17
; <label>:34: ; preds = %7
tail call void asm sideeffect "", "n"(i32 2) #9
tail call void @llvm.trap()
unreachable
}
; Function Attrs: noinline
define linkonce_odr hidden swiftcc void @_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySiG_s07_IgnoreK0VySiGTg5(%Ts22_ContiguousArrayBufferV* nocapture dereferenceable(8), i64, i64, %Ts14_IgnorePointerV* noalias nocapture, %Ts22_ContiguousArrayBufferV* nocapture swiftself dereferenceable(8)) local_unnamed_addr #1 {
entry:
%._storage = getelementptr inbounds %Ts22_ContiguousArrayBufferV, %Ts22_ContiguousArrayBufferV* %4, i64 0, i32 0
%5 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._storage, align 8
%._storage1.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 0, i32 1, i32 0, i32 0, i32 0
%6 = load i64, i64* %._storage1.count._value, align 8, !range !31
%._storage2 = getelementptr inbounds %Ts22_ContiguousArrayBufferV, %Ts22_ContiguousArrayBufferV* %0, i64 0, i32 0
%7 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._storage2, align 8
%._storage3.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %7, i64 0, i32 1, i32 0, i32 0, i32 0
%8 = load i64, i64* %._storage3.count._value, align 8, !range !31
%9 = tail call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %8, i64 %1)
%10 = extractvalue { i64, i1 } %9, 1
%11 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 0, i32 0
br i1 %10, label %71, label %12
; <label>:12: ; preds = %entry
%13 = extractvalue { i64, i1 } %9, 0
%14 = tail call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %13, i64 %2)
%15 = extractvalue { i64, i1 } %14, 0
%16 = extractvalue { i64, i1 } %14, 1
br i1 %16, label %72, label %17
; <label>:17: ; preds = %12
%18 = tail call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %6, i64 %1)
%19 = extractvalue { i64, i1 } %18, 1
br i1 %19, label %73, label %20
; <label>:20: ; preds = %17
%21 = extractvalue { i64, i1 } %18, 0
%22 = tail call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %21, i64 %15)
%23 = extractvalue { i64, i1 } %22, 0
%24 = extractvalue { i64, i1 } %22, 1
br i1 %24, label %74, label %25
; <label>:25: ; preds = %20
%26 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %7, i64 1
%27 = bitcast %Ts27_ContiguousArrayStorageBaseC* %26 to i8*
%tailaddr = bitcast %Ts27_ContiguousArrayStorageBaseC* %26 to %TSi*
%28 = getelementptr inbounds %TSi, %TSi* %tailaddr, i64 %1
%29 = getelementptr inbounds %TSi, %TSi* %28, i64 %2
%30 = bitcast %TSi* %29 to i8*
%31 = bitcast %Ts22_ContiguousArrayBufferV* %4 to %swift.refcounted**
%32 = tail call i1 @swift_rt_swift_isUniquelyReferenced_nonNull_native(%swift.refcounted* %11) #9
br i1 %32, label %33, label %37
; <label>:33: ; preds = %25
%._storage1._capacityAndFlags._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 0, i32 1, i32 0, i32 1, i32 0
%34 = load i64, i64* %._storage1._capacityAndFlags._value, align 8
%35 = lshr i64 %34, 1
%36 = icmp ult i64 %35, %6
br i1 %36, label %37, label %59, !prof !32
; <label>:37: ; preds = %33, %25
%38 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 1
%39 = bitcast %Ts27_ContiguousArrayStorageBaseC* %38 to i8*
%40 = shl nuw i64 %1, 3
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %27, i8* %39, i64 %40, i32 8, i1 false)
%41 = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %1, i64 %23)
%42 = extractvalue { i64, i1 } %41, 0
%43 = extractvalue { i64, i1 } %41, 1
br i1 %43, label %75, label %44
; <label>:44: ; preds = %37
%45 = icmp slt i64 %1, 0
%46 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._storage, align 8
%._storage5.count._value = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %46, i64 0, i32 1, i32 0, i32 0, i32 0
%47 = load i64, i64* %._storage5.count._value, align 8, !range !31
%48 = icmp slt i64 %47, %42
%49 = or i1 %45, %48
br i1 %49, label %76, label %50
; <label>:50: ; preds = %44
%51 = tail call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %47, i64 %42)
%52 = extractvalue { i64, i1 } %51, 1
br i1 %52, label %77, label %53
; <label>:53: ; preds = %50
%54 = extractvalue { i64, i1 } %51, 0
%55 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %46, i64 1
%tailaddr6 = bitcast %Ts27_ContiguousArrayStorageBaseC* %55 to %TSi*
%56 = getelementptr inbounds %TSi, %TSi* %tailaddr6, i64 %42
%57 = bitcast %TSi* %56 to i8*
%58 = shl nuw i64 %54, 3
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %30, i8* %57, i64 %58, i32 8, i1 false)
br label %67
; <label>:59: ; preds = %33
%60 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %5, i64 1
%tailaddr8 = bitcast %Ts27_ContiguousArrayStorageBaseC* %60 to %TSi*
%61 = bitcast %Ts27_ContiguousArrayStorageBaseC* %60 to i8*
%62 = getelementptr inbounds %TSi, %TSi* %tailaddr8, i64 %1
%63 = shl nuw i64 %1, 3
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %27, i8* %61, i64 %63, i32 8, i1 false)
%64 = getelementptr inbounds %TSi, %TSi* %62, i64 %23
%65 = bitcast %TSi* %64 to i8*
%66 = shl nuw i64 %15, 3
tail call void @llvm.memmove.p0i8.p0i8.i64(i8* %30, i8* %65, i64 %66, i32 8, i1 false)
store i64 0, i64* %._storage1.count._value, align 8
br label %67
; <label>:67: ; preds = %59, %53
%68 = load %Ts27_ContiguousArrayStorageBaseC*, %Ts27_ContiguousArrayStorageBaseC** %._storage2, align 8
%69 = load %swift.refcounted*, %swift.refcounted** %31, align 8
%70 = getelementptr inbounds %Ts27_ContiguousArrayStorageBaseC, %Ts27_ContiguousArrayStorageBaseC* %68, i64 0, i32 0
tail call void @swift_rt_swift_retain(%swift.refcounted* %70) #9
tail call void @swift_rt_swift_release(%swift.refcounted* %69) #9
store %Ts27_ContiguousArrayStorageBaseC* %68, %Ts27_ContiguousArrayStorageBaseC** %._storage, align 8
ret void
; <label>:71: ; preds = %entry
tail call void asm sideeffect "", "n"(i32 0) #9
tail call void @llvm.trap()
unreachable
; <label>:72: ; preds = %12
tail call void asm sideeffect "", "n"(i32 1) #9
tail call void @llvm.trap()
unreachable
; <label>:73: ; preds = %17
tail call void asm sideeffect "", "n"(i32 2) #9
tail call void @llvm.trap()
unreachable
; <label>:74: ; preds = %20
tail call void asm sideeffect "", "n"(i32 3) #9
tail call void @llvm.trap()
unreachable
; <label>:75: ; preds = %37
tail call void asm sideeffect "", "n"(i32 4) #9
tail call void @llvm.trap()
unreachable
; <label>:76: ; preds = %44
tail call void asm sideeffect "", "n"(i32 5) #9
tail call void @llvm.trap()
unreachable
; <label>:77: ; preds = %50
tail call void asm sideeffect "", "n"(i32 6) #9
tail call void @llvm.trap()
unreachable
}
declare swiftcc { i64, i64, i64 } @_T0s16_float64ToStringSSSd_Sb5debugtF(double, i1) local_unnamed_addr #0
; Function Attrs: noinline norecurse
define linkonce_odr hidden swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture dereferenceable(24)) local_unnamed_addr #2 {
entry:
%1 = bitcast %TSS* %0 to i64*
%2 = load i64, i64* %1, align 8
%._core._countAndFlags._value = getelementptr inbounds %TSS, %TSS* %0, i64 0, i32 0, i32 1, i32 0
%3 = load i64, i64* %._core._countAndFlags._value, align 8
%._core._owner = getelementptr inbounds %TSS, %TSS* %0, i64 0, i32 0, i32 2
%4 = bitcast %TyXlSg* %._core._owner to i64*
%5 = load i64, i64* %4, align 8
%6 = insertvalue { i64, i64, i64 } undef, i64 %2, 0
%7 = insertvalue { i64, i64, i64 } %6, i64 %3, 1
%8 = insertvalue { i64, i64, i64 } %7, i64 %5, 2
ret { i64, i64, i64 } %8
}
define linkonce_odr hidden swiftcc void @_T01a7measureyyycFTf4g_n(i8*, %swift.refcounted*) local_unnamed_addr #0 {
entry:
%protocols.i.i = alloca [0 x %swift.protocol*], align 8
%reference.raw7 = alloca [104 x i8], align 8
%2 = alloca %TSS, align 16
%3 = alloca %TSd, align 8
%4 = alloca %TSS, align 8
%5 = bitcast i8* %0 to void (%swift.refcounted*)*
br label %77
; <label>:6: ; preds = %77
%7 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML, align 8
%8 = icmp eq %swift.type* %7, null
br i1 %8, label %cacheIsNull.i, label %_T0s23_ContiguousArrayStorageCyypGMa.exit
cacheIsNull.i: ; preds = %6
%9 = load %swift.type*, %swift.type** @_T0ypML, align 8
%10 = icmp eq %swift.type* %9, null
br i1 %10, label %cacheIsNull.i.i, label %_T0ypMa.exit.i
cacheIsNull.i.i: ; preds = %cacheIsNull.i
%11 = bitcast [0 x %swift.protocol*]* %protocols.i.i to i8*
call void @llvm.lifetime.start(i64 0, i8* nonnull %11) #9
%12 = getelementptr inbounds [0 x %swift.protocol*], [0 x %swift.protocol*]* %protocols.i.i, i64 0, i64 0
%13 = call %swift.type* @swift_rt_swift_getExistentialTypeMetadata(i1 true, %swift.type* null, i64 0, %swift.protocol** nonnull %12) #9
call void @llvm.lifetime.end(i64 0, i8* nonnull %11) #9
store atomic %swift.type* %13, %swift.type** @_T0ypML release, align 8
br label %_T0ypMa.exit.i
_T0ypMa.exit.i: ; preds = %cacheIsNull.i.i, %cacheIsNull.i
%14 = phi %swift.type* [ %9, %cacheIsNull.i ], [ %13, %cacheIsNull.i.i ]
%15 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* %14) #5
store atomic %swift.type* %15, %swift.type** @_T0s23_ContiguousArrayStorageCyypGML release, align 8
br label %_T0s23_ContiguousArrayStorageCyypGMa.exit
_T0s23_ContiguousArrayStorageCyypGMa.exit: ; preds = %6, %_T0ypMa.exit.i
%16 = phi %swift.type* [ %7, %6 ], [ %15, %_T0ypMa.exit.i ]
%17 = call noalias %swift.refcounted* @swift_rt_swift_allocObject(%swift.type* %16, i64 64, i64 7) #9
%18 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %17, i64 1
%19 = bitcast %swift.refcounted* %18 to <2 x i64>*
store <2 x i64> <i64 1, i64 2>, <2 x i64>* %19, align 8
%20 = bitcast %swift.refcounted* %17 to %swift.bridge*
%21 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %17, i64 2
%22 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %17, i64 3, i32 1
%23 = bitcast i32* %22 to %swift.type**
store %swift.type* @_T0SSN, %swift.type** %23, align 8
%24 = load %swift.type*, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML, align 8
%25 = icmp eq %swift.type* %24, null
br i1 %25, label %cacheIsNull.i8, label %_T0s23_ContiguousArrayStorageCySSGMa.exit
cacheIsNull.i8: ; preds = %_T0s23_ContiguousArrayStorageCyypGMa.exit
%26 = call %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type* nonnull @_T0SSN) #5
store atomic %swift.type* %26, %swift.type** @_T0s23_ContiguousArrayStorageCySSGML release, align 8
br label %_T0s23_ContiguousArrayStorageCySSGMa.exit
_T0s23_ContiguousArrayStorageCySSGMa.exit: ; preds = %_T0s23_ContiguousArrayStorageCyypGMa.exit, %cacheIsNull.i8
%27 = phi %swift.type* [ %24, %_T0s23_ContiguousArrayStorageCyypGMa.exit ], [ %26, %cacheIsNull.i8 ]
%28 = bitcast [104 x i8]* %reference.raw7 to %swift.refcounted*
%reference.new = call %swift.refcounted* @swift_initStackObject(%swift.type* %27, %swift.refcounted* nonnull %28) #9
%29 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 1
%30 = bitcast %swift.refcounted* %29 to <2 x i64>*
store <2 x i64> <i64 3, i64 6>, <2 x i64>* %30, align 8
%31 = bitcast %swift.refcounted* %reference.new to %swift.bridge*
%32 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2
%33 = getelementptr inbounds %TSS, %TSS* %2, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %33)
%34 = bitcast %TSS* %2 to <2 x i64>*
store <2 x i64> <i64 ptrtoint ([8 x i8]* @1 to i64), i64 7>, <2 x i64>* %34, align 16
%._core._owner = getelementptr inbounds %TSS, %TSS* %2, i64 0, i32 0, i32 2
%35 = bitcast %TyXlSg* %._core._owner to i64*
store i64 0, i64* %35, align 16
%36 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %2)
%37 = extractvalue { i64, i64, i64 } %36, 0
%38 = extractvalue { i64, i64, i64 } %36, 1
%39 = extractvalue { i64, i64, i64 } %36, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %33)
%40 = bitcast %swift.refcounted* %32 to i64*
store i64 %37, i64* %40, align 8
%tailaddr2._core._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 2, i32 1
%tailaddr2._core._countAndFlags._value = bitcast i32* %tailaddr2._core._countAndFlags to i64*
store i64 %38, i64* %tailaddr2._core._countAndFlags._value, align 8
%tailaddr2._core._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3
%41 = bitcast %swift.refcounted* %tailaddr2._core._owner to i64*
store i64 %39, i64* %41, align 8
%42 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 3, i32 1
%43 = bitcast %TSd* %3 to i8*
call void @llvm.lifetime.start(i64 8, i8* nonnull %43)
%._value = getelementptr inbounds %TSd, %TSd* %3, i64 0, i32 0
store double %84, double* %._value, align 8
%44 = call swiftcc { i64, i64, i64 } @_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSd_Tg5(%TSd* noalias nocapture nonnull dereferenceable(8) %3)
%45 = extractvalue { i64, i64, i64 } %44, 0
%46 = extractvalue { i64, i64, i64 } %44, 1
%47 = extractvalue { i64, i64, i64 } %44, 2
call void @llvm.lifetime.end(i64 8, i8* nonnull %43)
%48 = bitcast i32* %42 to i64*
store i64 %45, i64* %48, align 8
%._core3._countAndFlags = getelementptr inbounds i32, i32* %42, i64 2
%._core3._countAndFlags._value = bitcast i32* %._core3._countAndFlags to i64*
store i64 %46, i64* %._core3._countAndFlags._value, align 8
%._core3._owner = getelementptr inbounds i32, i32* %42, i64 4
%49 = bitcast i32* %._core3._owner to i64*
store i64 %47, i64* %49, align 8
%50 = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5
%51 = getelementptr inbounds %TSS, %TSS* %4, i64 0, i32 0, i32 0, i32 0, i64 0
call void @llvm.lifetime.start(i64 24, i8* nonnull %51)
%52 = bitcast %TSS* %4 to i64*
store i64 ptrtoint ([1 x i8]* @2 to i64), i64* %52, align 8
%._core4._countAndFlags._value = getelementptr inbounds %TSS, %TSS* %4, i64 0, i32 0, i32 1, i32 0
%53 = bitcast i64* %._core4._countAndFlags._value to i8*
call void @llvm.memset.p0i8.i64(i8* %53, i8 0, i64 16, i32 8, i1 false)
%54 = call swiftcc { i64, i64, i64 } @_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g(%TSS* noalias nocapture nonnull dereferenceable(24) %4)
%55 = extractvalue { i64, i64, i64 } %54, 0
%56 = extractvalue { i64, i64, i64 } %54, 1
%57 = extractvalue { i64, i64, i64 } %54, 2
call void @llvm.lifetime.end(i64 24, i8* nonnull %51)
%58 = bitcast %swift.refcounted* %50 to i64*
store i64 %55, i64* %58, align 8
%._core5._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 5, i32 1
%._core5._countAndFlags._value = bitcast i32* %._core5._countAndFlags to i64*
store i64 %56, i64* %._core5._countAndFlags._value, align 8
%._core5._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %reference.new, i64 6
%59 = bitcast %swift.refcounted* %._core5._owner to i64*
store i64 %57, i64* %59, align 8
%60 = inttoptr i64 %39 to %objc_object*
%61 = inttoptr i64 %57 to %objc_object*
call void @swift_unknownRetain(%objc_object* %61) #9
call void @swift_unknownRetain(%objc_object* %60) #9
%62 = call swiftcc { i64, i64, i64 } @_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n(%swift.bridge* %31)
%63 = extractvalue { i64, i64, i64 } %62, 0
%64 = extractvalue { i64, i64, i64 } %62, 1
%65 = extractvalue { i64, i64, i64 } %62, 2
%66 = bitcast %swift.refcounted* %reference.new to i8*
call void @llvm.lifetime.end(i64 -1, i8* %66)
%67 = bitcast %swift.refcounted* %21 to i64*
store i64 %63, i64* %67, align 8
%._core6._countAndFlags = getelementptr inbounds %swift.refcounted, %swift.refcounted* %17, i64 2, i32 1
%._core6._countAndFlags._value = bitcast i32* %._core6._countAndFlags to i64*
store i64 %64, i64* %._core6._countAndFlags._value, align 8
%._core6._owner = getelementptr inbounds %swift.refcounted, %swift.refcounted* %17, i64 3
%68 = bitcast %swift.refcounted* %._core6._owner to i64*
store i64 %65, i64* %68, align 8
%69 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_()
%70 = extractvalue { i64, i64, i64 } %69, 0
%71 = extractvalue { i64, i64, i64 } %69, 1
%72 = extractvalue { i64, i64, i64 } %69, 2
%73 = call swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_()
%74 = extractvalue { i64, i64, i64 } %73, 0
%75 = extractvalue { i64, i64, i64 } %73, 1
%76 = extractvalue { i64, i64, i64 } %73, 2
call swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge* %20, i64 %70, i64 %71, i64 %72, i64 %74, i64 %75, i64 %76)
ret void
; <label>:77: ; preds = %77, %entry
%78 = phi double [ 0.000000e+00, %entry ], [ %84, %77 ]
%79 = phi i64 [ 0, %entry ], [ %80, %77 ]
%80 = add nuw nsw i64 %79, 1
%81 = tail call swiftcc double @_T010Foundation4DateVACycfC()
tail call void @swift_rt_swift_retain(%swift.refcounted* %1) #9
tail call swiftcc void %5(%swift.refcounted* swiftself %1)
%82 = tail call swiftcc double @_T010Foundation4DateVACycfC()
%83 = tail call swiftcc double @_T010Foundation4DateV17timeIntervalSinceSdACF(double %81, double %82)
%84 = fadd double %78, %83
%85 = icmp eq i64 %80, 100000
br i1 %85, label %6, label %77
}
; Function Attrs: noinline nounwind
define linkonce_odr hidden void @swift_rt_swift_release(%swift.refcounted*) local_unnamed_addr #3 {
entry:
%load = load void (%swift.refcounted*)*, void (%swift.refcounted*)** @_swift_release, align 8
tail call void %load(%swift.refcounted* %0) #9
ret void
}
; Function Attrs: noinline
declare swiftcc void @_T0s5printySayypGd_SS9separatorSS10terminatortF(%swift.bridge*, i64, i64, i64, i64, i64, i64) local_unnamed_addr #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #4
; Function Attrs: noinline nounwind
define linkonce_odr hidden %swift.type* @swift_rt_swift_getExistentialTypeMetadata(i1, %swift.type*, i64, %swift.protocol**) local_unnamed_addr #3 {
entry:
%load = load %swift.type* (i1, %swift.type*, i64, %swift.protocol**)*, %swift.type* (i1, %swift.type*, i64, %swift.protocol**)** @_swift_getExistentialTypeMetadata, align 8
%4 = tail call %swift.type* %load(i1 %0, %swift.type* %1, i64 %2, %swift.protocol** %3) #9
ret %swift.type* %4
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #4
declare %swift.type* @_T0s23_ContiguousArrayStorageCMa(%swift.type*) local_unnamed_addr #0
; Function Attrs: noinline nounwind
define linkonce_odr hidden %swift.refcounted* @swift_rt_swift_allocObject(%swift.type*, i64, i64) local_unnamed_addr #3 {
entry:
%load = load %swift.refcounted* (%swift.type*, i64, i64)*, %swift.refcounted* (%swift.type*, i64, i64)** @_swift_allocObject, align 8
%3 = tail call %swift.refcounted* %load(%swift.type* %0, i64 %1, i64 %2) #9
ret %swift.refcounted* %3
}
; Function Attrs: noinline
declare swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA0_() local_unnamed_addr #1
; Function Attrs: noinline
declare swiftcc { i64, i64, i64 } @_T0s5printySayypGd_SS9separatorSS10terminatortFfA1_() local_unnamed_addr #1
declare swiftcc double @_T010Foundation4DateVACycfC() local_unnamed_addr #0
declare swiftcc double @_T010Foundation4DateV17timeIntervalSinceSdACF(double, double) local_unnamed_addr #0
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) #5
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.smul.with.overflow.i64(i64, i64) #5
; Function Attrs: noreturn nounwind
declare void @llvm.trap() #6
declare %swift.refcounted* @swift_initStackObject(%swift.type*, %swift.refcounted*) local_unnamed_addr
declare void @swift_unknownRetain(%objc_object*) local_unnamed_addr
; Function Attrs: noinline nounwind
define linkonce_odr hidden void @swift_rt_swift_retain(%swift.refcounted*) local_unnamed_addr #3 {
entry:
%load = load void (%swift.refcounted*)*, void (%swift.refcounted*)** @_swift_retain, align 8
tail call void %load(%swift.refcounted* %0) #9
ret void
}
; Function Attrs: noinline nounwind
define linkonce_odr hidden i1 @swift_rt_swift_isUniquelyReferenced_nonNull_native(%swift.refcounted*) local_unnamed_addr #3 {
entry:
%load = load i1 (%swift.refcounted*)*, i1 (%swift.refcounted*)** @_swift_isUniquelyReferenced_nonNull_native, align 8
%1 = tail call i1 %load(%swift.refcounted* %0) #9
ret i1 %1
}
; Function Attrs: nounwind readnone
declare { i64, i1 } @llvm.ssub.with.overflow.i64(i64, i64) #5
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #4
; Function Attrs: argmemonly nounwind
declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #4
; Function Attrs: nounwind readnone
declare i64 @_swift_stdlib_malloc_size(i8*) local_unnamed_addr #7
declare %swift.bridge* @swift_bridgeObjectRetain(%swift.bridge*) local_unnamed_addr
declare void @swift_unknownRelease(%objc_object*) local_unnamed_addr
declare void @swift_bridgeObjectRelease(%swift.bridge*) local_unnamed_addr
; Function Attrs: noinline
declare swiftcc void @_T0s19_cocoaStringReadAllyyXl_Spys6UInt16VGtFTfq4gn_n(%objc_object*, i8*) local_unnamed_addr #1
declare i1 @swift_isUniquelyReferencedNonObjC(%objc_object*) local_unnamed_addr
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #4
attributes #0 = { "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="core2" "target-features"="+cx16,+fxsr,+mmx,+sse,+sse2,+sse3,+ssse3,+x87" }
attributes #1 = { noinline "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="core2" "target-features"="+cx16,+fxsr,+mmx,+sse,+sse2,+sse3,+ssse3,+x87" }
attributes #2 = { noinline norecurse "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "target-cpu"="core2" "target-features"="+cx16,+fxsr,+mmx,+sse,+sse2,+sse3,+ssse3,+x87" }
attributes #3 = { noinline nounwind }
attributes #4 = { argmemonly nounwind }
attributes #5 = { nounwind readnone }
attributes #6 = { noreturn nounwind }
attributes #7 = { nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="core2" "target-features"="+cx16,+fxsr,+mmx,+sse,+sse2,+sse3,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #8 = { noinline }
attributes #9 = { nounwind }
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !28, !29}
!0 = !{i32 1, !"Objective-C Version", i32 2}
!1 = !{i32 1, !"Objective-C Image Info Version", i32 0}
!2 = !{i32 1, !"Objective-C Image Info Section", !"__DATA, __objc_imageinfo, regular, no_dead_strip"}
!3 = !{i32 4, !"Objective-C Garbage Collection", i32 1280}
!4 = !{i32 1, !"Objective-C Class Properties", i32 64}
!5 = !{i32 6, !"Linker Options", !6}
!6 = !{!7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27}
!7 = !{!"-lswiftCore"}
!8 = !{!"-lswiftFoundation"}
!9 = !{!"-framework", !"Foundation"}
!10 = !{!"-lswiftObjectiveC"}
!11 = !{!"-lswiftDarwin"}
!12 = !{!"-framework", !"CoreServices"}
!13 = !{!"-lswiftIOKit"}
!14 = !{!"-framework", !"IOKit"}
!15 = !{!"-lswiftDispatch"}
!16 = !{!"-lswiftCoreFoundation"}
!17 = !{!"-framework", !"CoreFoundation"}
!18 = !{!"-framework", !"DiskArbitration"}
!19 = !{!"-framework", !"CFNetwork"}
!20 = !{!"-framework", !"Security"}
!21 = !{!"-lswiftCoreGraphics"}
!22 = !{!"-framework", !"CoreGraphics"}
!23 = !{!"-framework", !"ApplicationServices"}
!24 = !{!"-framework", !"ColorSync"}
!25 = !{!"-framework", !"CoreText"}
!26 = !{!"-framework", !"ImageIO"}
!27 = !{!"-lobjc"}
!28 = !{i32 1, !"PIC Level", i32 2}
!29 = !{i32 1, !"Swift Version", i32 5}
!30 = !{!"branch_weights", i32 2000, i32 1}
!31 = !{i64 0, i64 9223372036854775807}
!32 = !{!"branch_weights", i32 1, i32 2000}
!33 = !{!34}
!34 = distinct !{!34, !35, !"_T0s8SequencePsE8containsS2b7ElementQzKc5where_tKFSRys6UInt16VG_Tgq505_T0s6E37VSbs5Error_pIxydzo_ABSbsAC_pIxidzo_TRAHSbs0H0_pIxydzo_Tfq1cn_nTfq4ng_n: argument 0"}
!35 = distinct !{!35, !"_T0s8SequencePsE8containsS2b7ElementQzKc5where_tKFSRys6UInt16VG_Tgq505_T0s6E37VSbs5Error_pIxydzo_ABSbsAC_pIxidzo_TRAHSbs0H0_pIxydzo_Tfq1cn_nTfq4ng_n"}
!36 = !{!37}
!37 = distinct !{!37, !38}
!38 = distinct !{!38, !"LVerDomain"}
!39 = !{!40}
!40 = distinct !{!40, !38}
!41 = distinct !{!41, !42, !43}
!42 = !{!"llvm.loop.vectorize.width", i32 1}
!43 = !{!"llvm.loop.interleave.count", i32 1}
!44 = distinct !{!44, !42, !43}
@omochi
Copy link
Author

omochi commented Oct 23, 2017

_T01a17testLazyMapReduceyyF
30 -> 122 -> 128 -> 133 -> 140 -> 145 -> 35 -> 41 -> 46 -> 140

@omochi
Copy link
Author

omochi commented Oct 23, 2017

testForLoop
x1000: 0.485580742359161
333283334999
testMapReduce
x1000: 1.91254037618637
333283334999
testLazyMapReduce
x1000: 0.489482939243317
333283334999

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment