; LLVM IR from OAID/AutoKernel :: AutoSearch/src/adams2019 (FunctionDAG)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.64" }
%"struct.Halide::Internal::IntrusivePtr.64" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Halide::Internal::Voidifier" = type { i8 }
%"struct.Halide::Internal::ErrorReport" = type <{ %"class.std::__cxx11::basic_ostringstream", i32, [4 x i8] }>
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.Halide::Internal::aslog" = type { i8 }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo" = type <{ %"struct.Halide::Expr", i64, i64, i64, i8, i8, [6 x i8] }>
%"struct.Halide::Internal::Add" = type { %"struct.Halide::Internal::ExprNode", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::ExprNode" = type { %"struct.Halide::Internal::BaseExprNode" }
%"struct.Halide::Internal::BaseExprNode" = type { %"struct.Halide::Internal::IRNode", %"struct.Halide::Type" }
%"struct.Halide::Internal::IRNode" = type { ptr, %"class.Halide::Internal::RefCount", i32 }
%"class.Halide::Internal::RefCount" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"struct.Halide::Type" = type { %struct.halide_type_t, ptr }
%struct.halide_type_t = type { i8, i8, i16 }
%"struct.Halide::Internal::Mul" = type { %"struct.Halide::Internal::ExprNode.76", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::ExprNode.76" = type { %"struct.Halide::Internal::BaseExprNode" }
%"struct.Halide::Internal::IntImm" = type { %"struct.Halide::Internal::ExprNode.77", i64 }
%"struct.Halide::Internal::ExprNode.77" = type { %"struct.Halide::Internal::BaseExprNode" }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage" = type { ptr, i32, %"class.std::vector.46", i8, i32, %"struct.Halide::Internal::PipelineFeatures", %"class.Halide::Stage", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.39", %"class.std::vector.57" }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.47" }
%"struct.std::_Vector_base.47" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::PipelineFeatures" = type { [7 x i32], [24 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]] }
%"class.Halide::Stage" = type { %"class.Halide::Internal::Function", %"class.Halide::Internal::Definition", i64, %"class.std::vector.52" }
%"class.Halide::Internal::Function" = type { %"struct.Halide::Internal::FunctionPtr" }
%"struct.Halide::Internal::FunctionPtr" = type <{ %"struct.Halide::Internal::IntrusivePtr", ptr, i32, [4 x i8] }>
%"struct.Halide::Internal::IntrusivePtr" = type { ptr }
%"class.Halide::Internal::Definition" = type { %"struct.Halide::Internal::IntrusivePtr.51" }
%"struct.Halide::Internal::IntrusivePtr.51" = type { ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.57" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.Halide::Internal::Variable" = type { %"struct.Halide::Internal::ExprNode.78", %"class.std::__cxx11::basic_string", %"class.Halide::Internal::Parameter", %"class.Halide::Buffer", %"class.Halide::Internal::ReductionDomain" }
%"struct.Halide::Internal::ExprNode.78" = type { %"struct.Halide::Internal::BaseExprNode" }
%"class.Halide::Internal::Parameter" = type { ptr, %"struct.Halide::Internal::IntrusivePtr.79" }
%"struct.Halide::Internal::IntrusivePtr.79" = type { ptr }
%"class.Halide::Buffer" = type { ptr, %"struct.Halide::Internal::IntrusivePtr.80" }
%"struct.Halide::Internal::IntrusivePtr.80" = type { ptr }
%"class.Halide::Internal::ReductionDomain" = type { %"struct.Halide::Internal::IntrusivePtr.81" }
%"struct.Halide::Internal::IntrusivePtr.81" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node" = type { ptr, %"class.Halide::Internal::Function", double, %"class.std::vector.19", %"class.std::vector.24", %"class.std::vector.29", i8, %"class.std::vector.34", %"class.std::vector.39", i32, i32, i32, i32, i8, i8, i8, i8, i8, %"class.std::unique_ptr" }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.45" }
%"struct.std::_Head_base.45" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop" = type { %"class.std::__cxx11::basic_string", i8, i8, %"struct.Halide::Expr", %"struct.Halide::Expr", i32, i8, i32, i8, i64, i64, %"class.std::__cxx11::basic_string" }

@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [22 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA4_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(4)) #1 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA5_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(5)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(2)) #1 align 2

declare void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

declare void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380)) unnamed_addr #2

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #3

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(380)) #4 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(2)) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC2ERKNS_4ExprERKNS2_4Node5StageE(ptr noundef nonnull align 8 dereferenceable(34) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(1368) %2) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"struct.Halide::Expr", align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.Halide::Internal::Voidifier", align 1
  %26 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %27 = alloca i1, align 1
  %28 = alloca i1, align 1
  %29 = alloca %"class.Halide::Internal::aslog", align 1
  %30 = alloca %"class.Halide::Internal::aslog", align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %31 = load ptr, ptr %4, align 8
  %32 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 0
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %34 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 0
  %35 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3AddEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %36 unwind label %101

36:                                               ; preds = %3
  store ptr %35, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  %37 = load ptr, ptr %7, align 8, !tbaa !5
  %38 = icmp ne ptr %37, null
  br i1 %38, label %39, label %44

