; LLVM IR from NVIDIA/DALI :: dali/operators/numba_function (numba_func_gpu)

; 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"

%"class.dali::span" = type { ptr, i64 }
%"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.std::allocator" = type { i8 }
%"struct.dali::TensorShape" = type { %"struct.dali::TensorShapeBase" }
%"struct.dali::TensorShapeBase" = type { %"class.dali::SmallVector.81" }
%"class.dali::SmallVector.81" = type { %union.anon.84, i64 }
%union.anon.84 = type { %struct.anon.85, [32 x i8] }
%struct.anon.85 = type { ptr, i64 }
%"struct.dali::NumbaDevArray" = type { ptr, ptr, i64, i64, ptr, %"class.dali::span.86", %"class.dali::span" }
%"class.dali::span.86" = type { ptr, i64 }
%"class.dali::NumbaFuncImpl" = type { %"class.dali::StatelessOperator", %"class.std::vector.31", %"class.std::vector.31", %"class.std::vector.36", %"class.std::vector.36", %"class.dali::SmallVector", %"class.dali::SmallVector", i64, i64, i8, %"class.dali::SmallVector.42", %"class.dali::SmallVector.42", %"class.dali::SmallVector.47", %"class.dali::SmallVector.47", %"class.std::vector.50", %"class.std::vector.50", %"class.std::vector.55", %"class.std::vector.55", %"class.std::vector.60", %"class.std::vector.60", %"class.std::vector.65", %"class.std::vector.65" }
%"class.dali::StatelessOperator" = type { %"class.dali::Operator" }
%"class.dali::Operator" = type { %"class.dali::OperatorBase" }
%"class.dali::OperatorBase" = type { ptr, %"class.dali::OpSpec", i32, i32, %"class.std::unordered_map" }
%"class.dali::OpSpec" = type { %"class.std::__cxx11::basic_string", ptr, %"class.std::vector", %"class.std::map", %"class.std::vector.6", %"class.std::map", %"class.std::map.11", %"class.std::vector.16", %"class.std::vector.16", %"class.std::map.21" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::shared_ptr<dali::Argument>, std::allocator<std::shared_ptr<dali::Argument>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::shared_ptr<dali::Argument>, std::allocator<std::shared_ptr<dali::Argument>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::shared_ptr<dali::Argument>, std::allocator<std::shared_ptr<dali::Argument>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::shared_ptr<dali::Argument>, std::allocator<std::shared_ptr<dali::Argument>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, int>, std::allocator<std::pair<std::__cxx11::basic_string<char>, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, int>, std::allocator<std::pair<std::__cxx11::basic_string<char>, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, int>, std::allocator<std::pair<std::__cxx11::basic_string<char>, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<std::__cxx11::basic_string<char>, int>, std::allocator<std::pair<std::__cxx11::basic_string<char>, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<void>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<void>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.11" = type { %"class.std::_Rb_tree.12" }
%"class.std::_Rb_tree.12" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<void>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<void>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<dali::OpSpec::InOutDeviceDesc, std::allocator<dali::OpSpec::InOutDeviceDesc>>::_Vector_impl" }
%"struct.std::_Vector_base<dali::OpSpec::InOutDeviceDesc, std::allocator<dali::OpSpec::InOutDeviceDesc>>::_Vector_impl" = type { %"struct.std::_Vector_base<dali::OpSpec::InOutDeviceDesc, std::allocator<dali::OpSpec::InOutDeviceDesc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<dali::OpSpec::InOutDeviceDesc, std::allocator<dali::OpSpec::InOutDeviceDesc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.21" = type { %"class.std::_Rb_tree.22" }
%"class.std::_Rb_tree.22" = type { %"struct.std::_Rb_tree<dali::OpSpec::InOutDeviceDesc, std::pair<const dali::OpSpec::InOutDeviceDesc, int>, std::_Select1st<std::pair<const dali::OpSpec::InOutDeviceDesc, int>>, std::less<void>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<dali::OpSpec::InOutDeviceDesc, std::pair<const dali::OpSpec::InOutDeviceDesc, int>, std::_Select1st<std::pair<const dali::OpSpec::InOutDeviceDesc, int>>, std::less<void>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.36" = type { %"struct.std::_Vector_base.37" }
%"struct.std::_Vector_base.37" = type { %"struct.std::_Vector_base<std::vector<void *>, std::allocator<std::vector<void *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<void *>, std::allocator<std::vector<void *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<void *>, std::allocator<std::vector<void *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<void *>, std::allocator<std::vector<void *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.dali::SmallVector" = type { %union.anon.41, i64 }
%union.anon.41 = type { %struct.anon }
%struct.anon = type { ptr, i64 }
%"class.dali::SmallVector.42" = type { %union.anon.45, i64 }
%union.anon.45 = type { %struct.anon.46, [8 x i8] }
%struct.anon.46 = type { ptr, i64 }
%"class.dali::SmallVector.47" = type { %union.anon.48, i64 }
%union.anon.48 = type { %struct.anon.49, [8 x i8] }
%struct.anon.49 = type { ptr, i64 }
%"class.std::vector.50" = type { %"struct.std::_Vector_base.51" }
%"struct.std::_Vector_base.51" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<dali::TensorListShape<DynamicDimensions>, std::allocator<dali::TensorListShape<DynamicDimensions>>>::_Vector_impl" }
%"struct.std::_Vector_base<dali::TensorListShape<DynamicDimensions>, std::allocator<dali::TensorListShape<DynamicDimensions>>>::_Vector_impl" = type { %"struct.std::_Vector_base<dali::TensorListShape<DynamicDimensions>, std::allocator<dali::TensorListShape<DynamicDimensions>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<dali::TensorListShape<DynamicDimensions>, std::allocator<dali::TensorListShape<DynamicDimensions>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<dali::TensorShape<DynamicDimensions>, std::allocator<dali::TensorShape<DynamicDimensions>>>::_Vector_impl" }
%"struct.std::_Vector_base<dali::TensorShape<DynamicDimensions>, std::allocator<dali::TensorShape<DynamicDimensions>>>::_Vector_impl" = type { %"struct.std::_Vector_base<dali::TensorShape<DynamicDimensions>, std::allocator<dali::TensorShape<DynamicDimensions>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<dali::TensorShape<DynamicDimensions>, std::allocator<dali::TensorShape<DynamicDimensions>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<dali::NumbaDevArray, std::allocator<dali::NumbaDevArray>>::_Vector_impl" }
%"struct.std::_Vector_base<dali::NumbaDevArray, std::allocator<dali::NumbaDevArray>>::_Vector_impl" = type { %"struct.std::_Vector_base<dali::NumbaDevArray, std::allocator<dali::NumbaDevArray>>::_Vector_impl_data" }
%"struct.std::_Vector_base<dali::NumbaDevArray, std::allocator<dali::NumbaDevArray>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.dali::OutputDesc" = type { %"struct.dali::TensorListShape", i32, [4 x i8] }
%"struct.dali::TensorListShape" = type { %"struct.dali::TensorListShapeBase.base", i32 }
%"struct.dali::TensorListShapeBase.base" = type <{ %"class.std::vector.70", i32 }>
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [100 x i8], align 1
@_ZTIN4dali13DALIExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #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 nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali13NumbaFuncImplINS_10GPUBackendEE14OutputsSetupFnERSt6vectorINS_10OutputDescESaIS4_EEiii(ptr noundef nonnull align 8 dereferenceable(888) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.dali::span", align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.dali::span", align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.dali::span", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i1, align 1
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %"struct.dali::TensorShape", align 8
  %39 = alloca %"struct.dali::TensorShape", align 8
  %40 = alloca %"struct.dali::NumbaDevArray", align 8
  %41 = alloca %"class.dali::span.86", align 8
  %42 = alloca %"class.dali::span", align 8
  %43 = alloca %"class.dali::span", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store i32 %3, ptr %9, align 4, !tbaa !9
  store i32 %4, ptr %10, align 4, !tbaa !9
  %44 = load ptr, ptr %6, align 8
  %45 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 17
  %46 = load i32, ptr %8, align 4, !tbaa !9
  %47 = sext i32 %46 to i64
  call void @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %47)
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %48

48:                                               ; preds = %74, %5
  %49 = load i32, ptr %11, align 4, !tbaa !9
  %50 = load i32, ptr %8, align 4, !tbaa !9
  %51 = icmp slt i32 %49, %50
  br i1 %51, label %53, label %52

52:                                               ; preds = %48
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %77

53:                                               ; preds = %48
  %54 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 17
  %55 = load i32, ptr %11, align 4, !tbaa !9
  %56 = sext i32 %55 to i64
  %57 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %56) #5
  %58 = load i32, ptr %10, align 4, !tbaa !9
  %59 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 12
  %60 = load i32, ptr %11, align 4, !tbaa !9
  %61 = sext i32 %60 to i64
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32) %59, i64 noundef %61)
  %63 = load i32, ptr %62, align 4, !tbaa !9
  call void @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE6resizeEii(ptr noundef nonnull align 8 dereferenceable(28) %57, i32 noundef %58, i32 noundef %63)
  %64 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 10
  %65 = load i32, ptr %11, align 4, !tbaa !9
  %66 = sext i32 %65 to i64
  %67 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEixEl(ptr noundef nonnull align 8 dereferenceable(32) %64, i64 noundef %66)
  %68 = load i32, ptr %67, align 4, !tbaa !11
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = load i32, ptr %11, align 4, !tbaa !9
  %71 = sext i32 %70 to i64
  %72 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %71) #5
  %73 = getelementptr inbounds %"struct.dali::OutputDesc", ptr %72, i32 0, i32 1
  store i32 %68, ptr %73, align 8, !tbaa !13
  br label %74

