GithubHelp home page GithubHelp logo

Comments (2)

wsmoses avatar wsmoses commented on May 18, 2024

Diving in a bit deeper to this, I'm surprised this occurs -- and it appears to be an insufficient optimization pipeline?

%.not52 = icmp eq i32 1308622848, 1308622848, !dbg !1406
%26 = select i1 %.not52, i64 3, i64 4, !dbg !1409

val:   %29 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 %26, !dbg !93 - {[-1]:Pointer}

val:   %28 = addrspacecast {} addrspace(10)* addrspace(10)* %27 to {} addrspace(10)* addrspace(11)*, !dbg !93 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}

So the gep of an unknown address reasonably claims to fallback and not assume anything. In this case from the select it is either 3 or 4. I could hard code in a select rule for here, but I feel like the bigger issue is why that icmp isn't eliminated [thus preventing the select, etc].

from enzyme.jl.

wsmoses avatar wsmoses commented on May 18, 2024

I'm also surprised that activity analysis didn't say the load was inactive regardless:


define internal fastcc nonnull align 16 dereferenceable(40) {} addrspace(10)* @preprocess_julia_gemm__1535(double %0, {} addrspace(10)* nonnull align 16 dereferenceable(40) %1, {} addrspace(10)* nonnull align 16 dereferenceable(40) %2, double %3, {} addrspace(10)* nonnull returned align 16 dereferenceable(40) %4) unnamed_addr !dbg !1399 {
top:
  %5 = alloca i8, align 1
  %6 = alloca i8, align 1
  %7 = alloca i64, align 16
  %8 = alloca i64, align 16
  %9 = alloca i64, align 16
  %10 = alloca i64, align 16
  %11 = alloca i64, align 16
  %12 = alloca i64, align 16
  %13 = alloca i64, align 16
  %14 = alloca i64, align 16
  %15 = call {}*** @julia.ptls_states()
  %.not = icmp eq i32 1308622848, 1308622848, !dbg !1400
  %16 = select i1 %.not, i64 3, i64 4, !dbg !1403
  %17 = bitcast {} addrspace(10)* %1 to {} addrspace(10)* addrspace(10)*, !dbg !1403
  %18 = addrspacecast {} addrspace(10)* addrspace(10)* %17 to {} addrspace(10)* addrspace(11)*, !dbg !1403
  %19 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 %16, !dbg !1403
  %20 = bitcast {} addrspace(10)* addrspace(11)* %19 to i64 addrspace(11)*, !dbg !1403
  %21 = load i64, i64 addrspace(11)* %20, align 8, !dbg !1403, !tbaa !107, !range !161, !invariant.load !4
  %22 = select i1 %.not, i64 4, i64 3, !dbg !1404
  %23 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 %22, !dbg !1404
  %24 = bitcast {} addrspace(10)* addrspace(11)* %23 to i64 addrspace(11)*, !dbg !1404
  %25 = load i64, i64 addrspace(11)* %24, align 8, !dbg !1404, !tbaa !107, !range !161, !invariant.load !4
  %.not52 = icmp eq i32 1308622848, 1308622848, !dbg !1406
  %26 = select i1 %.not52, i64 3, i64 4, !dbg !1409
  %27 = bitcast {} addrspace(10)* %2 to {} addrspace(10)* addrspace(10)*, !dbg !1409
  %28 = addrspacecast {} addrspace(10)* addrspace(10)* %27 to {} addrspace(10)* addrspace(11)*, !dbg !1409
  %29 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 %26, !dbg !1409
  %30 = bitcast {} addrspace(10)* addrspace(11)* %29 to i64 addrspace(11)*, !dbg !1409
  %31 = load i64, i64 addrspace(11)* %30, align 8, !dbg !1409, !tbaa !107, !range !161, !invariant.load !4
  %32 = select i1 %.not52, i64 4, i64 3, !dbg !1410
  %33 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 %32, !dbg !1410
  %34 = bitcast {} addrspace(10)* addrspace(11)* %33 to i64 addrspace(11)*, !dbg !1410
  %35 = load i64, i64 addrspace(11)* %34, align 8, !dbg !1410, !tbaa !107, !range !161, !invariant.load !4
  %.not59 = icmp eq i64 %25, %31, !dbg !1412
  %36 = bitcast {} addrspace(10)* %4 to {} addrspace(10)* addrspace(10)*, !dbg !1415
  %37 = addrspacecast {} addrspace(10)* addrspace(10)* %36 to {} addrspace(10)* addrspace(11)*, !dbg !1415
  %38 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %37, i64 3, !dbg !1415
  %39 = bitcast {} addrspace(10)* addrspace(11)* %38 to i64 addrspace(11)*, !dbg !1415
  %40 = load i64, i64 addrspace(11)* %39, align 8, !dbg !1415, !tbaa !107, !range !161, !invariant.load !4
  %.not60 = icmp eq i64 %21, %40
  %or.cond = and i1 %.not59, %.not60, !dbg !1414
  br i1 %or.cond, label %L59, label %L61, !dbg !1414

L59:                                              ; preds = %top
  %41 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %37, i64 4, !dbg !1416
  %42 = bitcast {} addrspace(10)* addrspace(11)* %41 to i64 addrspace(11)*, !dbg !1416
  %43 = load i64, i64 addrspace(11)* %42, align 8, !dbg !1416, !tbaa !107, !range !161, !invariant.load !4
  %.not61 = icmp eq i64 %35, %43, !dbg !1412
  br i1 %.not61, label %L68, label %L61, !dbg !1414

L61:                                              ; preds = %L59, %top
  %44 = phi i64 [ %21, %L59 ], [ %40, %top ], !dbg !1417
  %45 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %37, i64 4, !dbg !1417
  %46 = bitcast {} addrspace(10)* addrspace(11)* %45 to i64 addrspace(11)*, !dbg !1417
  %47 = load i64, i64 addrspace(11)* %46, align 8, !dbg !1417, !tbaa !107, !range !161, !invariant.load !4
  %48 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %21), !dbg !1419
  %49 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %25), !dbg !1419
  %50 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %31), !dbg !1419
  %51 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %35), !dbg !1419
  %52 = bitcast {}*** %15 to i8*, !dbg !1419
  %53 = call noalias nonnull {} addrspace(10)* @julia.gc_alloc_obj(i8* %52, i64 16, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4629366288 to {}*) to {} addrspace(10)*)) #4, !dbg !1419
  %54 = bitcast {} addrspace(10)* %53 to i8 addrspace(10)*, !dbg !1419
  %.sroa.0.0..sroa_cast = bitcast {} addrspace(10)* %53 to i64 addrspace(10)*, !dbg !1419
  store i64 %44, i64 addrspace(10)* %.sroa.0.0..sroa_cast, align 8, !dbg !1419, !tbaa !452
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(10)* %54, i64 8, !dbg !1419
  %.sroa.2.0..sroa_cast = bitcast i8 addrspace(10)* %.sroa.2.0..sroa_idx to i64 addrspace(10)*, !dbg !1419
  store i64 %47, i64 addrspace(10)* %.sroa.2.0..sroa_cast, align 8, !dbg !1419, !tbaa !452
  %55 = call cc38 nonnull {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* @jl_invoke to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* addrspacecast ({}* inttoptr (i64 4630038208 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4692602000 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959616 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %48, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959648 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %49, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959680 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %50, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959648 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %51, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959712 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %53), !dbg !1419
  call void @llvm.trap() #11, !dbg !1418
  unreachable, !dbg !1418

L68:                                              ; preds = %L59
  %56 = icmp slt i32 1308622848, 0, !dbg !1420
  br i1 %56, label %L77, label %L72, !dbg !1423

L72:                                              ; preds = %L68
  %57 = lshr i32 1308622848, 24, !dbg !1429
  br label %L90, !dbg !1423

L77:                                              ; preds = %L68
  %58 = call fastcc i32 @julia_UInt32_1543(i32 zeroext 1308622848), !dbg !1423
  %59 = icmp ugt i32 %58, 255, !dbg !1431
  br i1 %59, label %L83, label %L90, !dbg !1431

L83:                                              ; preds = %L77
  %60 = call fastcc nonnull {} addrspace(10)* @julia_throw_inexacterror_1541(i32 zeroext %58) #11, !dbg !1431
  unreachable, !dbg !1431

L90:                                              ; preds = %L77, %L72
  %value_phi20.in = phi i32 [ %57, %L72 ], [ %58, %L77 ]
  %value_phi20 = trunc i32 %value_phi20.in to i8, !dbg !1434
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %5)
  store i8 %value_phi20, i8* %5, align 1, !dbg !1425, !tbaa !698
  %61 = icmp slt i32 1308622848, 0, !dbg !1420
  br i1 %61, label %L103, label %L98, !dbg !1423

L98:                                              ; preds = %L90
  %62 = lshr i32 1308622848, 24, !dbg !1429
  br label %L116, !dbg !1423

L103:                                             ; preds = %L90
  %63 = call fastcc i32 @julia_UInt32_1543(i32 zeroext 1308622848), !dbg !1423
  %64 = icmp ugt i32 %63, 255, !dbg !1431
  br i1 %64, label %L109, label %L116, !dbg !1431

L109:                                             ; preds = %L103
  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %5)
  %65 = call fastcc nonnull {} addrspace(10)* @julia_throw_inexacterror_1541(i32 zeroext %63) #11, !dbg !1431
  unreachable, !dbg !1431