39:                                               ; preds = %36
  %40 = load ptr, ptr %7, align 8, !tbaa !5
  %41 = getelementptr inbounds %"struct.Halide::Internal::Add", ptr %40, i32 0, i32 1
  %42 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MulEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %43 unwind label %105

43:                                               ; preds = %39
  br label %48

44:                                               ; preds = %36
  %45 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 0
  %46 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MulEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %47 unwind label %105

47:                                               ; preds = %44
  br label %48

48:                                               ; preds = %47, %43
  %49 = phi ptr [ %42, %43 ], [ %46, %47 ]
  store ptr %49, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %50 = load ptr, ptr %10, align 8, !tbaa !5
  %51 = icmp ne ptr %50, null
  br i1 %51, label %52, label %57

52:                                               ; preds = %48
  %53 = load ptr, ptr %10, align 8, !tbaa !5
  %54 = getelementptr inbounds %"struct.Halide::Internal::Mul", ptr %53, i32 0, i32 2
  %55 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %56 unwind label %109

56:                                               ; preds = %52
  br label %58

57:                                               ; preds = %48
  br label %58

58:                                               ; preds = %57, %56
  %59 = phi ptr [ %55, %56 ], [ null, %57 ]
  store ptr %59, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %60 = load ptr, ptr %7, align 8, !tbaa !5
  %61 = icmp ne ptr %60, null
  br i1 %61, label %62, label %67

62:                                               ; preds = %58
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.Halide::Internal::Add", ptr %63, i32 0, i32 2
  %65 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %66 unwind label %113

66:                                               ; preds = %62
  br label %68

67:                                               ; preds = %58
  br label %68

68:                                               ; preds = %67, %66
  %69 = phi ptr [ %65, %66 ], [ null, %67 ]
  store ptr %69, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  %71 = icmp ne ptr %70, null
  br i1 %71, label %72, label %75

72:                                               ; preds = %68
  %73 = load ptr, ptr %10, align 8, !tbaa !5
  %74 = getelementptr inbounds %"struct.Halide::Internal::Mul", ptr %73, i32 0, i32 1
  br label %85

75:                                               ; preds = %68
  %76 = load ptr, ptr %7, align 8, !tbaa !5
  %77 = icmp ne ptr %76, null
  br i1 %77, label %78, label %81

78:                                               ; preds = %75
  %79 = load ptr, ptr %7, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.Halide::Internal::Add", ptr %79, i32 0, i32 1
  br label %83

81:                                               ; preds = %75
  %82 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 0
  br label %83

83:                                               ; preds = %81, %78
  %84 = phi ptr [ %80, %78 ], [ %82, %81 ]
  br label %85

85:                                               ; preds = %83, %72
  %86 = phi ptr [ %74, %72 ], [ %84, %83 ]
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %87 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_8VariableEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %88 unwind label %117

88:                                               ; preds = %85
  store ptr %87, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %89 = load ptr, ptr %5, align 8, !tbaa !5
  %90 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %91 unwind label %121

91:                                               ; preds = %88
  store ptr %90, ptr %15, align 8, !tbaa !5
  %92 = load ptr, ptr %15, align 8, !tbaa !5
  %93 = icmp ne ptr %92, null
  br i1 %93, label %94, label %125

94:                                               ; preds = %91
  %95 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 4
  store i8 1, ptr %95, align 8, !tbaa !9
  %96 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 1
  store i64 0, ptr %96, align 8, !tbaa !16
  %97 = load ptr, ptr %15, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.Halide::Internal::IntImm", ptr %97, i32 0, i32 1
  %99 = load i64, ptr %98, align 8, !tbaa !17
  %100 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 2
  store i64 %99, ptr %100, align 8, !tbaa !31
  br label %339

101:                                              ; preds = %3
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %8, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %9, align 4
  br label %345

105:                                              ; preds = %44, %39
  %106 = landingpad { ptr, i32 }
          cleanup
  %107 = extractvalue { ptr, i32 } %106, 0
  store ptr %107, ptr %8, align 8
  %108 = extractvalue { ptr, i32 } %106, 1
  store i32 %108, ptr %9, align 4
  br label %344

109:                                              ; preds = %52
  %110 = landingpad { ptr, i32 }
          cleanup
  %111 = extractvalue { ptr, i32 } %110, 0
  store ptr %111, ptr %8, align 8
  %112 = extractvalue { ptr, i32 } %110, 1
  store i32 %112, ptr %9, align 4
  br label %343

113:                                              ; preds = %62
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %8, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %9, align 4
  br label %342

117:                                              ; preds = %85
  %118 = landingpad { ptr, i32 }
          cleanup
  %119 = extractvalue { ptr, i32 } %118, 0
  store ptr %119, ptr %8, align 8
  %120 = extractvalue { ptr, i32 } %118, 1
  store i32 %120, ptr %9, align 4
  br label %341