74:                                               ; preds = %53
  %75 = load i32, ptr %11, align 4, !tbaa !9
  %76 = add nsw i32 %75, 1
  store i32 %76, ptr %11, align 4, !tbaa !9
  br label %48, !llvm.loop !21

77:                                               ; preds = %52
  %78 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 15
  %79 = load i32, ptr %10, align 4, !tbaa !9
  %80 = load i32, ptr %9, align 4, !tbaa !9
  %81 = mul nsw i32 %79, %80
  %82 = sext i32 %81 to i64
  call void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %82)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %83

83:                                               ; preds = %120, %77
  %84 = load i32, ptr %12, align 4, !tbaa !9
  %85 = load i32, ptr %9, align 4, !tbaa !9
  %86 = icmp slt i32 %84, %85
  br i1 %86, label %88, label %87

87:                                               ; preds = %83
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %123

88:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %89

89:                                               ; preds = %116, %88
  %90 = load i32, ptr %14, align 4, !tbaa !9
  %91 = load i32, ptr %10, align 4, !tbaa !9
  %92 = icmp slt i32 %90, %91
  br i1 %92, label %94, label %93

93:                                               ; preds = %89
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %119

94:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #5
  %95 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 16
  %96 = load i32, ptr %12, align 4, !tbaa !9
  %97 = sext i32 %96 to i64
  %98 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %97) #5
  %99 = load i32, ptr %14, align 4, !tbaa !9
  %100 = sext i32 %99 to i64
  %101 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %98, i64 noundef %100)
  %102 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 0
  %103 = extractvalue { ptr, i64 } %101, 0
  store ptr %103, ptr %102, align 8
  %104 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 1
  %105 = extractvalue { ptr, i64 } %101, 1
  store i64 %105, ptr %104, align 8
  %106 = call noundef ptr @_ZNK4dali4spanIlLln1EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %15) #5
  %107 = ptrtoint ptr %106 to i64
  %108 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 15
  %109 = load i32, ptr %10, align 4, !tbaa !9
  %110 = load i32, ptr %12, align 4, !tbaa !9
  %111 = mul nsw i32 %109, %110
  %112 = load i32, ptr %14, align 4, !tbaa !9
  %113 = add nsw i32 %111, %112
  %114 = sext i32 %113 to i64
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %114) #5
  store i64 %107, ptr %115, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  br label %116

116:                                              ; preds = %94
  %117 = load i32, ptr %14, align 4, !tbaa !9
  %118 = add nsw i32 %117, 1
  store i32 %118, ptr %14, align 4, !tbaa !9
  br label %89, !llvm.loop !25

119:                                              ; preds = %93
  br label %120

120:                                              ; preds = %119
  %121 = load i32, ptr %12, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %12, align 4, !tbaa !9
  br label %83, !llvm.loop !26

123:                                              ; preds = %87
  %124 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 14
  %125 = load i32, ptr %10, align 4, !tbaa !9
  %126 = load i32, ptr %8, align 4, !tbaa !9
  %127 = mul nsw i32 %125, %126
  %128 = sext i32 %127 to i64
  call void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %124, i64 noundef %128)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %166, %123
  %130 = load i32, ptr %16, align 4, !tbaa !9
  %131 = load i32, ptr %8, align 4, !tbaa !9
  %132 = icmp slt i32 %130, %131
  br i1 %132, label %134, label %133

133:                                              ; preds = %129
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %169

134:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %162, %134
  %136 = load i32, ptr %17, align 4, !tbaa !9
  %137 = load i32, ptr %10, align 4, !tbaa !9
  %138 = icmp slt i32 %136, %137
  br i1 %138, label %140, label %139

139:                                              ; preds = %135
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %165

140:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #5
  %141 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 17
  %142 = load i32, ptr %16, align 4, !tbaa !9
  %143 = sext i32 %142 to i64
  %144 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %141, i64 noundef %143) #5
  %145 = load i32, ptr %17, align 4, !tbaa !9
  %146 = sext i32 %145 to i64
  %147 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %144, i64 noundef %146)
  %148 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 0
  %149 = extractvalue { ptr, i64 } %147, 0
  store ptr %149, ptr %148, align 8
  %150 = getelementptr inbounds { ptr, i64 }, ptr %18, i32 0, i32 1
  %151 = extractvalue { ptr, i64 } %147, 1
  store i64 %151, ptr %150, align 8
  %152 = call noundef ptr @_ZNK4dali4spanIlLln1EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %18) #5
  %153 = ptrtoint ptr %152 to i64
  %154 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 14
  %155 = load i32, ptr %10, align 4, !tbaa !9
  %156 = load i32, ptr %16, align 4, !tbaa !9
  %157 = mul nsw i32 %155, %156
  %158 = load i32, ptr %17, align 4, !tbaa !9
  %159 = add nsw i32 %157, %158
  %160 = sext i32 %159 to i64
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %154, i64 noundef %160) #5
  store i64 %153, ptr %161, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #5
  br label %162

162:                                              ; preds = %140
  %163 = load i32, ptr %17, align 4, !tbaa !9
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr %17, align 4, !tbaa !9
  br label %135, !llvm.loop !27

165:                                              ; preds = %139
  br label %166

166:                                              ; preds = %165
  %167 = load i32, ptr %16, align 4, !tbaa !9
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %16, align 4, !tbaa !9
  br label %129, !llvm.loop !28