L116:                                             ; preds = %L103, %L98
  %value_phi21.in = phi i32 [ %62, %L98 ], [ %63, %L103 ]
  %value_phi21 = trunc i32 %value_phi21.in to i8, !dbg !1434
  %66 = bitcast i64* %14 to i8*
  %67 = bitcast i64* %13 to i8*
  %68 = bitcast i64* %12 to i8*
  %69 = bitcast i64* %11 to i8*
  %70 = bitcast i64* %10 to i8*
  %71 = bitcast i64* %9 to i8*
  %72 = bitcast i64* %8 to i8*
  %73 = bitcast i64* %7 to i8*
  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %6)
  store i8 %value_phi21, i8* %6, align 1, !dbg !1425, !tbaa !698
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %73)
  store i64 %21, i64* %7, align 16, !dbg !1425, !tbaa !698
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %72)
  store i64 %35, i64* %8, align 16, !dbg !1425, !tbaa !698
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %71)
  store i64 %25, i64* %9, align 16, !dbg !1425, !tbaa !698
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %70)
  %74 = bitcast i64* %10 to double*, !dbg !1425
  store double %0, double* %74, align 16, !dbg !1425, !tbaa !698
  %75 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 3, !dbg !1435
  %76 = bitcast {} addrspace(10)* addrspace(11)* %75 to i64 addrspace(11)*, !dbg !1435
  %77 = load i64, i64 addrspace(11)* %76, align 8, !dbg !1435, !tbaa !107, !range !161, !invariant.load !4
  %.not55 = icmp eq i64 %77, 0, !dbg !1438
  %78 = select i1 %.not55, i64 1, i64 %77, !dbg !1439
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %69)
  store i64 %78, i64* %11, align 16, !dbg !1425, !tbaa !698
  %79 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 3, !dbg !1435
  %80 = bitcast {} addrspace(10)* addrspace(11)* %79 to i64 addrspace(11)*, !dbg !1435
  %81 = load i64, i64 addrspace(11)* %80, align 8, !dbg !1435, !tbaa !107, !range !161, !invariant.load !4
  %.not56 = icmp eq i64 %81, 0, !dbg !1438
  %82 = select i1 %.not56, i64 1, i64 %81, !dbg !1439
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %68)
  store i64 %82, i64* %12, align 16, !dbg !1425, !tbaa !698
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %67)
  %83 = bitcast i64* %13 to double*, !dbg !1425
  store double %3, double* %83, align 16, !dbg !1425, !tbaa !698
  %.not57 = icmp eq i64 %21, 0, !dbg !1438
  %84 = select i1 %.not57, i64 1, i64 %21, !dbg !1439
  call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %66)
  store i64 %84, i64* %14, align 16, !dbg !1425, !tbaa !698
  %85 = addrspacecast {} addrspace(10)* %1 to {} addrspace(11)*, !dbg !1440
  %86 = call nonnull align 8 {}* @julia.pointer_from_objref({} addrspace(11)* %85) #7, !dbg !1440
  %87 = bitcast {}* %86 to i64*, !dbg !1440
  %88 = load i64, i64* %87, align 8, !dbg !1440, !tbaa !107, !range !350, !invariant.load !4
  %89 = addrspacecast {} addrspace(10)* %2 to {} addrspace(11)*, !dbg !1440
  %90 = call nonnull align 8 {}* @julia.pointer_from_objref({} addrspace(11)* %89) #7, !dbg !1440
  %91 = bitcast {}* %90 to i64*, !dbg !1440
  %92 = load i64, i64* %91, align 8, !dbg !1440, !tbaa !107, !range !350, !invariant.load !4
  %93 = addrspacecast {} addrspace(10)* %4 to {} addrspace(11)*, !dbg !1440
  %94 = call nonnull align 8 {}* @julia.pointer_from_objref({} addrspace(11)* %93) #7, !dbg !1440
  %95 = bitcast {}* %94 to i64*, !dbg !1440
  %96 = load i64, i64* %95, align 8, !dbg !1440, !tbaa !107, !range !350, !invariant.load !4
  call void @dgemm_64_(i8* nonnull %5, i8* nonnull %6, i8* nonnull %73, i8* nonnull %72, i8* nonnull %71, i8* nonnull %70, i64 %88, i8* nonnull %69, i64 %92, i8* nonnull %68, i8* nonnull %67, i64 %96, i8* nonnull %66, i64 1, i64 1) [ "jl_roots"({} addrspace(10)* null, {} addrspace(10)* %4, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* %2, {} addrspace(10)* null, {} addrspace(10)* %1, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !1428
  ret {} addrspace(10)* undef, !dbg !1441
}

val: i32 255 - {[-1]:Integer}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4630038208 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
val: {}* inttoptr (i64 4630038208 to {}*) - {[-1]:Anything}
val:   store i64 %21, i64* %7, align 16, !dbg !120, !tbaa !140 - {}
val:   ret {} addrspace(10)* undef, !dbg !158 - {}
val:   store i64 %78, i64* %11, align 16, !dbg !120, !tbaa !140 - {}
val:   store double %3, double* %83, align 16, !dbg !120, !tbaa !140 - {}
val:   %96 = load i64, i64* %95, align 8, !dbg !154, !tbaa !83, !range !157, !invariant.load !4 - {[-1]:Pointer, [-1,-1]:Float@double}
val:   %91 = bitcast {}* %90 to i64*, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %20 = bitcast {} addrspace(10)* addrspace(11)* %19 to i64 addrspace(11)*, !dbg !80 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %87 = bitcast {}* %86 to i64*, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %83 = bitcast i64* %13 to double*, !dbg !120 - {[-1]:Pointer, [-1,0]:Float@double}
val:   %.not61 = icmp eq i64 %35, %43, !dbg !96 - {[-1]:Integer}
val:   %93 = addrspacecast {} addrspace(10)* %4 to {} addrspace(11)*, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   store i64 %84, i64* %14, align 16, !dbg !120, !tbaa !140 - {}
val:   br label %L116, !dbg !116 - {}
val:   %72 = bitcast i64* %8 to i8* - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %77 = load i64, i64 addrspace(11)* %76, align 8, !dbg !144, !tbaa !83, !range !87, !invariant.load !4 - {[-1]:Integer}
val:   br label %L90, !dbg !116 - {}
val:   %69 = bitcast i64* %11 to i8* - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %46 = bitcast {} addrspace(10)* addrspace(11)* %45 to i64 addrspace(11)*, !dbg !103 - {}
val:   %88 = load i64, i64* %87, align 8, !dbg !154, !tbaa !83, !range !157, !invariant.load !4 - {[-1]:Pointer, [-1,-1]:Float@double}
val:   %57 = lshr i32 1308622848, 24, !dbg !130 - {[-1]:Anything}
val:   %52 = bitcast {}*** %15 to i8*, !dbg !105 - {}
val:   %61 = icmp slt i32 1308622848, 0, !dbg !109 - {[-1]:Integer}
val:   %74 = bitcast i64* %10 to double*, !dbg !120 - {[-1]:Pointer, [-1,0]:Float@double}
val:   %.not56 = icmp eq i64 %81, 0, !dbg !150 - {[-1]:Integer}
val:   %.sroa.0.0..sroa_cast = bitcast {} addrspace(10)* %53 to i64 addrspace(10)*, !dbg !105 - {}
val:   %25 = load i64, i64 addrspace(11)* %24, align 8, !dbg !88, !tbaa !83, !range !87, !invariant.load !4 - {}
val:   %47 = load i64, i64 addrspace(11)* %46, align 8, !dbg !103, !tbaa !83, !range !87, !invariant.load !4 - {}
val:   %81 = load i64, i64 addrspace(11)* %80, align 8, !dbg !144, !tbaa !83, !range !87, !invariant.load !4 - {[-1]:Integer}
val:   %62 = lshr i32 1308622848, 24, !dbg !130 - {[-1]:Anything}
val:   %value_phi20 = trunc i32 %value_phi20.in to i8, !dbg !139 - {[-1]:Anything}
val:   %8 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   store i64 %25, i64* %9, align 16, !dbg !120, !tbaa !140 - {}
val:   %56 = icmp slt i32 1308622848, 0, !dbg !109 - {[-1]:Integer}
val:   store i8 %value_phi20, i8* %5, align 1, !dbg !120, !tbaa !140 - {}
val:   %5 = alloca i8, align 1 - {[-1]:Pointer, [-1,0]:Integer}
val: {}* inttoptr (i64 4663959616 to {}*) - {[-1]:Anything}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959616 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
val: {}* inttoptr (i64 4663959712 to {}*) - {[-1]:Anything}
val: {}* inttoptr (i64 4663959648 to {}*) - {[-1]:Anything}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959648 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
val: {}* inttoptr (i64 4663959680 to {}*) - {[-1]:Anything}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959680 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959712 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
val: {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* @jl_invoke to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*) - {[-1]:Pointer}
val:   %59 = icmp ugt i32 %58, 255, !dbg !133 - {[-1]:Integer}
val:   %67 = bitcast i64* %13 to i8* - {[-1]:Pointer, [-1,0]:Float@double}
val:   store double %0, double* %74, align 16, !dbg !120, !tbaa !140 - {}
val:   %.not57 = icmp eq i64 %21, 0, !dbg !150 - {[-1]:Integer}
val:   %68 = bitcast i64* %12 to i8* - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %.not52 = icmp eq i32 1308622848, 1308622848, !dbg !90 - {[-1]:Integer}
val:   %.sroa.2.0..sroa_cast = bitcast i8 addrspace(10)* %.sroa.2.0..sroa_idx to i64 addrspace(10)*, !dbg !105 - {}
val:   %13 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Float@double}
val:   %7 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %85 = addrspacecast {} addrspace(10)* %1 to {} addrspace(11)*, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %10 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Float@double}
val:   %42 = bitcast {} addrspace(10)* addrspace(11)* %41 to i64 addrspace(11)*, !dbg !102 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer}
val:   %36 = bitcast {} addrspace(10)* %4 to {} addrspace(10)* addrspace(10)*, !dbg !101 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %9 = alloca i64, align 16 - {[-1]:Pointer}
val:   %.not55 = icmp eq i64 %77, 0, !dbg !150 - {[-1]:Integer}
val:   %71 = bitcast i64* %9 to i8* - {[-1]:Pointer}
val:   %6 = alloca i8, align 1 - {[-1]:Pointer, [-1,0]:Integer}
val:   %21 = load i64, i64 addrspace(11)* %20, align 8, !dbg !80, !tbaa !83, !range !87, !invariant.load !4 - {[-1]:Integer}
val:   %value_phi21 = trunc i32 %value_phi21.in to i8, !dbg !139 - {[-1]:Anything}
val:   %18 = addrspacecast {} addrspace(10)* addrspace(10)* %17 to {} addrspace(10)* addrspace(11)*, !dbg !80 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   store i8 %value_phi21, i8* %6, align 1, !dbg !120, !tbaa !140 - {}
val:   %.not = icmp eq i32 1308622848, 1308622848, !dbg !74 - {[-1]:Integer}
val:   %95 = bitcast {}* %94 to i64*, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %64 = icmp ugt i32 %63, 255, !dbg !133 - {[-1]:Integer}
val:   %34 = bitcast {} addrspace(10)* addrspace(11)* %33 to i64 addrspace(11)*, !dbg !94 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val: declare nonnull {} addrspace(10)* @jl_invoke({} addrspace(10)*, {} addrspace(10)** nocapture readonly, i32, {} addrspace(10)*) local_unnamed_addr
 - {[-1]:Pointer}