121:                                              ; preds = %88
  %122 = landingpad { ptr, i32 }
          cleanup
  %123 = extractvalue { ptr, i32 } %122, 0
  store ptr %123, ptr %8, align 8
  %124 = extractvalue { ptr, i32 } %122, 1
  store i32 %124, ptr %9, align 4
  br label %340

125:                                              ; preds = %91
  %126 = load ptr, ptr %14, align 8, !tbaa !5
  %127 = icmp ne ptr %126, null
  br i1 %127, label %128, label %324

128:                                              ; preds = %125
  %129 = load ptr, ptr %10, align 8, !tbaa !5
  %130 = icmp ne ptr %129, null
  br i1 %130, label %131, label %134

131:                                              ; preds = %128
  %132 = load ptr, ptr %11, align 8, !tbaa !5
  %133 = icmp ne ptr %132, null
  br i1 %133, label %134, label %324

134:                                              ; preds = %131, %128
  %135 = load ptr, ptr %7, align 8, !tbaa !5
  %136 = icmp ne ptr %135, null
  br i1 %136, label %137, label %140

137:                                              ; preds = %134
  %138 = load ptr, ptr %12, align 8, !tbaa !5
  %139 = icmp ne ptr %138, null
  br i1 %139, label %140, label %324

140:                                              ; preds = %137, %134
  %141 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 4
  store i8 1, ptr %141, align 8, !tbaa !9
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = icmp ne ptr %142, null
  br i1 %143, label %144, label %148

144:                                              ; preds = %140
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.Halide::Internal::IntImm", ptr %145, i32 0, i32 1
  %147 = load i64, ptr %146, align 8, !tbaa !17
  br label %149

148:                                              ; preds = %140
  br label %149

149:                                              ; preds = %148, %144
  %150 = phi i64 [ %147, %144 ], [ 1, %148 ]
  %151 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 1
  store i64 %150, ptr %151, align 8, !tbaa !16
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = icmp ne ptr %152, null
  br i1 %153, label %154, label %158

154:                                              ; preds = %149
  %155 = load ptr, ptr %12, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.Halide::Internal::IntImm", ptr %155, i32 0, i32 1
  %157 = load i64, ptr %156, align 8, !tbaa !17
  br label %159

158:                                              ; preds = %149
  br label %159

159:                                              ; preds = %158, %154
  %160 = phi i64 [ %157, %154 ], [ 0, %158 ]
  %161 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 2
  store i64 %160, ptr %161, align 8, !tbaa !31
  %162 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 3
  store i64 -1, ptr %162, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !33
  br label %163

163:                                              ; preds = %249, %159
  %164 = load i32, ptr %16, align 4, !tbaa !33
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %165, i32 0, i32 2
  %167 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #8
  %168 = trunc i64 %167 to i32
  %169 = icmp slt i32 %164, %168
  br i1 %169, label %171, label %170

170:                                              ; preds = %163
  store i32 2, ptr %17, align 4
  br label %253

171:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %172 = load ptr, ptr %6, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %172, i32 0, i32 2
  %174 = load i32, ptr %16, align 4, !tbaa !33
  %175 = sext i32 %174 to i64
  %176 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %175) #8
  store ptr %176, ptr %18, align 8, !tbaa !5
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.Halide::Internal::Variable", ptr %177, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #8
  %179 = load ptr, ptr %6, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %179, i32 0, i32 0
  %181 = load ptr, ptr %180, align 8, !tbaa !34
  %182 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %181, i32 0, i32 1
  %183 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %182)
          to label %184 unwind label %196

184:                                              ; preds = %171
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef @.str.23)
          to label %185 unwind label %196

185:                                              ; preds = %184
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %186, i32 0, i32 0
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %187)
          to label %188 unwind label %200

188:                                              ; preds = %185
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.24)
          to label %189 unwind label %204

189:                                              ; preds = %188
  %190 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br i1 %190, label %191, label %210

191:                                              ; preds = %189
  %192 = load i32, ptr %16, align 4, !tbaa !33
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 3
  store i64 %193, ptr %194, align 8, !tbaa !32
  %195 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 5
  store i8 0, ptr %195, align 1, !tbaa !63
  store i32 2, ptr %17, align 4
  br label %246

196:                                              ; preds = %184, %171
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %8, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %9, align 4
  br label %209

200:                                              ; preds = %185
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %8, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %9, align 4
  br label %208

204:                                              ; preds = %188
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %8, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  br label %208

208:                                              ; preds = %204, %200
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  br label %209

209:                                              ; preds = %208, %196
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %252

210:                                              ; preds = %189
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.Halide::Internal::Variable", ptr %211, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #8
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %213, i32 0, i32 0
  %215 = load ptr, ptr %214, align 8, !tbaa !34
  %216 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %215, i32 0, i32 1
  %217 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %216)
          to label %218 unwind label %230

218:                                              ; preds = %210
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef @.str.23)
          to label %219 unwind label %230

219:                                              ; preds = %218
  %220 = load ptr, ptr %18, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %220, i32 0, i32 0
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %221)
          to label %222 unwind label %234

222:                                              ; preds = %219
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef @.str.25)
          to label %223 unwind label %238

223:                                              ; preds = %222
  %224 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %212, ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br i1 %224, label %225, label %244