169:                                              ; preds = %133
  %170 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 8
  %171 = load i64, ptr %170, align 8, !tbaa !29
  %172 = inttoptr i64 %171 to ptr
  %173 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 14
  %174 = call noundef ptr @_ZNSt6vectorImSaImEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #5
  %175 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 12
  %176 = call noundef ptr @_ZN4dali11SmallVectorIiLm6ESaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %175)
  %177 = load i32, ptr %8, align 4, !tbaa !9
  %178 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 15
  %179 = call noundef ptr @_ZNSt6vectorImSaImEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %178) #5
  %180 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 13
  %181 = call noundef ptr @_ZN4dali11SmallVectorIiLm6ESaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %180)
  %182 = load i32, ptr %9, align 4, !tbaa !9
  %183 = load i32, ptr %10, align 4, !tbaa !9
  call void %172(ptr noundef %174, ptr noundef %176, i32 noundef %177, ptr noundef %179, ptr noundef %181, i32 noundef %182, i32 noundef %183)
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %315, %169
  %185 = load i32, ptr %19, align 4, !tbaa !9
  %186 = load i32, ptr %8, align 4, !tbaa !9
  %187 = icmp slt i32 %185, %186
  br i1 %187, label %189, label %188

188:                                              ; preds = %184
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %318

189:                                              ; preds = %184
  %190 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 17
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %190, i64 noundef %192) #5
  %194 = load ptr, ptr %7, align 8, !tbaa !5
  %195 = load i32, ptr %19, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %196) #5
  %198 = getelementptr inbounds %"struct.dali::OutputDesc", ptr %197, i32 0, i32 0
  %199 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN4dali15TensorListShapeILin1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %198, ptr noundef nonnull align 8 dereferenceable(32) %193)
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %200

200:                                              ; preds = %311, %189
  %201 = load i32, ptr %20, align 4, !tbaa !9
  %202 = load i32, ptr %10, align 4, !tbaa !9
  %203 = icmp slt i32 %201, %202
  br i1 %203, label %205, label %204

204:                                              ; preds = %200
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %314

205:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #5
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = load i32, ptr %19, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef %208) #5
  %210 = getelementptr inbounds %"struct.dali::OutputDesc", ptr %209, i32 0, i32 0
  %211 = load i32, ptr %20, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %210, i64 noundef %212)
  %214 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 0
  %215 = extractvalue { ptr, i64 } %213, 0
  store ptr %215, ptr %214, align 8
  %216 = getelementptr inbounds { ptr, i64 }, ptr %21, i32 0, i32 1
  %217 = extractvalue { ptr, i64 } %213, 1
  store i64 %217, ptr %216, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %307, %205
  %219 = load i32, ptr %22, align 4, !tbaa !9
  %220 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 12
  %221 = load i32, ptr %19, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32) %220, i64 noundef %222)
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = icmp slt i32 %219, %224
  br i1 %225, label %227, label %226

226:                                              ; preds = %218
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  br label %310

227:                                              ; preds = %218
  br label %228

228:                                              ; preds = %227
  %229 = load i32, ptr %22, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4dali4spanIlLln1EEixEl(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %230)
  %232 = load i64, ptr %231, align 8, !tbaa !23
  %233 = icmp sge i64 %232, 0
  br i1 %233, label %304, label %234

234:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %235 unwind label %252

235:                                              ; preds = %234
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.5)
          to label %236 unwind label %256

236:                                              ; preds = %235
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.6)
          to label %237 unwind label %260

237:                                              ; preds = %236
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #5
  %238 = load ptr, ptr %7, align 8, !tbaa !5
  %239 = load i32, ptr %19, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef %240) #5
  %242 = getelementptr inbounds %"struct.dali::OutputDesc", ptr %241, i32 0, i32 0
  invoke void @_ZN4dali11make_stringIJA109_ciA12_ciA3_cNS_15TensorListShapeILin1EEEEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 1 dereferenceable(109) @.str.7, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 1 dereferenceable(12) @.str.8, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 1 dereferenceable(3) @.str.9, ptr noundef nonnull align 8 dereferenceable(32) %242)
          to label %243 unwind label %266

243:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %244 unwind label %270

244:                                              ; preds = %243
  %245 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %246 unwind label %274

246:                                              ; preds = %244
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  store i1 true, ptr %35, align 1
  %247 = call ptr @__cxa_allocate_exception(i64 80) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #5
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %248 unwind label %279

248:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %249 unwind label %283

249:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #5
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34)
          to label %250 unwind label %287

250:                                              ; preds = %249
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %247, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %32, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %251 unwind label %291

251:                                              ; preds = %250
  store i1 false, ptr %35, align 1
  invoke void @__cxa_throw(ptr %247, ptr @_ZTIN4dali13DALIExceptionE, ptr @_ZN4dali13DALIExceptionD2Ev) #6
          to label %406 unwind label %291

252:                                              ; preds = %234
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %27, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %28, align 4
  br label %265

256:                                              ; preds = %235
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %27, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %28, align 4
  br label %264

260:                                              ; preds = %236
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %27, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %28, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #5
  br label %264

264:                                              ; preds = %260, %256
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #5
  br label %265

265:                                              ; preds = %264, %252
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #5
  br label %303

266:                                              ; preds = %237
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %27, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %28, align 4
  br label %302

270:                                              ; preds = %243
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %27, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %28, align 4
  br label %278

274:                                              ; preds = %244
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %27, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %28, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #5
  br label %278

278:                                              ; preds = %274, %270
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #5
  br label %301

279:                                              ; preds = %246
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %27, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %28, align 4
  br label %297

283:                                              ; preds = %248
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %27, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %28, align 4
  br label %296

287:                                              ; preds = %249
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %27, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %28, align 4
  br label %295

291:                                              ; preds = %251, %250
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %27, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %28, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #5
  br label %295

295:                                              ; preds = %291, %287
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #5
  br label %296

296:                                              ; preds = %295, %283
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #5
  br label %297

297:                                              ; preds = %296, %279
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #5
  %298 = load i1, ptr %35, align 1
  br i1 %298, label %299, label %300

299:                                              ; preds = %297
  call void @__cxa_free_exception(ptr %247) #5
  br label %300

300:                                              ; preds = %299, %297
  br label %301

301:                                              ; preds = %300, %278
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #5
  br label %302

302:                                              ; preds = %301, %266
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  br label %303

303:                                              ; preds = %302, %265
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %401

304:                                              ; preds = %228
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305
  br label %307

307:                                              ; preds = %306
  %308 = load i32, ptr %22, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %22, align 4, !tbaa !9
  br label %218, !llvm.loop !96

310:                                              ; preds = %226
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #5
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr %20, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %20, align 4, !tbaa !9
  br label %200, !llvm.loop !97

314:                                              ; preds = %204
  br label %315

315:                                              ; preds = %314
  %316 = load i32, ptr %19, align 4, !tbaa !9
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %19, align 4, !tbaa !9
  br label %184, !llvm.loop !98

318:                                              ; preds = %188
  %319 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 19
  call void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #5
  %320 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 19
  %321 = load i32, ptr %8, align 4, !tbaa !9
  %322 = load i32, ptr %10, align 4, !tbaa !9
  %323 = mul nsw i32 %321, %322
  %324 = sext i32 %323 to i64
  call void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %320, i64 noundef %324)
  %325 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 21
  call void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %325) #5
  %326 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 21
  %327 = load i32, ptr %8, align 4, !tbaa !9
  %328 = load i32, ptr %10, align 4, !tbaa !9
  %329 = mul nsw i32 %327, %328
  %330 = sext i32 %329 to i64
  call void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %326, i64 noundef %330)
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %331

331:                                              ; preds = %397, %318
  %332 = load i32, ptr %36, align 4, !tbaa !9
  %333 = load i32, ptr %8, align 4, !tbaa !9
  %334 = icmp slt i32 %332, %333
  br i1 %334, label %336, label %335

335:                                              ; preds = %331
  store i32 28, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  br label %400

336:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %384, %336
  %338 = load i32, ptr %37, align 4, !tbaa !9
  %339 = load i32, ptr %10, align 4, !tbaa !9
  %340 = icmp slt i32 %338, %339
  br i1 %340, label %342, label %341

341:                                              ; preds = %337
  store i32 31, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  br label %396