val:   %.not59 = icmp eq i64 %25, %31, !dbg !96 - {[-1]:Integer}
val:   %12 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %39 = bitcast {} addrspace(10)* addrspace(11)* %38 to i64 addrspace(11)*, !dbg !101 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer}
val:   %35 = load i64, i64 addrspace(11)* %34, align 8, !dbg !94, !tbaa !83, !range !87, !invariant.load !4 - {[-1]:Integer}
val:   %27 = bitcast {} addrspace(10)* %2 to {} addrspace(10)* addrspace(10)*, !dbg !93 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %92 = load i64, i64* %91, align 8, !dbg !154, !tbaa !83, !range !157, !invariant.load !4 - {[-1]:Pointer, [-1,-1]:Float@double}
val:   %43 = load i64, i64 addrspace(11)* %42, align 8, !dbg !102, !tbaa !83, !range !87, !invariant.load !4 - {[-1]:Integer}
val:   %31 = load i64, i64 addrspace(11)* %30, align 8, !dbg !93, !tbaa !83, !range !87, !invariant.load !4 - {}
val:   %73 = bitcast i64* %7 to i8* - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %40 = load i64, i64 addrspace(11)* %39, align 8, !dbg !101, !tbaa !83, !range !87, !invariant.load !4 - {[-1]:Integer}
val:   %66 = bitcast i64* %14 to i8* - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %37 = addrspacecast {} addrspace(10)* addrspace(10)* %36 to {} addrspace(10)* addrspace(11)*, !dbg !101 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %15 = call {}*** @julia.ptls_states() - {}
val:   %.not60 = icmp eq i64 %21, %40 - {[-1]:Integer}
val:   %30 = bitcast {} addrspace(10)* addrspace(11)* %29 to i64 addrspace(11)*, !dbg !93 - {[-1]:Pointer}
val:   %14 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   store i64 %35, i64* %8, align 16, !dbg !120, !tbaa !140 - {}
val:   %70 = bitcast i64* %10 to i8* - {[-1]:Pointer, [-1,0]:Float@double}
val:   %or.cond = and i1 %.not59, %.not60, !dbg !100 - {[-1]:Integer}
val:   %28 = addrspacecast {} addrspace(10)* addrspace(10)* %27 to {} addrspace(10)* addrspace(11)*, !dbg !93 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %89 = addrspacecast {} addrspace(10)* %2 to {} addrspace(11)*, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %55 = call cc38 nonnull {} addrspace(10)* bitcast ({} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32, {} addrspace(10)*)* @jl_invoke to {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*)*)({} addrspace(10)* addrspacecast ({}* inttoptr (i64 4630038208 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4692602000 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959616 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %48, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959648 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %49, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959680 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %50, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959648 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %51, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4663959712 to {}*) to {} addrspace(10)*), {} addrspace(10)* nonnull %53), !dbg !105 - {}
val:   %38 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %37, i64 3, !dbg !101 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer}
val:   br i1 %or.cond, label %L59, label %L61, !dbg !100 - {}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %70) - {}
val:   %75 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 3, !dbg !144 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer}
val:   %76 = bitcast {} addrspace(10)* addrspace(11)* %75 to i64 addrspace(11)*, !dbg !144 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer}
val:   %45 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %37, i64 4, !dbg !103 - {}
val:   %48 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %21), !dbg !105 - {}
val:   %26 = select i1 %.not52, i64 3, i64 4, !dbg !93 - {[-1]:Integer}