225:                                              ; preds = %223
  %226 = load i32, ptr %16, align 4, !tbaa !33
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 3
  store i64 %227, ptr %228, align 8, !tbaa !32
  %229 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 5
  store i8 1, ptr %229, align 1, !tbaa !63
  store i32 2, ptr %17, align 4
  br label %246

230:                                              ; preds = %218, %210
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %8, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %9, align 4
  br label %243

234:                                              ; preds = %219
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %8, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %9, align 4
  br label %242

238:                                              ; preds = %222
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %8, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %242

242:                                              ; preds = %238, %234
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %243

243:                                              ; preds = %242, %230
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %252

244:                                              ; preds = %223
  br label %245

245:                                              ; preds = %244
  store i32 0, ptr %17, align 4
  br label %246

246:                                              ; preds = %245, %225, %191
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  %247 = load i32, ptr %17, align 4
  switch i32 %247, label %253 [
    i32 0, label %248
  ]

248:                                              ; preds = %246
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %16, align 4, !tbaa !33
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %16, align 4, !tbaa !33
  br label %163, !llvm.loop !64

252:                                              ; preds = %243, %209
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %340

253:                                              ; preds = %246, %170
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %254

254:                                              ; preds = %253
  %255 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 3
  %256 = load i64, ptr %255, align 8, !tbaa !32
  %257 = icmp sge i64 %256, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #8
  store i1 false, ptr %27, align 1
  store i1 false, ptr %28, align 1
  br i1 %257, label %258, label %259

258:                                              ; preds = %254
  br label %272

259:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 384, ptr %26) #8
  store i1 true, ptr %27, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %26, ptr noundef @.str.14, i32 noundef 489, ptr noundef @.str.26, i32 noundef 0)
          to label %260 unwind label %304

260:                                              ; preds = %259
  store i1 true, ptr %28, align 1
  %261 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %26)
          to label %262 unwind label %308

262:                                              ; preds = %260
  %263 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA40_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %261, ptr noundef nonnull align 1 dereferenceable(40) @.str.27)
          to label %264 unwind label %308

264:                                              ; preds = %262
  %265 = load ptr, ptr %14, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.Halide::Internal::Variable", ptr %265, i32 0, i32 1
  %267 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %263, ptr noundef nonnull align 8 dereferenceable(32) %266)
          to label %268 unwind label %308

268:                                              ; preds = %264
  %269 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %267, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %270 unwind label %308

270:                                              ; preds = %268
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 8 dereferenceable(380) %269)
          to label %271 unwind label %308

271:                                              ; preds = %270
  br label %272

272:                                              ; preds = %271, %258
  %273 = load i1, ptr %28, align 1
  br i1 %273, label %274, label %276

274:                                              ; preds = %272
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %26)
          to label %275 unwind label %304

275:                                              ; preds = %274
  br label %276

276:                                              ; preds = %275, %272
  %277 = load i1, ptr %27, align 1
  br i1 %277, label %278, label %279

278:                                              ; preds = %276
  call void @llvm.lifetime.end.p0(i64 384, ptr %26) #8
  br label %279

279:                                              ; preds = %278, %276
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  invoke void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1) %29, i32 noundef 2)
          to label %280 unwind label %320

280:                                              ; preds = %279
  %281 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA18_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 1 dereferenceable(18) @.str.28)
          to label %282 unwind label %320

282:                                              ; preds = %280
  %283 = load ptr, ptr %5, align 8, !tbaa !5
  %284 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNS_4ExprEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %281, ptr noundef nonnull align 8 dereferenceable(8) %283)
          to label %285 unwind label %320

285:                                              ; preds = %282
  %286 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA5_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %284, ptr noundef nonnull align 1 dereferenceable(5) @.str.29)
          to label %287 unwind label %320

287:                                              ; preds = %285
  %288 = load ptr, ptr %14, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.Halide::Internal::Variable", ptr %288, i32 0, i32 1
  %290 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %286, ptr noundef nonnull align 8 dereferenceable(32) %289)
          to label %291 unwind label %320

291:                                              ; preds = %287
  %292 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA4_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %290, ptr noundef nonnull align 1 dereferenceable(4) @.str.30)
          to label %293 unwind label %320

293:                                              ; preds = %291
  %294 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 1
  %295 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRlEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %292, ptr noundef nonnull align 8 dereferenceable(8) %294)
          to label %296 unwind label %320

296:                                              ; preds = %293
  %297 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA4_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %295, ptr noundef nonnull align 1 dereferenceable(4) @.str.31)
          to label %298 unwind label %320

298:                                              ; preds = %296
  %299 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 2
  %300 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRlEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %297, ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %301 unwind label %320

301:                                              ; preds = %298
  %302 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %300, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %303 unwind label %320

303:                                              ; preds = %301
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  br label %338

304:                                              ; preds = %274, %259
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %8, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %9, align 4
  br label %316

308:                                              ; preds = %270, %268, %264, %262, %260
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %8, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %9, align 4
  %312 = load i1, ptr %28, align 1
  br i1 %312, label %313, label %315