342:                                              ; preds = %337
  %343 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 56, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 56, ptr %39) #5
  %344 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 17
  %345 = load i32, ptr %36, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %344, i64 noundef %346) #5
  %348 = load i32, ptr %37, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  call void @_ZNK4dali15TensorListShapeILin1EEixEl(ptr dead_on_unwind writable sret(%"struct.dali::TensorShape") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %347, i64 noundef %349)
  invoke void @_ZN4dali7kernels10GetStridesINS_11TensorShapeILin1EEES3_EET0_RKT_(ptr dead_on_unwind writable sret(%"struct.dali::TensorShape") align 8 %38, ptr noundef nonnull align 8 dereferenceable(56) %39)
          to label %350 unwind label %387

350:                                              ; preds = %342
  invoke void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %343, ptr noundef nonnull align 8 dereferenceable(56) %38)
          to label %351 unwind label %391

351:                                              ; preds = %350
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #5
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %39) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr %38) #5
  %352 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 21
  call void @llvm.lifetime.start.p0(i64 72, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #5
  %353 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 17
  %354 = load i32, ptr %36, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %355) #5
  %357 = load i32, ptr %37, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %356, i64 noundef %358)
  %360 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 0
  %361 = extractvalue { ptr, i64 } %359, 0
  store ptr %361, ptr %360, align 8
  %362 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 1
  %363 = extractvalue { ptr, i64 } %359, 1
  store i64 %363, ptr %362, align 8
  call void @_ZN4dali4spanIKlLln1EEC2IlLln1EvEERKNS0_IT_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #5
  %364 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 19
  %365 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %364) #5
  %366 = call { ptr, i64 } @_ZN4dali9make_spanINS_11TensorShapeILin1EEEEEDaRT_(ptr noundef nonnull align 8 dereferenceable(56) %365)
  %367 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 0
  %368 = extractvalue { ptr, i64 } %366, 0
  store ptr %368, ptr %367, align 8
  %369 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 1
  %370 = extractvalue { ptr, i64 } %366, 1
  store i64 %370, ptr %369, align 8
  %371 = getelementptr inbounds %"class.dali::NumbaFuncImpl", ptr %44, i32 0, i32 10
  %372 = load i32, ptr %36, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEixEl(ptr noundef nonnull align 8 dereferenceable(32) %371, i64 noundef %373)
  %375 = load i32, ptr %374, align 4, !tbaa !11
  %376 = getelementptr inbounds { ptr, i64 }, ptr %41, i32 0, i32 0
  %377 = load ptr, ptr %376, align 8
  %378 = getelementptr inbounds { ptr, i64 }, ptr %41, i32 0, i32 1
  %379 = load i64, ptr %378, align 8
  %380 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8
  %382 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 1
  %383 = load i64, ptr %382, align 8
  call void @_ZN4dali13NumbaDevArrayC2ENS_4spanIKlLln1EEENS1_IlLln1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(72) %40, ptr %377, i64 %379, ptr %381, i64 %383, i32 noundef %375)
  call void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %352, ptr noundef nonnull align 8 dereferenceable(72) %40)
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr %40) #5
  br label %384

384:                                              ; preds = %351
  %385 = load i32, ptr %37, align 4, !tbaa !9
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %37, align 4, !tbaa !9
  br label %337, !llvm.loop !99

387:                                              ; preds = %342
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %27, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %28, align 4
  br label %395

391:                                              ; preds = %350
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %27, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %28, align 4
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #5
  br label %395

395:                                              ; preds = %391, %387
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %39) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  br label %401

396:                                              ; preds = %341
  br label %397

397:                                              ; preds = %396
  %398 = load i32, ptr %36, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %36, align 4, !tbaa !9
  br label %331, !llvm.loop !100

400:                                              ; preds = %335
  ret void

401:                                              ; preds = %395, %303
  %402 = load ptr, ptr %27, align 8
  %403 = load i32, ptr %28, align 4
  %404 = insertvalue { ptr, i32 } poison, ptr %402, 0
  %405 = insertvalue { ptr, i32 } %404, i32 %403, 1
  resume { ptr, i32 } %405

406:                                              ; preds = %251
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE6resizeEii(ptr noundef nonnull align 8 dereferenceable(28), i32 noundef, i32 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEixEl(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28), i64 noundef) #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN4dali11SmallVectorIiLm6ESaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

; 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) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali11make_stringIJA109_ciA12_ciA3_cNS_15TensorListShapeILin1EEEEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(109), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

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