val:   %29 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 %26, !dbg !93 - {[-1]:Pointer}

val:   %90 = call nonnull align 8 {}* @julia.pointer_from_objref({} addrspace(11)* %89) #7, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %94 = call nonnull align 8 {}* @julia.pointer_from_objref({} addrspace(11)* %93) #7, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %16 = select i1 %.not, i64 3, i64 4, !dbg !80 - {[-1]:Integer}
val:   %17 = bitcast {} addrspace(10)* %1 to {} addrspace(10)* addrspace(10)*, !dbg !80 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %19 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 %16, !dbg !80 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %23 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 %22, !dbg !88 - {[-1]:Pointer}
val:   br i1 %59, label %L83, label %L90, !dbg !133 - {}
val:   %44 = phi i64 [ %21, %L59 ], [ %40, %top ], !dbg !103 - {[-1]:Integer}
val:   %79 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 3, !dbg !144 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer}
val:   %82 = select i1 %.not56, i64 1, i64 %81, !dbg !152 - {[-1]:Integer}
val:   store i64 %82, i64* %12, align 16, !dbg !120, !tbaa !140 - {}
val:   br i1 %56, label %L77, label %L72, !dbg !116 - {}
val:   %58 = call fastcc i32 @julia_UInt32_1543(i32 zeroext 1308622848), !dbg !116 - {[-1]:Anything}
val:   %32 = select i1 %.not52, i64 4, i64 3, !dbg !94 - {[-1]:Integer}
val:   %33 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %28, i64 %32, !dbg !94 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %72) - {}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %71) - {}
val:   %84 = select i1 %.not57, i64 1, i64 %21, !dbg !152 - {[-1]:Integer}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %66) - {}
val:   %86 = call nonnull align 8 {}* @julia.pointer_from_objref({} addrspace(11)* %85) #7, !dbg !154 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val: double %0 - {[-1]:Float@double}
val: {} addrspace(10)* %1 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val: {} addrspace(10)* %2 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val: double %3 - {[-1]:Float@double}
val: {} addrspace(10)* %4 - {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer}
val:   %60 = call fastcc nonnull {} addrspace(10)* @julia_throw_inexacterror_1541(i32 zeroext %58) #11, !dbg !133 - {}
val:   %41 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %37, i64 4, !dbg !102 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer}
val:   br i1 %.not61, label %L68, label %L61, !dbg !100 - {}
val:   call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %5) - {}
val:   br i1 %61, label %L103, label %L98, !dbg !116 - {}
val:   call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %6) - {}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %73) - {}
val:   %78 = select i1 %.not55, i64 1, i64 %77, !dbg !152 - {[-1]:Integer}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %69) - {}
val:   %80 = bitcast {} addrspace(10)* addrspace(11)* %79 to i64 addrspace(11)*, !dbg !144 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer}
val:   %65 = call fastcc nonnull {} addrspace(10)* @julia_throw_inexacterror_1541(i32 zeroext %63) #11, !dbg !133 - {}
val:   %11 = alloca i64, align 16 - {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}
val:   %value_phi20.in = phi i32 [ %57, %L72 ], [ %58, %L77 ] - {[-1]:Anything}
val:   %53 = call noalias nonnull {} addrspace(10)* @julia.gc_alloc_obj(i8* %52, i64 16, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4629366288 to {}*) to {} addrspace(10)*)) #4, !dbg !105 - {}
val:   %54 = bitcast {} addrspace(10)* %53 to i8 addrspace(10)*, !dbg !105 - {}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %68) - {}
val:   call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %67) - {}
val:   %51 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %35), !dbg !105 - {}
val:   %.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8 addrspace(10)* %54, i64 8, !dbg !105 - {}
val:   %22 = select i1 %.not, i64 4, i64 3, !dbg !88 - {[-1]:Integer}
val:   %24 = bitcast {} addrspace(10)* addrspace(11)* %23 to i64 addrspace(11)*, !dbg !88 - {[-1]:Pointer}
val:   %49 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %25), !dbg !105 - {}
val:   %50 = call nonnull {} addrspace(10)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*)(i64 signext %31), !dbg !105 - {}
val:   %63 = call fastcc i32 @julia_UInt32_1543(i32 zeroext 1308622848), !dbg !116 - {[-1]:Anything}
val:   br i1 %64, label %L109, label %L116, !dbg !133 - {}
val:   %value_phi21.in = phi i32 [ %62, %L98 ], [ %63, %L103 ] - {[-1]:Anything}
val: i32 1308622848 - {[-1]:Anything}
val: {}* inttoptr (i64 4629366288 to {}*) - {[-1]:Anything}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4629366288 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
val: i64 4 - {[-1]:Integer}
val: i64 3 - {[-1]:Integer}
val: i32 24 - {[-1]:Integer}
val: i32 0 - {[-1]:Anything}
val: {} addrspace(10)* undef - {[-1]:Anything}
val: ; Function Attrs: inaccessiblememonly
define internal noalias nonnull align 8 dereferenceable(8) {}* @jl_box_int64(i64 signext %0) unnamed_addr #9 !dbg !874 {
top:
  %1 = call dereferenceable_or_null(16) i8* @malloc(i64 16), !dbg !875
  %2 = load i64, i64* bitcast ({}* ()* @jl_int64_type to i64*), align 4, !dbg !882
  %3 = or i64 %2, 3, !dbg !888
  %4 = bitcast i8* %1 to i64*, !dbg !887
  store i64 %3, i64* %4, align 8, !dbg !887, !tbaa !869
  %5 = getelementptr i8, i8* %1, i64 8, !dbg !891
  %6 = bitcast i8* %5 to i64*, !dbg !894
  store i64 %0, i64* %6, align 8, !dbg !894, !tbaa !869
  %7 = bitcast i8* %5 to {}*, !dbg !895
  ret {}* %7, !dbg !881
}
 - {[-1]:Pointer}