313:                                              ; preds = %308
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %26)
          to label %314 unwind label %351

314:                                              ; preds = %313
  br label %315

315:                                              ; preds = %314, %308
  br label %316

316:                                              ; preds = %315, %304
  %317 = load i1, ptr %27, align 1
  br i1 %317, label %318, label %319

318:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 384, ptr %26) #8
  br label %319

319:                                              ; preds = %318, %316
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #8
  br label %340

320:                                              ; preds = %301, %298, %296, %293, %291, %287, %285, %282, %280, %279
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %8, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  br label %340

324:                                              ; preds = %137, %131, %125
  %325 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %31, i32 0, i32 4
  store i8 0, ptr %325, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  invoke void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1) %30, i32 noundef 2)
          to label %326 unwind label %334

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA22_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 1 dereferenceable(22) @.str.32)
          to label %328 unwind label %334

328:                                              ; preds = %326
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNS_4ExprEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %327, ptr noundef nonnull align 8 dereferenceable(8) %329)
          to label %331 unwind label %334

331:                                              ; preds = %328
  %332 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %330, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %333 unwind label %334

333:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %338

334:                                              ; preds = %331, %328, %326, %324
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %8, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  br label %340

338:                                              ; preds = %333, %303
  br label %339

339:                                              ; preds = %338, %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  ret void

340:                                              ; preds = %334, %320, %319, %252, %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %341

341:                                              ; preds = %340, %117
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %342

342:                                              ; preds = %341, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %343

343:                                              ; preds = %342, %109
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %344

344:                                              ; preds = %343, %105
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %345

345:                                              ; preds = %344, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br label %346

346:                                              ; preds = %345
  %347 = load ptr, ptr %8, align 8
  %348 = load i32, ptr %9, align 4
  %349 = insertvalue { ptr, i32 } poison, ptr %347, 0
  %350 = insertvalue { ptr, i32 } %349, i32 %348, 1
  resume { ptr, i32 } %350

351:                                              ; preds = %313
  %352 = landingpad { ptr, i32 }
          catch ptr null
  %353 = extractvalue { ptr, i32 } %352, 0
  call void @__clang_call_terminate(ptr %353) #9
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3AddEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MulEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_8VariableEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #7

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA40_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(40)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA18_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(18)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNS_4ExprEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRlEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA22_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(22)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !15, i64 32}
!10 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoE", !11, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !15, i64 32, !15, i64 33}
!11 = !{!"_ZTSN6Halide4ExprE", !12, i64 0}
!12 = !{!"_ZTSN6Halide8Internal8IRHandleE", !13, i64 0}
!13 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!10, !14, i64 8}
!17 = !{!18, !14, i64 32}
!18 = !{!"_ZTSN6Halide8Internal6IntImmE", !19, i64 0, !14, i64 32}
!19 = !{!"_ZTSN6Halide8Internal8ExprNodeINS0_6IntImmEEE", !20, i64 0}
!20 = !{!"_ZTSN6Halide8Internal12BaseExprNodeE", !21, i64 0, !27, i64 16}
!21 = !{!"_ZTSN6Halide8Internal6IRNodeE", !22, i64 8, !26, i64 12}
!22 = !{!"_ZTSN6Halide8Internal8RefCountE", !23, i64 0}
!23 = !{!"_ZTSSt6atomicIiE", !24, i64 0}
!24 = !{!"_ZTSSt13__atomic_baseIiE", !25, i64 0}
!25 = !{!"int", !7, i64 0}
!26 = !{!"_ZTSN6Halide8Internal10IRNodeTypeE", !7, i64 0}
!27 = !{!"_ZTSN6Halide4TypeE", !28, i64 0, !6, i64 8}
!28 = !{!"_ZTS13halide_type_t", !29, i64 0, !7, i64 1, !30, i64 2}
!29 = !{!"_ZTS18halide_type_code_t", !7, i64 0}
!30 = !{!"short", !7, i64 0}
!31 = !{!10, !14, i64 16}
!32 = !{!10, !14, i64 24}
!33 = !{!25, !25, i64 0}
!34 = !{!35, !6, i64 0}
!35 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !6, i64 0, !25, i64 8, !36, i64 16, !15, i64 40, !25, i64 44, !40, i64 48, !41, i64 1200, !51, i64 1264, !25, i64 1296, !25, i64 1300, !53, i64 1304, !57, i64 1328}
!36 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!41 = !{!"_ZTSN6Halide5StageE", !42, i64 0, !45, i64 24, !14, i64 32, !47, i64 40}
!42 = !{!"_ZTSN6Halide8Internal8FunctionE", !43, i64 0}
!43 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !44, i64 0, !6, i64 8, !25, i64 16}
!44 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !6, i64 0}
!45 = !{!"_ZTSN6Halide8Internal10DefinitionE", !46, i64 0}
!46 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !6, i64 0}
!47 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !52, i64 0, !14, i64 8, !7, i64 16}
!52 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!53 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt6vectorIbSaIbEE", !58, i64 0}
!58 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !59, i64 0}
!59 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !61, i64 0, !61, i64 16, !6, i64 32}
!61 = !{!"_ZTSSt13_Bit_iterator", !62, i64 0}
!62 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !25, i64 8}
!63 = !{!10, !15, i64 33}
!64 = distinct !{!64, !65}
!65 = !{!"llvm.loop.mustprogress"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.64" }
%"struct.Halide::Internal::IntrusivePtr.64" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Halide::Internal::Voidifier" = type { i8 }
%"struct.Halide::Internal::ErrorReport" = type <{ %"class.std::__cxx11::basic_ostringstream", i32, [4 x i8] }>
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.Halide::Internal::aslog" = type { i8 }

@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [22 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA4_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA5_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(5)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #1 align 2

declare void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

declare void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380)) unnamed_addr #2

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #3

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(380)) local_unnamed_addr #4 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC2ERKNS_4ExprERKNS2_4Node5StageE(ptr noundef nonnull align 8 dereferenceable(34) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(1368) %2) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.Halide::Expr", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.Halide::Internal::Voidifier", align 1
  %12 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %13 = alloca %"class.Halide::Internal::aslog", align 1
  %14 = alloca %"class.Halide::Internal::aslog", align 1
  tail call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %1) #8
  %15 = tail call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3AddEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %0)
  %.not = icmp eq ptr %15, null
  %16 = getelementptr inbounds i8, ptr %15, i64 32
  %.sink = select i1 %.not, ptr %0, ptr %16
  %17 = tail call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MulEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %.sink)
  %.not69 = icmp eq ptr %17, null
  br i1 %.not69, label %21, label %18