declare ptr @__cxa_allocate_exception(i64)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4dali13DALIExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #4 align 2

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(56)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali7kernels10GetStridesINS_11TensorShapeILin1EEES3_EET0_RKT_(ptr dead_on_unwind noalias writable sret(%"struct.dali::TensorShape") align 8, ptr noundef nonnull align 8 dereferenceable(56)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali15TensorListShapeILin1EEixEl(ptr dead_on_unwind noalias writable sret(%"struct.dali::TensorShape") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4dali4spanIKlLln1EEC2IlLln1EvEERKNS0_IT_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZN4dali9make_spanINS_11TensorShapeILin1EEEEEDaRT_(ptr noundef nonnull align 8 dereferenceable(56)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali13NumbaDevArrayC2ENS_4spanIKlLln1EEENS1_IlLln1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(72), ptr, i64, ptr, i64, i32 noundef) unnamed_addr #2 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { 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 #5 = { nounwind }
attributes #6 = { noreturn }

!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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTS13_DALIDataType", !7, i64 0}
!13 = !{!14, !12, i64 32}
!14 = !{!"_ZTSN4dali10OutputDescE", !15, i64 0, !12, i64 32}
!15 = !{!"_ZTSN4dali15TensorListShapeILin1EEE", !16, i64 0, !10, i64 28}
!16 = !{!"_ZTSN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EEE", !17, i64 0, !10, i64 24}
!17 = !{!"_ZTSSt6vectorIlSaIlEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !24, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = distinct !{!28, !22}
!29 = !{!30, !24, i64 552}
!30 = !{!"_ZTSN4dali13NumbaFuncImplINS_10GPUBackendEEE", !31, i64 0, !68, i64 400, !68, i64 424, !72, i64 448, !72, i64 472, !76, i64 496, !76, i64 520, !24, i64 544, !24, i64 552, !77, i64 560, !78, i64 568, !78, i64 600, !79, i64 632, !79, i64 664, !80, i64 696, !80, i64 720, !84, i64 744, !84, i64 768, !88, i64 792, !88, i64 816, !92, i64 840, !92, i64 864}
!31 = !{!"_ZTSN4dali17StatelessOperatorINS_10GPUBackendEEE", !32, i64 0}
!32 = !{!"_ZTSN4dali8OperatorINS_10GPUBackendEEE", !33, i64 0}
!33 = !{!"_ZTSN4dali12OperatorBaseE", !34, i64 8, !10, i64 336, !10, i64 340, !63, i64 344}
!34 = !{!"_ZTSN4dali6OpSpecE", !35, i64 0, !6, i64 32, !37, i64 40, !41, i64 64, !49, i64 112, !41, i64 136, !53, i64 184, !56, i64 232, !56, i64 256, !60, i64 280}
!35 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !36, i64 0, !24, i64 8, !7, i64 16}
!36 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!37 = !{!"_ZTSSt6vectorISt10shared_ptrIN4dali8ArgumentEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN4dali8ArgumentEESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN4dali8ArgumentEESaIS3_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN4dali8ArgumentEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIvESaISt4pairIKS5_iEEE", !42, i64 0}
!42 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIvESaIS8_EE", !43, i64 0}
!43 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIvESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !44, i64 0, !46, i64 8}
!44 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIvEE", !45, i64 0}
!45 = !{!"_ZTSSt4lessIvE"}
!46 = !{!"_ZTSSt15_Rb_tree_header", !47, i64 0, !24, i64 32}
!47 = !{!"_ZTSSt18_Rb_tree_node_base", !48, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!48 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!49 = !{!"_ZTSSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIvESaISt4pairIKS5_S5_EEE", !54, i64 0}
!54 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIvESaIS8_EE", !55, i64 0}
!55 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIvESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !44, i64 0, !46, i64 8}
!56 = !{!"_ZTSSt6vectorIN4dali6OpSpec15InOutDeviceDescESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN4dali6OpSpec15InOutDeviceDescESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN4dali6OpSpec15InOutDeviceDescESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN4dali6OpSpec15InOutDeviceDescESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSSt3mapIN4dali6OpSpec15InOutDeviceDescEiSt4lessIvESaISt4pairIKS2_iEEE", !61, i64 0}
!61 = !{!"_ZTSSt8_Rb_treeIN4dali6OpSpec15InOutDeviceDescESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIvESaIS5_EE", !62, i64 0}
!62 = !{!"_ZTSNSt8_Rb_treeIN4dali6OpSpec15InOutDeviceDescESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIvESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !44, i64 0, !46, i64 8}
!63 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3anySt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEE", !64, i64 0}
!64 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St3anyESaIS9_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !24, i64 8, !65, i64 16, !24, i64 24, !66, i64 32, !6, i64 48}
!65 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!66 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !67, i64 0, !24, i64 8}
!67 = !{!"float", !7, i64 0}
!68 = !{!"_ZTSSt6vectorIS_IlSaIlEESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!72 = !{!"_ZTSSt6vectorIS_IPvSaIS0_EESaIS2_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseISt6vectorIPvSaIS1_EESaIS3_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseISt6vectorIPvSaIS1_EESaIS3_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseISt6vectorIPvSaIS1_EESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!"_ZTSN4dali11SmallVectorIiLm3ESaIiEEE", !7, i64 0, !24, i64 16}
!77 = !{!"bool", !7, i64 0}
!78 = !{!"_ZTSN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEE", !7, i64 0, !24, i64 24}
!79 = !{!"_ZTSN4dali11SmallVectorIiLm6ESaIiEEE", !7, i64 0, !24, i64 24}
!80 = !{!"_ZTSSt6vectorImSaImEE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseImSaImEE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!84 = !{!"_ZTSSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseIN4dali15TensorListShapeILin1EEESaIS2_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN4dali15TensorListShapeILin1EEESaIS2_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN4dali15TensorListShapeILin1EEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!88 = !{!"_ZTSSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE", !89, i64 0}
!89 = !{!"_ZTSSt12_Vector_baseIN4dali11TensorShapeILin1EEESaIS2_EE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN4dali11TensorShapeILin1EEESaIS2_EE12_Vector_implE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseIN4dali11TensorShapeILin1EEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!92 = !{!"_ZTSSt6vectorIN4dali13NumbaDevArrayESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSSt12_Vector_baseIN4dali13NumbaDevArrayESaIS1_EE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN4dali13NumbaDevArrayESaIS1_EE12_Vector_implE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIN4dali13NumbaDevArrayESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!96 = distinct !{!96, !22}
!97 = distinct !{!97, !22}
!98 = distinct !{!98, !22}
!99 = distinct !{!99, !22}
!100 = distinct !{!100, !22}


; 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"

%"class.dali::span" = type { ptr, i64 }
%"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.std::allocator" = type { i8 }
%"struct.dali::TensorShape" = type { %"struct.dali::TensorShapeBase" }
%"struct.dali::TensorShapeBase" = type { %"class.dali::SmallVector.81" }
%"class.dali::SmallVector.81" = type { %union.anon.84, i64 }
%union.anon.84 = type { %struct.anon.85, [32 x i8] }
%struct.anon.85 = type { ptr, i64 }
%"struct.dali::NumbaDevArray" = type { ptr, ptr, i64, i64, ptr, %"class.dali::span.86", %"class.dali::span" }
%"class.dali::span.86" = type { ptr, i64 }

@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [100 x i8], align 1
@_ZTIN4dali13DALIExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8

; 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 nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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 nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4dali13NumbaFuncImplINS_10GPUBackendEE14OutputsSetupFnERSt6vectorINS_10OutputDescESaIS4_EEiii(ptr noundef nonnull align 8 dereferenceable(888) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.dali::span", align 8
  %7 = alloca %"class.dali::span", align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.dali::span", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"struct.dali::TensorShape", align 8
  %22 = alloca %"struct.dali::TensorShape", align 8
  %23 = alloca %"struct.dali::NumbaDevArray", align 8
  %24 = alloca %"class.dali::span.86", align 8
  %25 = alloca %"class.dali::span", align 8
  %26 = getelementptr inbounds i8, ptr %0, i64 768
  %27 = sext i32 %2 to i64
  tail call void @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %27)
  %28 = icmp sgt i32 %2, 0
  br i1 %28, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %5
  %29 = getelementptr inbounds i8, ptr %0, i64 632
  %30 = getelementptr inbounds i8, ptr %0, i64 568
  %wide.trip.count = zext nneg i32 %2 to i64
  br label %49

._crit_edge:                                      ; preds = %49, %5
  %31 = getelementptr inbounds i8, ptr %0, i64 720
  %32 = mul nsw i32 %4, %3
  %33 = sext i32 %32 to i64
  tail call void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %33)
  %34 = icmp sgt i32 %3, 0
  br i1 %34, label %.preheader112.lr.ph, label %._crit_edge118

.preheader112.lr.ph:                              ; preds = %._crit_edge
  %35 = icmp sgt i32 %4, 0
  %36 = getelementptr inbounds i8, ptr %0, i64 744
  %37 = getelementptr inbounds i8, ptr %6, i64 8
  br i1 %35, label %.preheader112.us.preheader, label %._crit_edge118

.preheader112.us.preheader:                       ; preds = %.preheader112.lr.ph
  %38 = zext nneg i32 %4 to i64
  %wide.trip.count155 = zext nneg i32 %3 to i64
  br label %.preheader112.us

.preheader112.us:                                 ; preds = %.preheader112.us.preheader, %._crit_edge116.us
  %indvars.iv152 = phi i64 [ 0, %.preheader112.us.preheader ], [ %indvars.iv.next153, %._crit_edge116.us ]
  %39 = mul nuw nsw i64 %indvars.iv152, %38
  br label %40

40:                                               ; preds = %.preheader112.us, %40
  %indvars.iv147 = phi i64 [ 0, %.preheader112.us ], [ %indvars.iv.next148, %40 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #5
  %41 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %indvars.iv152) #5
  %42 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %41, i64 noundef %indvars.iv147)
  %43 = extractvalue { ptr, i64 } %42, 0
  store ptr %43, ptr %6, align 8
  %44 = extractvalue { ptr, i64 } %42, 1
  store i64 %44, ptr %37, align 8
  %45 = call noundef ptr @_ZNK4dali4spanIlLln1EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #5
  %46 = ptrtoint ptr %45 to i64
  %47 = add nuw nsw i64 %indvars.iv147, %39
  %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %47) #5
  store i64 %46, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #5
  %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1
  %exitcond151.not = icmp eq i64 %indvars.iv.next148, %38
  br i1 %exitcond151.not, label %._crit_edge116.us, label %40, !llvm.loop !9

._crit_edge116.us:                                ; preds = %40
  %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1
  %exitcond156.not = icmp eq i64 %indvars.iv.next153, %wide.trip.count155
  br i1 %exitcond156.not, label %._crit_edge118, label %.preheader112.us, !llvm.loop !11

49:                                               ; preds = %.lr.ph, %49
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %49 ]
  %50 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv) #5
  %51 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32) %29, i64 noundef %indvars.iv)
  %52 = load i32, ptr %51, align 4, !tbaa !12
  tail call void @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE6resizeEii(ptr noundef nonnull align 8 dereferenceable(28) %50, i32 noundef %4, i32 noundef %52)
  %53 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEixEl(ptr noundef nonnull align 8 dereferenceable(32) %30, i64 noundef %indvars.iv)
  %54 = load i32, ptr %53, align 4, !tbaa !14
  %55 = tail call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #5
  %56 = getelementptr inbounds i8, ptr %55, i64 32
  store i32 %54, ptr %56, align 8, !tbaa !16
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %49, !llvm.loop !25