val: {} addrspace(10)* (i64)* bitcast ({}* (i64)* @jl_box_int64 to {} addrspace(10)* (i64)*) - {[-1]:Pointer}
val:   call void @dgemm_64_(i8* nonnull %5, i8* nonnull %6, i8* nonnull %73, i8* nonnull %72, i8* nonnull %71, i8* nonnull %70, i64 %88, i8* nonnull %69, i64 %92, i8* nonnull %68, i8* nonnull %67, i64 %96, i8* nonnull %66, i64 1, i64 1) [ "jl_roots"({} addrspace(10)* null, {} addrspace(10)* %4, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* %2, {} addrspace(10)* null, {} addrspace(10)* %1, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null, {} addrspace(10)* null) ], !dbg !129 - {}
val: i64 0 - {[-1]:Anything}
val: i64 1 - {[-1]:Integer}
val: {}* inttoptr (i64 4692602000 to {}*) - {[-1]:Anything}
val: {} addrspace(10)* addrspacecast ({}* inttoptr (i64 4692602000 to {}*) to {} addrspace(10)*) - {[-1]:Anything}
could not deduce type of integer   %31 = load i64, i64 addrspace(11)* %30, align 8, !dbg !93, !tbaa !83, !range !87, !invariant.load !4
Assertion failed: (0 && "could not deduce type of integer"), function intType, file /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis/TypeAnalysis.cpp, line 4127.

from enzyme.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.