18:                                               ; preds = %3
  %19 = getelementptr inbounds i8, ptr %17, i64 40
  %20 = tail call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %19)
  br label %21

21:                                               ; preds = %3, %18
  %22 = phi ptr [ %20, %18 ], [ null, %3 ]
  br i1 %.not, label %26, label %23

23:                                               ; preds = %21
  %24 = getelementptr inbounds i8, ptr %15, i64 40
  %25 = tail call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %24)
  br label %26

26:                                               ; preds = %21, %23
  %27 = phi ptr [ %25, %23 ], [ null, %21 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  %28 = getelementptr inbounds i8, ptr %17, i64 32
  %29 = getelementptr inbounds i8, ptr %15, i64 32
  %30 = select i1 %.not, ptr %0, ptr %29
  %31 = select i1 %.not69, ptr %30, ptr %28
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  %32 = call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_8VariableEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %33 = call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %.not70 = icmp eq ptr %33, null
  br i1 %.not70, label %40, label %34

34:                                               ; preds = %26
  %35 = getelementptr inbounds i8, ptr %0, i64 32
  store i8 1, ptr %35, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 0, ptr %36, align 8, !tbaa !15
  %37 = getelementptr inbounds i8, ptr %33, i64 32
  %38 = load i64, ptr %37, align 8, !tbaa !16
  %39 = getelementptr inbounds i8, ptr %0, i64 16
  store i64 %38, ptr %39, align 8, !tbaa !30
  br label %151

40:                                               ; preds = %26
  %.not71 = icmp ne ptr %32, null
  %41 = icmp ne ptr %22, null
  %or.cond = or i1 %.not69, %41
  %or.cond85 = and i1 %or.cond, %.not71
  %42 = icmp ne ptr %27, null
  %or.cond3 = or i1 %.not, %42
  %or.cond86 = and i1 %or.cond3, %or.cond85
  %43 = getelementptr inbounds i8, ptr %0, i64 32
  br i1 %or.cond86, label %44, label %141

44:                                               ; preds = %40
  store i8 1, ptr %43, align 8, !tbaa !5
  br i1 %.not69, label %48, label %45

45:                                               ; preds = %44
  %46 = getelementptr inbounds i8, ptr %22, i64 32
  %47 = load i64, ptr %46, align 8, !tbaa !16
  br label %48

48:                                               ; preds = %44, %45
  %49 = phi i64 [ %47, %45 ], [ 1, %44 ]
  %50 = getelementptr inbounds i8, ptr %0, i64 8
  store i64 %49, ptr %50, align 8, !tbaa !15
  br i1 %.not, label %54, label %51

51:                                               ; preds = %48
  %52 = getelementptr inbounds i8, ptr %27, i64 32
  %53 = load i64, ptr %52, align 8, !tbaa !16
  br label %54

54:                                               ; preds = %48, %51
  %55 = phi i64 [ %53, %51 ], [ 0, %48 ]
  %56 = getelementptr inbounds i8, ptr %0, i64 16
  store i64 %55, ptr %56, align 8, !tbaa !30
  %57 = getelementptr inbounds i8, ptr %0, i64 24
  store i64 -1, ptr %57, align 8, !tbaa !31
  %58 = getelementptr inbounds i8, ptr %2, i64 16
  %59 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  %60 = trunc i64 %59 to i32
  %61 = icmp sgt i32 %60, 0
  br i1 %61, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %54
  %62 = getelementptr inbounds i8, ptr %32, i64 32
  br label %67

63:                                               ; preds = %92
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %64 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  %sext = shl i64 %64, 32
  %65 = ashr exact i64 %sext, 32
  %66 = icmp slt i64 %indvars.iv.next, %65
  br i1 %66, label %67, label %.critedge, !llvm.loop !32

67:                                               ; preds = %.lr.ph, %63
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %63 ]
  %68 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %indvars.iv) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  %69 = load ptr, ptr %2, align 8, !tbaa !34
  %70 = getelementptr inbounds i8, ptr %69, i64 8
  %71 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %70)
          to label %72 unwind label %77