._crit_edge118:                                   ; preds = %._crit_edge116.us, %.preheader112.lr.ph, %._crit_edge
  %57 = getelementptr inbounds i8, ptr %0, i64 696
  %58 = mul nsw i32 %4, %2
  %59 = sext i32 %58 to i64
  call void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %59)
  br i1 %28, label %.preheader111.lr.ph, label %._crit_edge123

.preheader111.lr.ph:                              ; preds = %._crit_edge118
  %60 = icmp sgt i32 %4, 0
  %61 = getelementptr inbounds i8, ptr %7, i64 8
  br i1 %60, label %.preheader111.us.preheader, label %._crit_edge123

.preheader111.us.preheader:                       ; preds = %.preheader111.lr.ph
  %62 = zext nneg i32 %4 to i64
  %wide.trip.count165 = zext nneg i32 %2 to i64
  br label %.preheader111.us

.preheader111.us:                                 ; preds = %.preheader111.us.preheader, %._crit_edge121.us
  %indvars.iv162 = phi i64 [ 0, %.preheader111.us.preheader ], [ %indvars.iv.next163, %._crit_edge121.us ]
  %63 = mul nuw nsw i64 %indvars.iv162, %62
  br label %64

64:                                               ; preds = %.preheader111.us, %64
  %indvars.iv157 = phi i64 [ 0, %.preheader111.us ], [ %indvars.iv.next158, %64 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #5
  %65 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv162) #5
  %66 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %65, i64 noundef %indvars.iv157)
  %67 = extractvalue { ptr, i64 } %66, 0
  store ptr %67, ptr %7, align 8
  %68 = extractvalue { ptr, i64 } %66, 1
  store i64 %68, ptr %61, align 8
  %69 = call noundef ptr @_ZNK4dali4spanIlLln1EE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  %70 = ptrtoint ptr %69 to i64
  %71 = add nuw nsw i64 %indvars.iv157, %63
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %71) #5
  store i64 %70, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  %indvars.iv.next158 = add nuw nsw i64 %indvars.iv157, 1
  %exitcond161.not = icmp eq i64 %indvars.iv.next158, %62
  br i1 %exitcond161.not, label %._crit_edge121.us, label %64, !llvm.loop !26

._crit_edge121.us:                                ; preds = %64
  %indvars.iv.next163 = add nuw nsw i64 %indvars.iv162, 1
  %exitcond166.not = icmp eq i64 %indvars.iv.next163, %wide.trip.count165
  br i1 %exitcond166.not, label %._crit_edge123, label %.preheader111.us, !llvm.loop !27

._crit_edge123:                                   ; preds = %._crit_edge121.us, %.preheader111.lr.ph, %._crit_edge118
  %73 = getelementptr inbounds i8, ptr %0, i64 552
  %74 = load i64, ptr %73, align 8, !tbaa !28
  %75 = inttoptr i64 %74 to ptr
  %76 = call noundef ptr @_ZNSt6vectorImSaImEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #5
  %77 = getelementptr inbounds i8, ptr %0, i64 632
  %78 = call noundef ptr @_ZN4dali11SmallVectorIiLm6ESaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %77)
  %79 = call noundef ptr @_ZNSt6vectorImSaImEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #5
  %80 = getelementptr inbounds i8, ptr %0, i64 664
  %81 = call noundef ptr @_ZN4dali11SmallVectorIiLm6ESaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %80)
  call void %75(ptr noundef %76, ptr noundef %78, i32 noundef %2, ptr noundef %79, ptr noundef %81, i32 noundef %3, i32 noundef %4)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #5
  store i32 0, ptr %8, align 4, !tbaa !12
  br i1 %28, label %.lr.ph133, label %._crit_edge134

.lr.ph133:                                        ; preds = %._crit_edge123
  %82 = icmp sgt i32 %4, 0
  %83 = getelementptr inbounds i8, ptr %10, i64 8
  br label %108

._crit_edge134:                                   ; preds = %._crit_edge130, %._crit_edge123
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #5
  %84 = getelementptr inbounds i8, ptr %0, i64 816
  call void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #5
  call void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %59)
  %85 = getelementptr inbounds i8, ptr %0, i64 864
  call void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #5
  call void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %59)
  br i1 %28, label %.preheader.lr.ph, label %._crit_edge139

.preheader.lr.ph:                                 ; preds = %._crit_edge134
  %86 = icmp sgt i32 %4, 0
  %87 = getelementptr inbounds i8, ptr %25, i64 8
  %88 = getelementptr inbounds i8, ptr %0, i64 568
  %89 = getelementptr inbounds i8, ptr %24, i64 8
  br i1 %86, label %.preheader.us.preheader, label %._crit_edge139

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %wide.trip.count178 = zext nneg i32 %2 to i64
  %wide.trip.count173 = zext nneg i32 %4 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge137.us
  %indvars.iv175 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next176, %._crit_edge137.us ]
  br label %90

90:                                               ; preds = %.preheader.us, %93
  %indvars.iv170 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next171, %93 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %22) #5
  %91 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv175) #5
  call void @_ZNK4dali15TensorListShapeILin1EEixEl(ptr dead_on_unwind nonnull writable sret(%"struct.dali::TensorShape") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %91, i64 noundef %indvars.iv170)
  invoke void @_ZN4dali7kernels10GetStridesINS_11TensorShapeILin1EEES3_EET0_RKT_(ptr dead_on_unwind nonnull writable sret(%"struct.dali::TensorShape") align 8 %21, ptr noundef nonnull align 8 dereferenceable(56) %22)
          to label %92 unwind label %.split.us

92:                                               ; preds = %90
  invoke void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 8 dereferenceable(56) %21)
          to label %93 unwind label %.split141.us

93:                                               ; preds = %92
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #5
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %22) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #5
  %94 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %indvars.iv175) #5
  %95 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %94, i64 noundef %indvars.iv170)
  %96 = extractvalue { ptr, i64 } %95, 0
  store ptr %96, ptr %25, align 8
  %97 = extractvalue { ptr, i64 } %95, 1
  store i64 %97, ptr %87, align 8
  call void @_ZN4dali4spanIKlLln1EEC2IlLln1EvEERKNS0_IT_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #5
  %98 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %84) #5
  %99 = call { ptr, i64 } @_ZN4dali9make_spanINS_11TensorShapeILin1EEEEEDaRT_(ptr noundef nonnull align 8 dereferenceable(56) %98)
  %100 = extractvalue { ptr, i64 } %99, 0
  %101 = extractvalue { ptr, i64 } %99, 1
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEixEl(ptr noundef nonnull align 8 dereferenceable(32) %88, i64 noundef %indvars.iv175)
  %103 = load i32, ptr %102, align 4, !tbaa !14
  %104 = load ptr, ptr %24, align 8
  %105 = load i64, ptr %89, align 8
  call void @_ZN4dali13NumbaDevArrayC2ENS_4spanIKlLln1EEENS1_IlLln1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(72) %23, ptr %104, i64 %105, ptr %100, i64 %101, i32 noundef %103)
  call void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(72) %23)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %23) #5
  %indvars.iv.next171 = add nuw nsw i64 %indvars.iv170, 1
  %exitcond174.not = icmp eq i64 %indvars.iv.next171, %wide.trip.count173
  br i1 %exitcond174.not, label %._crit_edge137.us, label %90, !llvm.loop !95

._crit_edge137.us:                                ; preds = %93
  %indvars.iv.next176 = add nuw nsw i64 %indvars.iv175, 1
  %exitcond179.not = icmp eq i64 %indvars.iv.next176, %wide.trip.count178
  br i1 %exitcond179.not, label %._crit_edge139, label %.preheader.us, !llvm.loop !96

.split.us:                                        ; preds = %90
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %179

.split141.us:                                     ; preds = %92
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #5
  br label %179

108:                                              ; preds = %.lr.ph133, %._crit_edge130
  %109 = phi i32 [ 0, %.lr.ph133 ], [ %115, %._crit_edge130 ]
  %110 = zext nneg i32 %109 to i64
  %111 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %110) #5
  %112 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %110) #5
  %113 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN4dali15TensorListShapeILin1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(32) %111)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #5
  store i32 0, ptr %9, align 4, !tbaa !12
  br i1 %82, label %.lr.ph129.preheader, label %._crit_edge130

.lr.ph129.preheader:                              ; preds = %108
  %114 = zext nneg i32 %109 to i64
  br label %.lr.ph129

._crit_edge130:                                   ; preds = %._crit_edge127, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  %115 = add nuw nsw i32 %109, 1
  store i32 %115, ptr %8, align 4, !tbaa !12
  %116 = icmp slt i32 %115, %2
  br i1 %116, label %108, label %._crit_edge134, !llvm.loop !97

.lr.ph129:                                        ; preds = %.lr.ph129.preheader, %._crit_edge127
  %117 = phi i32 [ 0, %.lr.ph129.preheader ], [ %131, %._crit_edge127 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #5
  %118 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %114) #5
  %119 = zext nneg i32 %117 to i64
  %120 = call { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28) %118, i64 noundef %119)
  %121 = extractvalue { ptr, i64 } %120, 0
  store ptr %121, ptr %10, align 8
  %122 = extractvalue { ptr, i64 } %120, 1
  store i64 %122, ptr %83, align 8
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32) %77, i64 noundef %114)
  %124 = load i32, ptr %123, align 4, !tbaa !12
  %125 = icmp sgt i32 %124, 0
  br i1 %125, label %.lr.ph126, label %._crit_edge127

126:                                              ; preds = %.lr.ph126
  %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32) %77, i64 noundef %110)
  %128 = load i32, ptr %127, align 4, !tbaa !12
  %129 = sext i32 %128 to i64
  %130 = icmp slt i64 %indvars.iv.next168, %129
  br i1 %130, label %.lr.ph126, label %._crit_edge127, !llvm.loop !98

._crit_edge127:                                   ; preds = %126, %.lr.ph129
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  %131 = add nuw nsw i32 %117, 1
  store i32 %131, ptr %9, align 4, !tbaa !12
  %132 = icmp slt i32 %131, %4
  br i1 %132, label %.lr.ph129, label %._crit_edge130, !llvm.loop !99

.lr.ph126:                                        ; preds = %.lr.ph129, %126
  %indvars.iv167 = phi i64 [ %indvars.iv.next168, %126 ], [ 0, %.lr.ph129 ]
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4dali4spanIlLln1EEixEl(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv167)
  %134 = load i64, ptr %133, align 8, !tbaa !5
  %135 = icmp sgt i64 %134, -1
  br i1 %135, label %126, label %136

136:                                              ; preds = %.lr.ph126
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %137 unwind label %151

137:                                              ; preds = %136
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull @.str.5)
          to label %138 unwind label %153

138:                                              ; preds = %137
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.6)
          to label %139 unwind label %155

139:                                              ; preds = %138
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #5
  %140 = zext nneg i32 %109 to i64
  %141 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNSt6vectorIN4dali10OutputDescESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %140) #5
  invoke void @_ZN4dali11make_stringIJA109_ciA12_ciA3_cNS_15TensorListShapeILin1EEEEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 1 dereferenceable(109) @.str.7, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 1 dereferenceable(12) @.str.8, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 1 dereferenceable(3) @.str.9, ptr noundef nonnull align 8 dereferenceable(32) %141)
          to label %142 unwind label %159

142:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull @.str.10, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %143 unwind label %161

143:                                              ; preds = %142
  %144 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %145 unwind label %163

145:                                              ; preds = %143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #5
  %146 = call ptr @__cxa_allocate_exception(i64 80) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #5
  invoke void @_ZN4dali11make_stringIJNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEES6_DpRKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %147 unwind label %.thread

147:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #5
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %148 unwind label %167

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #5
  invoke void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20)
          to label %149 unwind label %169

149:                                              ; preds = %148
  invoke void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80) %146, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull %18, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %150 unwind label %171

150:                                              ; preds = %149
  invoke void @__cxa_throw(ptr nonnull %146, ptr nonnull @_ZTIN4dali13DALIExceptionE, ptr nonnull @_ZN4dali13DALIExceptionD2Ev) #6
          to label %181 unwind label %171

151:                                              ; preds = %136
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %158

153:                                              ; preds = %137
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %157

155:                                              ; preds = %138
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #5
  br label %157

157:                                              ; preds = %155, %153
  %.pn95 = phi { ptr, i32 } [ %156, %155 ], [ %154, %153 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #5
  br label %158

158:                                              ; preds = %157, %151
  %.pn95.pn = phi { ptr, i32 } [ %.pn95, %157 ], [ %152, %151 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #5
  br label %178

159:                                              ; preds = %139
  %160 = landingpad { ptr, i32 }
          cleanup
  br label %177

161:                                              ; preds = %142
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %165

163:                                              ; preds = %143
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #5
  br label %165

165:                                              ; preds = %163, %161
  %.pn98 = phi { ptr, i32 } [ %164, %163 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #5
  br label %176

.thread:                                          ; preds = %145
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  br label %175

167:                                              ; preds = %147
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %174

169:                                              ; preds = %148
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %173

171:                                              ; preds = %150, %149
  %.068 = phi i1 [ false, %150 ], [ true, %149 ]
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #5
  br label %173

173:                                              ; preds = %171, %169
  %.pn100 = phi { ptr, i32 } [ %172, %171 ], [ %170, %169 ]
  %.1 = phi i1 [ %.068, %171 ], [ true, %169 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #5
  br label %174

174:                                              ; preds = %167, %173
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %173 ], [ %168, %167 ]
  %.2 = phi i1 [ %.1, %173 ], [ true, %167 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  br i1 %.2, label %175, label %176

175:                                              ; preds = %.thread, %174
  %.pn100.pn.pn110 = phi { ptr, i32 } [ %166, %.thread ], [ %.pn100.pn, %174 ]
  call void @__cxa_free_exception(ptr %146) #5
  br label %176

176:                                              ; preds = %174, %175, %165
  %.pn100.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn110, %175 ], [ %.pn100.pn, %174 ], [ %.pn98, %165 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #5
  br label %177

177:                                              ; preds = %176, %159
  %.pn100.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn.pn, %176 ], [ %160, %159 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #5
  br label %178

178:                                              ; preds = %177, %158
  %.pn100.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn.pn.pn, %177 ], [ %.pn95.pn, %158 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #5
  br label %180

._crit_edge139:                                   ; preds = %._crit_edge137.us, %.preheader.lr.ph, %._crit_edge134
  ret void

179:                                              ; preds = %.split141.us, %.split.us
  %.pn = phi { ptr, i32 } [ %107, %.split141.us ], [ %106, %.split.us ]
  call void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %22) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %21) #5
  br label %180

180:                                              ; preds = %179, %178
  %.pn100.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn.pn.pn.pn, %178 ], [ %.pn, %179 ]
  resume { ptr, i32 } %.pn100.pn.pn.pn.pn.pn.pn

181:                                              ; preds = %150
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE6resizeEii(ptr noundef nonnull align 8 dereferenceable(28), i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorIiLm6ESaIiEEixEl(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEixEl(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorImSaImEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EE17tensor_shape_spanEl(ptr noundef nonnull align 8 dereferenceable(28), i64 noundef) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN4dali11SmallVectorIiLm6ESaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

; 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 #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali11make_stringIJA109_ciA12_ciA3_cNS_15TensorListShapeILin1EEEEEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpRKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(109), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(3), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4dali13GetStacktraceB5cxx11Ev(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali13DALIExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S8_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4dali13DALIExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #4 align 2

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali7kernels10GetStridesINS_11TensorShapeILin1EEES3_EET0_RKT_(ptr dead_on_unwind noalias writable sret(%"struct.dali::TensorShape") align 8, ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4dali15TensorListShapeILin1EEixEl(ptr dead_on_unwind noalias writable sret(%"struct.dali::TensorShape") align 8, ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4dali15TensorShapeBaseINS_11SmallVectorIlLm6ESaIlEEELin1EED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN4dali13NumbaDevArrayESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4dali4spanIKlLln1EEC2IlLln1EvEERKNS0_IT_XT0_EEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZN4dali9make_spanINS_11TensorShapeILin1EEEEEDaRT_(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4dali13NumbaDevArrayC2ENS_4spanIKlLln1EEENS1_IlLln1EEE13_DALIDataType(ptr noundef nonnull align 8 dereferenceable(72), ptr, i64, ptr, i64, i32 noundef) unnamed_addr #2 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { 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 #5 = { nounwind }
attributes #6 = { noreturn }

!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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"_ZTS13_DALIDataType", !7, i64 0}
!16 = !{!17, !15, i64 32}
!17 = !{!"_ZTSN4dali10OutputDescE", !18, i64 0, !15, i64 32}
!18 = !{!"_ZTSN4dali15TensorListShapeILin1EEE", !19, i64 0, !13, i64 28}
!19 = !{!"_ZTSN4dali19TensorListShapeBaseINS_15TensorListShapeILin1EEELin1EEE", !20, i64 0, !13, i64 24}
!20 = !{!"_ZTSSt6vectorIlSaIlEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!24 = !{!"any pointer", !7, i64 0}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = !{!29, !6, i64 552}
!29 = !{!"_ZTSN4dali13NumbaFuncImplINS_10GPUBackendEEE", !30, i64 0, !67, i64 400, !67, i64 424, !71, i64 448, !71, i64 472, !75, i64 496, !75, i64 520, !6, i64 544, !6, i64 552, !76, i64 560, !77, i64 568, !77, i64 600, !78, i64 632, !78, i64 664, !79, i64 696, !79, i64 720, !83, i64 744, !83, i64 768, !87, i64 792, !87, i64 816, !91, i64 840, !91, i64 864}
!30 = !{!"_ZTSN4dali17StatelessOperatorINS_10GPUBackendEEE", !31, i64 0}
!31 = !{!"_ZTSN4dali8OperatorINS_10GPUBackendEEE", !32, i64 0}
!32 = !{!"_ZTSN4dali12OperatorBaseE", !33, i64 8, !13, i64 336, !13, i64 340, !62, i64 344}
!33 = !{!"_ZTSN4dali6OpSpecE", !34, i64 0, !24, i64 32, !36, i64 40, !40, i64 64, !48, i64 112, !40, i64 136, !52, i64 184, !55, i64 232, !55, i64 256, !59, i64 280}
!34 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !35, i64 0, !6, i64 8, !7, i64 16}
!35 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !24, i64 0}
!36 = !{!"_ZTSSt6vectorISt10shared_ptrIN4dali8ArgumentEESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseISt10shared_ptrIN4dali8ArgumentEESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN4dali8ArgumentEESaIS3_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseISt10shared_ptrIN4dali8ArgumentEESaIS3_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!40 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIvESaISt4pairIKS5_iEEE", !41, i64 0}
!41 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIvESaIS8_EE", !42, i64 0}
!42 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIvESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !43, i64 0, !45, i64 8}
!43 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIvEE", !44, i64 0}
!44 = !{!"_ZTSSt4lessIvE"}
!45 = !{!"_ZTSSt15_Rb_tree_header", !46, i64 0, !6, i64 32}
!46 = !{!"_ZTSSt18_Rb_tree_node_base", !47, i64 0, !24, i64 8, !24, i64 16, !24, i64 24}
!47 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!48 = !{!"_ZTSSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiESaIS7_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!52 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIvESaISt4pairIKS5_S5_EEE", !53, i64 0}
!53 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIvESaIS8_EE", !54, i64 0}
!54 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIvESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !43, i64 0, !45, i64 8}
!55 = !{!"_ZTSSt6vectorIN4dali6OpSpec15InOutDeviceDescESaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN4dali6OpSpec15InOutDeviceDescESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN4dali6OpSpec15InOutDeviceDescESaIS2_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN4dali6OpSpec15InOutDeviceDescESaIS2_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!59 = !{!"_ZTSSt3mapIN4dali6OpSpec15InOutDeviceDescEiSt4lessIvESaISt4pairIKS2_iEEE", !60, i64 0}
!60 = !{!"_ZTSSt8_Rb_treeIN4dali6OpSpec15InOutDeviceDescESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIvESaIS5_EE", !61, i64 0}
!61 = !{!"_ZTSNSt8_Rb_treeIN4dali6OpSpec15InOutDeviceDescESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIvESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !43, i64 0, !45, i64 8}
!62 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3anySt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEE", !63, i64 0}
!63 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St3anyESaIS9_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE", !24, i64 0, !6, i64 8, !64, i64 16, !6, i64 24, !65, i64 32, !24, i64 48}
!64 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !24, i64 0}
!65 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !66, i64 0, !6, i64 8}
!66 = !{!"float", !7, i64 0}
!67 = !{!"_ZTSSt6vectorIS_IlSaIlEESaIS1_EE", !68, i64 0}
!68 = !{!"_ZTSSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE12_Vector_implE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseISt6vectorIlSaIlEESaIS2_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!71 = !{!"_ZTSSt6vectorIS_IPvSaIS0_EESaIS2_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseISt6vectorIPvSaIS1_EESaIS3_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseISt6vectorIPvSaIS1_EESaIS3_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseISt6vectorIPvSaIS1_EESaIS3_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!75 = !{!"_ZTSN4dali11SmallVectorIiLm3ESaIiEEE", !7, i64 0, !6, i64 16}
!76 = !{!"bool", !7, i64 0}
!77 = !{!"_ZTSN4dali11SmallVectorI13_DALIDataTypeLm6ESaIS1_EEE", !7, i64 0, !6, i64 24}
!78 = !{!"_ZTSN4dali11SmallVectorIiLm6ESaIiEEE", !7, i64 0, !6, i64 24}
!79 = !{!"_ZTSSt6vectorImSaImEE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseImSaImEE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseImSaImEE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseImSaImEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!83 = !{!"_ZTSSt6vectorIN4dali15TensorListShapeILin1EEESaIS2_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN4dali15TensorListShapeILin1EEESaIS2_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN4dali15TensorListShapeILin1EEESaIS2_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN4dali15TensorListShapeILin1EEESaIS2_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!87 = !{!"_ZTSSt6vectorIN4dali11TensorShapeILin1EEESaIS2_EE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIN4dali11TensorShapeILin1EEESaIS2_EE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIN4dali11TensorShapeILin1EEESaIS2_EE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN4dali11TensorShapeILin1EEESaIS2_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!91 = !{!"_ZTSSt6vectorIN4dali13NumbaDevArrayESaIS1_EE", !92, i64 0}
!92 = !{!"_ZTSSt12_Vector_baseIN4dali13NumbaDevArrayESaIS1_EE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIN4dali13NumbaDevArrayESaIS1_EE12_Vector_implE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIN4dali13NumbaDevArrayESaIS1_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!95 = distinct !{!95, !10}
!96 = distinct !{!96, !10}
!97 = distinct !{!97, !10}
!98 = distinct !{!98, !10}
!99 = distinct !{!99, !10}


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