72:                                               ; preds = %67
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull @.str.23)
          to label %73 unwind label %77

73:                                               ; preds = %72
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %74 unwind label %79

74:                                               ; preds = %73
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.24)
          to label %75 unwind label %81

75:                                               ; preds = %74
  %76 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  br i1 %76, label %.critedge.thread, label %85

77:                                               ; preds = %72, %67
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %84

79:                                               ; preds = %73
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %83

81:                                               ; preds = %74
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %83

83:                                               ; preds = %81, %79
  %.pn = phi { ptr, i32 } [ %82, %81 ], [ %80, %79 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %84

84:                                               ; preds = %83, %77
  %.pn.pn = phi { ptr, i32 } [ %.pn, %83 ], [ %78, %77 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  br label %152

85:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  %86 = load ptr, ptr %2, align 8, !tbaa !34
  %87 = getelementptr inbounds i8, ptr %86, i64 8
  %88 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %87)
          to label %89 unwind label %94

89:                                               ; preds = %85
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull @.str.23)
          to label %90 unwind label %94

90:                                               ; preds = %89
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %91 unwind label %96

91:                                               ; preds = %90
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.25)
          to label %92 unwind label %98

92:                                               ; preds = %91
  %93 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br i1 %93, label %.critedge.thread, label %63

94:                                               ; preds = %89, %85
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %101

96:                                               ; preds = %90
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %100

98:                                               ; preds = %91
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %100

100:                                              ; preds = %98, %96
  %.pn74 = phi { ptr, i32 } [ %99, %98 ], [ %97, %96 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %101

101:                                              ; preds = %100, %94
  %.pn74.pn = phi { ptr, i32 } [ %.pn74, %100 ], [ %95, %94 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  br label %152

.critedge.thread:                                 ; preds = %92, %75
  %.sink112 = phi i8 [ 0, %75 ], [ 1, %92 ]
  store i64 %indvars.iv, ptr %57, align 8, !tbaa !31
  %102 = getelementptr inbounds i8, ptr %0, i64 33
  store i8 %.sink112, ptr %102, align 1, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  br label %.critedge84

.critedge:                                        ; preds = %63, %54
  %.pr = load i64, ptr %57, align 8, !tbaa !31
  %103 = icmp slt i64 %.pr, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  br i1 %103, label %104, label %.critedge84

104:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %12) #8
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %12, ptr noundef nonnull @.str.14, i32 noundef 489, ptr noundef nonnull @.str.26, i32 noundef 0)
          to label %105 unwind label %134

105:                                              ; preds = %104
  %106 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %12)
  %107 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA40_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %106, ptr noundef nonnull align 1 dereferenceable(40) @.str.27)
          to label %108 unwind label %136

108:                                              ; preds = %105
  %109 = getelementptr inbounds i8, ptr %32, i64 32
  %110 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %107, ptr noundef nonnull align 8 dereferenceable(32) %109)
          to label %111 unwind label %136

111:                                              ; preds = %108
  %112 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %110, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %113 unwind label %136

113:                                              ; preds = %111
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %11, ptr noundef nonnull align 8 dereferenceable(380) %112)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %12)
          to label %.critedge83 unwind label %134

.critedge83:                                      ; preds = %113
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %12) #8
  br label %.critedge84

.critedge84:                                      ; preds = %.critedge.thread, %.critedge, %.critedge83
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #8
  invoke void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1) %13, i32 noundef 2)
          to label %114 unwind label %139

114:                                              ; preds = %.critedge84
  %115 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA18_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull align 1 dereferenceable(18) @.str.28)
          to label %116 unwind label %139

116:                                              ; preds = %114
  %117 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNS_4ExprEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %115, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %118 unwind label %139

118:                                              ; preds = %116
  %119 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA5_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %117, ptr noundef nonnull align 1 dereferenceable(5) @.str.29)
          to label %120 unwind label %139

120:                                              ; preds = %118
  %121 = getelementptr inbounds i8, ptr %32, i64 32
  %122 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %119, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %123 unwind label %139

123:                                              ; preds = %120
  %124 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA4_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %122, ptr noundef nonnull align 1 dereferenceable(4) @.str.30)
          to label %125 unwind label %139

125:                                              ; preds = %123
  %126 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRlEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %124, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %127 unwind label %139

127:                                              ; preds = %125
  %128 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA4_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %126, ptr noundef nonnull align 1 dereferenceable(4) @.str.31)
          to label %129 unwind label %139

129:                                              ; preds = %127
  %130 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRlEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %128, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %131 unwind label %139

131:                                              ; preds = %129
  %132 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %130, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %133 unwind label %139

133:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #8
  br label %151

134:                                              ; preds = %113, %104
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %138

136:                                              ; preds = %111, %108, %105
  %137 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %12)
          to label %138 unwind label %153

138:                                              ; preds = %136, %134
  %.pn78 = phi { ptr, i32 } [ %135, %134 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  br label %152

139:                                              ; preds = %131, %129, %127, %125, %123, %120, %118, %116, %114, %.critedge84
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #8
  br label %152

141:                                              ; preds = %40
  store i8 0, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  invoke void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1) %14, i32 noundef 2)
          to label %142 unwind label %149

142:                                              ; preds = %141
  %143 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA22_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 1 dereferenceable(22) @.str.32)
          to label %144 unwind label %149

144:                                              ; preds = %142
  %145 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNS_4ExprEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %143, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %146 unwind label %149

146:                                              ; preds = %144
  %147 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %145, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %148 unwind label %149

148:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  br label %151

149:                                              ; preds = %146, %144, %142, %141
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  br label %152

151:                                              ; preds = %133, %148, %34
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  ret void

152:                                              ; preds = %84, %101, %149, %139, %138
  %.pn80 = phi { ptr, i32 } [ %140, %139 ], [ %.pn78, %138 ], [ %150, %149 ], [ %.pn74.pn, %101 ], [ %.pn.pn, %84 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #8
  resume { ptr, i32 } %.pn80

153:                                              ; preds = %136
  %154 = landingpad { ptr, i32 }
          catch ptr null
  %155 = extractvalue { ptr, i32 } %154, 0
  call void @__clang_call_terminate(ptr %155) #9
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3AddEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MulEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_6IntImmEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_8VariableEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #7

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA40_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(40)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA18_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(18)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNS_4ExprEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRlEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA22_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(22)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !14, i64 32}
!6 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoE", !7, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !14, i64 32, !14, i64 33}
!7 = !{!"_ZTSN6Halide4ExprE", !8, i64 0}
!8 = !{!"_ZTSN6Halide8Internal8IRHandleE", !9, i64 0}
!9 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !10, i64 0}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"long", !11, i64 0}
!14 = !{!"bool", !11, i64 0}
!15 = !{!6, !13, i64 8}
!16 = !{!17, !13, i64 32}
!17 = !{!"_ZTSN6Halide8Internal6IntImmE", !18, i64 0, !13, i64 32}
!18 = !{!"_ZTSN6Halide8Internal8ExprNodeINS0_6IntImmEEE", !19, i64 0}
!19 = !{!"_ZTSN6Halide8Internal12BaseExprNodeE", !20, i64 0, !26, i64 16}
!20 = !{!"_ZTSN6Halide8Internal6IRNodeE", !21, i64 8, !25, i64 12}
!21 = !{!"_ZTSN6Halide8Internal8RefCountE", !22, i64 0}
!22 = !{!"_ZTSSt6atomicIiE", !23, i64 0}
!23 = !{!"_ZTSSt13__atomic_baseIiE", !24, i64 0}
!24 = !{!"int", !11, i64 0}
!25 = !{!"_ZTSN6Halide8Internal10IRNodeTypeE", !11, i64 0}
!26 = !{!"_ZTSN6Halide4TypeE", !27, i64 0, !10, i64 8}
!27 = !{!"_ZTS13halide_type_t", !28, i64 0, !11, i64 1, !29, i64 2}
!28 = !{!"_ZTS18halide_type_code_t", !11, i64 0}
!29 = !{!"short", !11, i64 0}
!30 = !{!6, !13, i64 16}
!31 = !{!6, !13, i64 24}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!35, !10, i64 0}
!35 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !10, i64 0, !24, i64 8, !36, i64 16, !14, i64 40, !24, i64 44, !40, i64 48, !41, i64 1200, !51, i64 1264, !24, i64 1296, !24, i64 1300, !53, i64 1304, !57, i64 1328}
!36 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!40 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !11, i64 0, !11, i64 28, !11, i64 700, !11, i64 812, !11, i64 924, !11, i64 1036}
!41 = !{!"_ZTSN6Halide5StageE", !42, i64 0, !45, i64 24, !13, i64 32, !47, i64 40}
!42 = !{!"_ZTSN6Halide8Internal8FunctionE", !43, i64 0}
!43 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !44, i64 0, !10, i64 8, !24, i64 16}
!44 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !10, i64 0}
!45 = !{!"_ZTSN6Halide8Internal10DefinitionE", !46, i64 0}
!46 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !10, i64 0}
!47 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!51 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !52, i64 0, !13, i64 8, !11, i64 16}
!52 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!53 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!57 = !{!"_ZTSSt6vectorIbSaIbEE", !58, i64 0}
!58 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !59, i64 0}
!59 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !61, i64 0, !61, i64 16, !10, i64 32}
!61 = !{!"_ZTSSt13_Bit_iterator", !62, i64 0}
!62 = !{!"_ZTSSt18_Bit_iterator_base", !10, i64 0, !24, i64 8}
!63 = !{!6, !14, i64 33}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass