; LLVM IR from huawei-noah/bolt :: compute/tensor/tests/test_non_max_suppression.ll (Z21nonmaxsuppressionTestiPPc8DataType)

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

%struct.ArchInfo = type { i32, ptr }
%struct.NonMaxSuppressionParamSpec = type { i32, i32, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl" }
%"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl" = type { %"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%struct.TensorDesc = type { i32, i32, i32, [20 x i32] }
%class.Tensor = type { %"class.std::shared_ptr", %"class.std::shared_ptr.0" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl" }
%"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.5" = type { i8 }

@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@_ZL15UT_CPU_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZL18UT_SERIAL_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@.str.3 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z21nonmaxsuppressionTestiPPc8DataType(i32 noundef %0, ptr noundef %1, i32 noundef %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %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 float, align 4
  %16 = alloca float, align 4
  %17 = alloca %struct.NonMaxSuppressionParamSpec, align 4
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %struct.TensorDesc, align 4
  %23 = alloca %struct.TensorDesc, align 4
  %24 = alloca %class.Tensor, align 8
  %25 = alloca %struct.TensorDesc, align 8
  %26 = alloca %class.Tensor, align 8
  %27 = alloca %struct.TensorDesc, align 8
  %28 = alloca i32, align 4
  %29 = alloca %struct.TensorDesc, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %class.Tensor, align 8
  %32 = alloca %struct.TensorDesc, align 8
  %33 = alloca i32, align 4
  %34 = alloca %struct.TensorDesc, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %class.Tensor, align 8
  %37 = alloca %struct.TensorDesc, align 8
  %38 = alloca %"class.std::vector.3", align 8
  %39 = alloca %"class.std::allocator.5", align 1
  %40 = alloca %class.Tensor, align 8
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::vector.3", align 8
  %43 = alloca %struct.NonMaxSuppressionParamSpec, align 4
  %44 = alloca i32, align 4
  %45 = alloca %class.Tensor, align 8
  %46 = alloca %struct.TensorDesc, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca %"class.std::vector", align 8
  %50 = alloca %struct.NonMaxSuppressionParamSpec, align 4
  %51 = alloca %class.Tensor, align 8
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca %"class.std::vector", align 8
  %55 = alloca %struct.NonMaxSuppressionParamSpec, align 4
  %56 = alloca %class.Tensor, align 8
  %57 = alloca i32, align 4
  %58 = alloca %class.Tensor, align 8
  %59 = alloca %class.Tensor, align 8
  %60 = alloca %struct.TensorDesc, align 4
  %61 = alloca ptr, align 8
  %62 = alloca %class.Tensor, align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !11
  %65 = load i32, ptr %4, align 4, !tbaa !5
  %66 = icmp eq i32 %65, 12
  br i1 %66, label %77, label %67

67:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  %68 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %69 = trunc i64 %68 to i32
  store i32 %69, ptr %7, align 4, !tbaa !5
  %70 = load i32, ptr %7, align 4, !tbaa !5
  %71 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %70)
  %72 = load ptr, ptr @stdout, align 8, !tbaa !9
  %73 = call i32 @fflush(ptr noundef %72)
  %74 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %75 = load ptr, ptr @stdout, align 8, !tbaa !9
  %76 = call i32 @fflush(ptr noundef %75)
  call void @exit(i32 noundef 1) #12
  unreachable

77:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #11
  %78 = load ptr, ptr %5, align 8, !tbaa !9
  %79 = getelementptr inbounds ptr, ptr %78, i64 1
  %80 = load ptr, ptr %79, align 8, !tbaa !9
  %81 = call i32 @atoi(ptr noundef %80) #13
  store i32 %81, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  %82 = load ptr, ptr %5, align 8, !tbaa !9
  %83 = getelementptr inbounds ptr, ptr %82, i64 2
  %84 = load ptr, ptr %83, align 8, !tbaa !9
  %85 = call i32 @atoi(ptr noundef %84) #13
  store i32 %85, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  %86 = load ptr, ptr %5, align 8, !tbaa !9
  %87 = getelementptr inbounds ptr, ptr %86, i64 3
  %88 = load ptr, ptr %87, align 8, !tbaa !9
  %89 = call i32 @atoi(ptr noundef %88) #13
  store i32 %89, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  %90 = load ptr, ptr %5, align 8, !tbaa !9
  %91 = getelementptr inbounds ptr, ptr %90, i64 4
  %92 = load ptr, ptr %91, align 8, !tbaa !9
  %93 = call i32 @atoi(ptr noundef %92) #13
  store i32 %93, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  %94 = load ptr, ptr %5, align 8, !tbaa !9
  %95 = getelementptr inbounds ptr, ptr %94, i64 5
  %96 = load ptr, ptr %95, align 8, !tbaa !9
  %97 = call i32 @atoi(ptr noundef %96) #13
  store i32 %97, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  %98 = load ptr, ptr %5, align 8, !tbaa !9
  %99 = getelementptr inbounds ptr, ptr %98, i64 6
  %100 = load ptr, ptr %99, align 8, !tbaa !9
  %101 = call i32 @atoi(ptr noundef %100) #13
  store i32 %101, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  %102 = load ptr, ptr %5, align 8, !tbaa !9
  %103 = getelementptr inbounds ptr, ptr %102, i64 9
  %104 = load ptr, ptr %103, align 8, !tbaa !9
  %105 = call i32 @atoi(ptr noundef %104) #13
  store i32 %105, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  %106 = load ptr, ptr %5, align 8, !tbaa !9
  %107 = getelementptr inbounds ptr, ptr %106, i64 10
  %108 = load ptr, ptr %107, align 8, !tbaa !9
  %109 = call double @atof(ptr noundef %108) #13
  %110 = fptrunc double %109 to float
  store float %110, ptr %15, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  %111 = load ptr, ptr %5, align 8, !tbaa !9
  %112 = getelementptr inbounds ptr, ptr %111, i64 11
  %113 = load ptr, ptr %112, align 8, !tbaa !9
  %114 = call double @atof(ptr noundef %113) #13
  %115 = fptrunc double %114 to float
  store float %115, ptr %16, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #11
  %116 = load i32, ptr %14, align 4, !tbaa !5
  %117 = getelementptr inbounds %struct.NonMaxSuppressionParamSpec, ptr %17, i32 0, i32 1
  store i32 %116, ptr %117, align 4, !tbaa !15
  %118 = load float, ptr %15, align 4, !tbaa !13
  %119 = getelementptr inbounds %struct.NonMaxSuppressionParamSpec, ptr %17, i32 0, i32 2
  store float %118, ptr %119, align 4, !tbaa !17
  %120 = load float, ptr %16, align 4, !tbaa !13
  %121 = getelementptr inbounds %struct.NonMaxSuppressionParamSpec, ptr %17, i32 0, i32 3
  store float %120, ptr %121, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #11
  call void @_ZNSaI6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #11
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2EmRKS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 2, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %122 unwind label %199

122:                                              ; preds = %77
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  call void @llvm.lifetime.start.p0(i64 92, ptr %22) #11
  %123 = load i32, ptr %6, align 4, !tbaa !11
  %124 = load i32, ptr %8, align 4, !tbaa !5
  %125 = load i32, ptr %9, align 4, !tbaa !5
  %126 = load i32, ptr %10, align 4, !tbaa !5
  invoke void @_Z8tensor3d8DataTypejjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %22, i32 noundef %123, i32 noundef %124, i32 noundef %125, i32 noundef %126)
          to label %127 unwind label %203

127:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 92, ptr %23) #11
  %128 = load i32, ptr %6, align 4, !tbaa !11
  %129 = load i32, ptr %11, align 4, !tbaa !5
  %130 = load i32, ptr %12, align 4, !tbaa !5
  %131 = load i32, ptr %13, align 4, !tbaa !5
  invoke void @_Z8tensor3d8DataTypejjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %23, i32 noundef %128, i32 noundef %129, i32 noundef %130, i32 noundef %131)
          to label %132 unwind label %207

132:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 4 %22, i64 92, i1 false), !tbaa.struct !19
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind writable sret(%class.Tensor) align 8 %24, ptr noundef byval(%struct.TensorDesc) align 8 %25)
          to label %133 unwind label %211

133:                                              ; preds = %132
  %134 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #11
  %135 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN6TensoraSEOS_(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %23, i64 92, i1 false), !tbaa.struct !19
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind writable sret(%class.Tensor) align 8 %26, ptr noundef byval(%struct.TensorDesc) align 8 %27)
          to label %136 unwind label %215

136:                                              ; preds = %133
  %137 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 1) #11
  %138 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN6TensoraSEOS_(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %22, i64 92, i1 false), !tbaa.struct !19
  %139 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %29)
          to label %140 unwind label %219

140:                                              ; preds = %136
  store i32 %139, ptr %28, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %141 = load i32, ptr %28, align 4, !tbaa !5
  %142 = load i32, ptr %6, align 4, !tbaa !11
  %143 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %141, i32 noundef %142, i32 noundef 0)
          to label %144 unwind label %223

144:                                              ; preds = %140
  store ptr %143, ptr %30, align 8, !tbaa !9
  %145 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #11
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %145) #11
  %146 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %31, i32 noundef 1)
          to label %147 unwind label %227

147:                                              ; preds = %144
  %148 = load ptr, ptr %30, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %22, i64 92, i1 false), !tbaa.struct !19
  %149 = invoke noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %32)
          to label %150 unwind label %227

150:                                              ; preds = %147
  %151 = zext i32 %149 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %146, ptr noundef %148, i64 noundef %151)
          to label %152 unwind label %227

152:                                              ; preds = %150
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %23, i64 92, i1 false), !tbaa.struct !19
  %153 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %34)
          to label %154 unwind label %231

154:                                              ; preds = %152
  store i32 %153, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %155 = load i32, ptr %33, align 4, !tbaa !5
  %156 = load i32, ptr %6, align 4, !tbaa !11
  %157 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %155, i32 noundef %156, i32 noundef 0)
          to label %158 unwind label %235

158:                                              ; preds = %154
  store ptr %157, ptr %35, align 8, !tbaa !9
  %159 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 1) #11
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %159) #11
  %160 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %36, i32 noundef 1)
          to label %161 unwind label %239

161:                                              ; preds = %158
  %162 = load ptr, ptr %35, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %23, i64 92, i1 false), !tbaa.struct !19
  %163 = invoke noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %37)
          to label %164 unwind label %239

164:                                              ; preds = %161
  %165 = zext i32 %163 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %160, ptr noundef %162, i64 noundef %165)
          to label %166 unwind label %239

166:                                              ; preds = %164
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #11
  call void @_ZNSaIP6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #11
  invoke void @_ZNSt6vectorIP6TensorSaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 2, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %167 unwind label %243

167:                                              ; preds = %166
  call void @_ZNSt15__new_allocatorIP6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #11
  %168 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #11
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6TensorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 0) #11
  store ptr %168, ptr %169, align 8, !tbaa !9
  %170 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 1) #11
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6TensorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef 1) #11
  store ptr %170, ptr %171, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #11
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %40, i32 noundef 1)
          to label %172 unwind label %247

172:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #11
  invoke void @_ZNSt6vectorIP6TensorSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %173 unwind label %251

173:                                              ; preds = %172
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !23
  %174 = getelementptr inbounds { i64, <2 x float> }, ptr %43, i32 0, i32 0
  %175 = load i64, ptr %174, align 4
  %176 = getelementptr inbounds { i64, <2 x float> }, ptr %43, i32 0, i32 1
  %177 = load <2 x float>, ptr %176, align 4
  %178 = invoke noundef i32 @_Z37non_max_suppression_infer_output_sizeSt6vectorIP6TensorSaIS1_EE26NonMaxSuppressionParamSpecS1_P8ArchInfo(ptr noundef %42, i64 %175, <2 x float> %177, ptr noundef %40, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %179 unwind label %255

179:                                              ; preds = %173
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #11
  store i32 %178, ptr %41, align 4, !tbaa !24
  %180 = load i32, ptr %41, align 4, !tbaa !24
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %263

182:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  %183 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %184 = trunc i64 %183 to i32
  store i32 %184, ptr %44, align 4, !tbaa !5
  %185 = load i32, ptr %44, align 4, !tbaa !5
  %186 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %185)
          to label %187 unwind label %259

187:                                              ; preds = %182
  %188 = load ptr, ptr @stdout, align 8, !tbaa !9
  %189 = invoke i32 @fflush(ptr noundef %188)
          to label %190 unwind label %259

190:                                              ; preds = %187
  %191 = load i32, ptr %41, align 4, !tbaa !24
  %192 = invoke ptr @ee2str(i32 noundef %191)
          to label %193 unwind label %259

193:                                              ; preds = %190
  %194 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %192)
          to label %195 unwind label %259

195:                                              ; preds = %193
  %196 = load ptr, ptr @stdout, align 8, !tbaa !9
  %197 = invoke i32 @fflush(ptr noundef %196)
          to label %198 unwind label %259

198:                                              ; preds = %195
  call void @exit(i32 noundef 1) #12
  unreachable

199:                                              ; preds = %77
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %20, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %21, align 4
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  br label %472

203:                                              ; preds = %122
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %20, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %21, align 4
  br label %471

207:                                              ; preds = %127
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %20, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %21, align 4
  br label %470

211:                                              ; preds = %132
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %20, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #11
  br label %470

215:                                              ; preds = %133
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %20, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #11
  br label %470

219:                                              ; preds = %136
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %20, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %21, align 4
  br label %469

223:                                              ; preds = %140
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %20, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %21, align 4
  br label %468

227:                                              ; preds = %150, %147, %144
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %20, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #11
  br label %468

231:                                              ; preds = %152
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %20, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %21, align 4
  br label %467

235:                                              ; preds = %154
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %20, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %21, align 4
  br label %466

239:                                              ; preds = %164, %161, %158
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %20, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #11
  br label %466

243:                                              ; preds = %166
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %20, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %21, align 4
  call void @_ZNSt15__new_allocatorIP6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #11
  br label %465

247:                                              ; preds = %167
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %20, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %21, align 4
  br label %464

251:                                              ; preds = %172
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %20, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %21, align 4
  br label %296

255:                                              ; preds = %173
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %20, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %21, align 4
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #11
  br label %296

259:                                              ; preds = %195, %193, %190, %187, %182
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %20, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %296

263:                                              ; preds = %179
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %264 unwind label %297

264:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #11
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %46, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %265 unwind label %301

265:                                              ; preds = %264
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind writable sret(%class.Tensor) align 8 %45, ptr noundef byval(%struct.TensorDesc) align 8 %46)
          to label %266 unwind label %301

266:                                              ; preds = %265
  %267 = load i32, ptr %28, align 4, !tbaa !5
  %268 = load i32, ptr %8, align 4, !tbaa !5
  %269 = load i32, ptr %9, align 4, !tbaa !5
  %270 = mul i32 %268, %269
  %271 = load i32, ptr %10, align 4, !tbaa !5
  %272 = mul i32 %270, %271
  %273 = icmp eq i32 %267, %272
  br i1 %273, label %274, label %282

274:                                              ; preds = %266
  %275 = load i32, ptr %33, align 4, !tbaa !5
  %276 = load i32, ptr %11, align 4, !tbaa !5
  %277 = load i32, ptr %12, align 4, !tbaa !5
  %278 = mul i32 %276, %277
  %279 = load i32, ptr %13, align 4, !tbaa !5
  %280 = mul i32 %278, %279
  %281 = icmp eq i32 %275, %280
  br i1 %281, label %309, label %282

282:                                              ; preds = %274, %266
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  %283 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %284 = trunc i64 %283 to i32
  store i32 %284, ptr %47, align 4, !tbaa !5
  %285 = load i32, ptr %47, align 4, !tbaa !5
  %286 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %285)
          to label %287 unwind label %305

287:                                              ; preds = %282
  %288 = load ptr, ptr @stdout, align 8, !tbaa !9
  %289 = invoke i32 @fflush(ptr noundef %288)
          to label %290 unwind label %305

290:                                              ; preds = %287
  %291 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.1)
          to label %292 unwind label %305

292:                                              ; preds = %290
  %293 = load ptr, ptr @stdout, align 8, !tbaa !9
  %294 = invoke i32 @fflush(ptr noundef %293)
          to label %295 unwind label %305

295:                                              ; preds = %292
  call void @exit(i32 noundef 1) #12
  unreachable

296:                                              ; preds = %259, %255, %251
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  br label %463

297:                                              ; preds = %263
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %20, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %21, align 4
  br label %463

301:                                              ; preds = %265, %264
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %20, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %21, align 4
  br label %462

305:                                              ; preds = %292, %290, %287, %282
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %20, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %461

309:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %310 unwind label %336

310:                                              ; preds = %309
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %40) #11
  %311 = getelementptr inbounds { i64, <2 x float> }, ptr %50, i32 0, i32 0
  %312 = load i64, ptr %311, align 4
  %313 = getelementptr inbounds { i64, <2 x float> }, ptr %50, i32 0, i32 1
  %314 = load <2 x float>, ptr %313, align 4
  %315 = invoke noundef i32 @_Z19non_max_suppressionSt6vectorI6TensorSaIS0_EE26NonMaxSuppressionParamSpecS0_P8ArchInfo(ptr noundef %49, i64 %312, <2 x float> %314, ptr noundef %51, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %316 unwind label %340

316:                                              ; preds = %310
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #11
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #11
  store i32 %315, ptr %48, align 4, !tbaa !24
  %317 = load i32, ptr %48, align 4, !tbaa !24
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %319, label %348

319:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #11
  %320 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %321 = trunc i64 %320 to i32
  store i32 %321, ptr %52, align 4, !tbaa !5
  %322 = load i32, ptr %52, align 4, !tbaa !5
  %323 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %322)
          to label %324 unwind label %344

324:                                              ; preds = %319
  %325 = load ptr, ptr @stdout, align 8, !tbaa !9
  %326 = invoke i32 @fflush(ptr noundef %325)
          to label %327 unwind label %344

327:                                              ; preds = %324
  %328 = load i32, ptr %48, align 4, !tbaa !24
  %329 = invoke ptr @ee2str(i32 noundef %328)
          to label %330 unwind label %344

330:                                              ; preds = %327
  %331 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %329)
          to label %332 unwind label %344

332:                                              ; preds = %330
  %333 = load ptr, ptr @stdout, align 8, !tbaa !9
  %334 = invoke i32 @fflush(ptr noundef %333)
          to label %335 unwind label %344

335:                                              ; preds = %332
  call void @exit(i32 noundef 1) #12
  unreachable

336:                                              ; preds = %309
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %20, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %21, align 4
  br label %375

340:                                              ; preds = %310
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %20, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #11
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #11
  br label %375

344:                                              ; preds = %332, %330, %327, %324, %319
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %20, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  br label %375

348:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %349 unwind label %376

349:                                              ; preds = %348
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %45) #11
  %350 = getelementptr inbounds { i64, <2 x float> }, ptr %55, i32 0, i32 0
  %351 = load i64, ptr %350, align 4
  %352 = getelementptr inbounds { i64, <2 x float> }, ptr %55, i32 0, i32 1
  %353 = load <2 x float>, ptr %352, align 4
  %354 = invoke noundef i32 @_Z19non_max_suppressionSt6vectorI6TensorSaIS0_EE26NonMaxSuppressionParamSpecS0_P8ArchInfo(ptr noundef %54, i64 %351, <2 x float> %353, ptr noundef %56, ptr noundef @_ZL18UT_SERIAL_ARCHINFO)
          to label %355 unwind label %380

355:                                              ; preds = %349
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #11
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #11
  store i32 %354, ptr %53, align 4, !tbaa !24
  %356 = load i32, ptr %53, align 4, !tbaa !24
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %388

358:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  %359 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %360 = trunc i64 %359 to i32
  store i32 %360, ptr %57, align 4, !tbaa !5
  %361 = load i32, ptr %57, align 4, !tbaa !5
  %362 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %361)
          to label %363 unwind label %384

363:                                              ; preds = %358
  %364 = load ptr, ptr @stdout, align 8, !tbaa !9
  %365 = invoke i32 @fflush(ptr noundef %364)
          to label %366 unwind label %384

366:                                              ; preds = %363
  %367 = load i32, ptr %53, align 4, !tbaa !24
  %368 = invoke ptr @ee2str(i32 noundef %367)
          to label %369 unwind label %384

369:                                              ; preds = %366
  %370 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %368)
          to label %371 unwind label %384

371:                                              ; preds = %369
  %372 = load ptr, ptr @stdout, align 8, !tbaa !9
  %373 = invoke i32 @fflush(ptr noundef %372)
          to label %374 unwind label %384

374:                                              ; preds = %371
  call void @exit(i32 noundef 1) #12
  unreachable

375:                                              ; preds = %344, %340, %336
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  br label %461

376:                                              ; preds = %348
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %20, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %21, align 4
  br label %408

380:                                              ; preds = %349
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %20, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #11
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #11
  br label %408

384:                                              ; preds = %371, %369, %366, %363, %358
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %20, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %408

388:                                              ; preds = %355
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %40) #11
  %389 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %58, i32 noundef 1)
          to label %390 unwind label %409

390:                                              ; preds = %388
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %45) #11
  %391 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %59, i32 noundef 1)
          to label %392 unwind label %413

392:                                              ; preds = %390
  %393 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %394 unwind label %413

394:                                              ; preds = %392
  %395 = load i32, ptr %6, align 4, !tbaa !11
  invoke void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef %389, ptr noundef %391, i32 noundef %393, i32 noundef %395, float noundef 0x3FA99999A0000000)
          to label %396 unwind label %413

396:                                              ; preds = %394
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #11
  call void @llvm.lifetime.start.p0(i64 92, ptr %60) #11
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %60, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %397 unwind label %418

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %40) #11
  %398 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %62, i32 noundef 1)
          to label %399 unwind label %422

399:                                              ; preds = %397
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #11
  store ptr %398, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #11
  %400 = getelementptr inbounds %struct.TensorDesc, ptr %60, i32 0, i32 3
  %401 = getelementptr inbounds [20 x i32], ptr %400, i64 0, i64 1
  %402 = load i32, ptr %401, align 4, !tbaa !5
  store i32 %402, ptr %63, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  store i32 0, ptr %64, align 4, !tbaa !5
  br label %403

403:                                              ; preds = %449, %399
  %404 = load i32, ptr %64, align 4, !tbaa !5
  %405 = load i32, ptr %63, align 4, !tbaa !5
  %406 = icmp ult i32 %404, %405
  br i1 %406, label %426, label %407

407:                                              ; preds = %403
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %456

408:                                              ; preds = %384, %380, %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %461

409:                                              ; preds = %388
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %20, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %21, align 4
  br label %417

413:                                              ; preds = %394, %392, %390
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %20, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #11
  br label %417

417:                                              ; preds = %413, %409
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #11
  br label %461

418:                                              ; preds = %396
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %20, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %21, align 4
  br label %460

422:                                              ; preds = %397
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %20, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #11
  br label %459

426:                                              ; preds = %403
  %427 = load ptr, ptr %61, align 8, !tbaa !9
  %428 = load i32, ptr %64, align 4, !tbaa !5
  %429 = mul i32 %428, 3
  %430 = zext i32 %429 to i64
  %431 = getelementptr inbounds i32, ptr %427, i64 %430
  %432 = load i32, ptr %431, align 4, !tbaa !5
  %433 = load ptr, ptr %61, align 8, !tbaa !9
  %434 = load i32, ptr %64, align 4, !tbaa !5
  %435 = mul i32 %434, 3
  %436 = add i32 %435, 1
  %437 = zext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %433, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !5
  %440 = load ptr, ptr %61, align 8, !tbaa !9
  %441 = load i32, ptr %64, align 4, !tbaa !5
  %442 = mul i32 %441, 3
  %443 = add i32 %442, 2
  %444 = zext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %440, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %432, i32 noundef %439, i32 noundef %446)
          to label %448 unwind label %452

448:                                              ; preds = %426
  br label %449

449:                                              ; preds = %448
  %450 = load i32, ptr %64, align 4, !tbaa !5
  %451 = add i32 %450, 1
  store i32 %451, ptr %64, align 4, !tbaa !5
  br label %403, !llvm.loop !26

452:                                              ; preds = %426
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %20, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  br label %459

456:                                              ; preds = %407
  %457 = load ptr, ptr %30, align 8, !tbaa !9
  call void @free(ptr noundef %457) #11
  %458 = load ptr, ptr %35, align 8, !tbaa !9
  call void @free(ptr noundef %458) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 92, ptr %60) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #11
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 92, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 92, ptr %22) #11
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  ret i32 0

459:                                              ; preds = %452, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  br label %460

460:                                              ; preds = %459, %418
  call void @llvm.lifetime.end.p0(i64 92, ptr %60) #11
  br label %461

461:                                              ; preds = %460, %417, %408, %375, %305
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #11
  br label %462

462:                                              ; preds = %461, %301
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #11
  br label %463

463:                                              ; preds = %462, %297, %296
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #11
  br label %464

464:                                              ; preds = %463, %247
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #11
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #11
  br label %465

465:                                              ; preds = %464, %243
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #11
  br label %466

466:                                              ; preds = %465, %239, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %467

467:                                              ; preds = %466, %231
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %468

468:                                              ; preds = %467, %227, %223
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %469

469:                                              ; preds = %468, %219
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %470

470:                                              ; preds = %469, %215, %211, %207
  call void @llvm.lifetime.end.p0(i64 92, ptr %23) #11
  br label %471

471:                                              ; preds = %470, %203
  call void @llvm.lifetime.end.p0(i64 92, ptr %22) #11
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #11
  br label %472

472:                                              ; preds = %471, %199
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %473

473:                                              ; preds = %472
  %474 = load ptr, ptr %20, align 8
  %475 = load i32, ptr %21, align 4
  %476 = insertvalue { ptr, i32 } poison, ptr %474, 0
  %477 = insertvalue { ptr, i32 } %476, i32 %475, 1
  resume { ptr, i32 } %477
}

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

; Function Attrs: nounwind
declare i64 @syscall(i64 noundef, ...) #2

declare i32 @printf(ptr noundef, ...) #3

declare i32 @fflush(ptr noundef) #3

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #5

; Function Attrs: inlinehint mustprogress nounwind willreturn memory(read) uwtable
declare double @atof(ptr noundef nonnull) #5

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z8tensor3d8DataTypejjj(ptr dead_on_unwind noalias writable sret(%struct.TensorDesc) align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind noalias writable sret(%class.Tensor) align 8, ptr noundef byval(%struct.TensorDesc) align 8) #7 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #10 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #10

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef, i32 noundef, i32 noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10UNI_MEMCPYPvPKvm(ptr noundef, ptr noundef, i64 noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef, i32 noundef) #8

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #8

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

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

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

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

declare noundef i32 @_Z37non_max_suppression_infer_output_sizeSt6vectorIP6TensorSaIS1_EE26NonMaxSuppressionParamSpecS1_P8ArchInfo(ptr noundef, i64, <2 x float>, ptr noundef, ptr noundef) #3

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @ee2str(i32 noundef) #10

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor8get_descEv(ptr dead_on_unwind noalias writable sret(%struct.TensorDesc) align 4, ptr noundef nonnull align 8 dereferenceable(32)) #7 align 2

declare noundef i32 @_Z19non_max_suppressionSt6vectorI6TensorSaIS0_EE26NonMaxSuppressionParamSpecS0_P8ArchInfo(ptr noundef, i64, <2 x float>, ptr noundef, ptr noundef) #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef, ptr noundef, i32 noundef, i32 noundef, float noundef) #8

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #2

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "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 = { "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 = { noreturn nounwind "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 = { inlinehint mustprogress nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { 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 #11 = { nounwind }
attributes #12 = { noreturn nounwind }
attributes #13 = { nounwind willreturn memory(read) }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTS8DataType", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !6, i64 4}
!16 = !{!"_ZTS26NonMaxSuppressionParamSpec", !6, i64 0, !6, i64 4, !14, i64 8, !14, i64 12}
!17 = !{!16, !14, i64 8}
!18 = !{!16, !14, i64 12}
!19 = !{i64 0, i64 4, !11, i64 4, i64 4, !20, i64 8, i64 4, !5, i64 12, i64 80, !22}
!20 = !{!21, !21, i64 0}
!21 = !{!"_ZTS10DataFormat", !7, i64 0}
!22 = !{!7, !7, i64 0}
!23 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !13, i64 12, i64 4, !13}
!24 = !{!25, !25, i64 0}
!25 = !{!"_ZTS2EE", !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}


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

%struct.ArchInfo = type { i32, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl" }
%"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl" = type { %"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Tensor, std::allocator<Tensor>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%struct.TensorDesc = type { i32, i32, i32, [20 x i32] }
%class.Tensor = type { %"class.std::shared_ptr", %"class.std::shared_ptr.0" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::shared_ptr.0" = type { %"class.std::__shared_ptr.1" }
%"class.std::__shared_ptr.1" = type { ptr, %"class.std::__shared_count" }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl" }
%"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Tensor *, std::allocator<Tensor *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.5" = type { i8 }

@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@_ZL15UT_CPU_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@.str.2 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZL18UT_SERIAL_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@.str.3 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z21nonmaxsuppressionTestiPPc8DataType(i32 noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %struct.TensorDesc, align 8
  %7 = alloca %struct.TensorDesc, align 8
  %8 = alloca %class.Tensor, align 8
  %9 = alloca %class.Tensor, align 8
  %10 = alloca %class.Tensor, align 8
  %11 = alloca %class.Tensor, align 8
  %12 = alloca %"class.std::vector.3", align 8
  %13 = alloca %"class.std::allocator.5", align 1
  %14 = alloca %class.Tensor, align 8
  %15 = alloca %"class.std::vector.3", align 8
  %16 = alloca %class.Tensor, align 8
  %17 = alloca %struct.TensorDesc, align 8
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %class.Tensor, align 8
  %20 = alloca %"class.std::vector", align 8
  %21 = alloca %class.Tensor, align 8
  %22 = alloca %class.Tensor, align 8
  %23 = alloca %class.Tensor, align 8
  %24 = alloca %struct.TensorDesc, align 4
  %25 = alloca %class.Tensor, align 8
  %26 = icmp eq i32 %0, 12
  br i1 %26, label %36, label %27

27:                                               ; preds = %3
  %28 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %29 = trunc i64 %28 to i32
  %30 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %29)
  %31 = load ptr, ptr @stdout, align 8, !tbaa !5
  %32 = tail call i32 @fflush(ptr noundef %31)
  %33 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %34 = load ptr, ptr @stdout, align 8, !tbaa !5
  %35 = tail call i32 @fflush(ptr noundef %34)
  tail call void @exit(i32 noundef 1) #13
  unreachable

36:                                               ; preds = %3
  %37 = getelementptr inbounds i8, ptr %1, i64 8
  %38 = load ptr, ptr %37, align 8, !tbaa !5
  %39 = tail call i32 @atoi(ptr nocapture noundef %38) #14
  %40 = getelementptr inbounds i8, ptr %1, i64 16
  %41 = load ptr, ptr %40, align 8, !tbaa !5
  %42 = tail call i32 @atoi(ptr nocapture noundef %41) #14
  %43 = getelementptr inbounds i8, ptr %1, i64 24
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = tail call i32 @atoi(ptr nocapture noundef %44) #14
  %46 = getelementptr inbounds i8, ptr %1, i64 32
  %47 = load ptr, ptr %46, align 8, !tbaa !5
  %48 = tail call i32 @atoi(ptr nocapture noundef %47) #14
  %49 = getelementptr inbounds i8, ptr %1, i64 40
  %50 = load ptr, ptr %49, align 8, !tbaa !5
  %51 = tail call i32 @atoi(ptr nocapture noundef %50) #14
  %52 = getelementptr inbounds i8, ptr %1, i64 48
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  %54 = tail call i32 @atoi(ptr nocapture noundef %53) #14
  %55 = getelementptr inbounds i8, ptr %1, i64 72
  %56 = load ptr, ptr %55, align 8, !tbaa !5
  %57 = tail call i32 @atoi(ptr nocapture noundef %56) #14
  %58 = getelementptr inbounds i8, ptr %1, i64 80
  %59 = load ptr, ptr %58, align 8, !tbaa !5
  %60 = tail call double @atof(ptr noundef %59) #14
  %61 = getelementptr inbounds i8, ptr %1, i64 88
  %62 = load ptr, ptr %61, align 8, !tbaa !5
  %63 = tail call double @atof(ptr noundef %62) #14
  %64 = insertelement <2 x double> poison, double %60, i64 0
  %65 = insertelement <2 x double> %64, double %63, i64 1
  %66 = fptrunc <2 x double> %65 to <2 x float>
  %.sroa.032.4.insert.ext = zext i32 %57 to i64
  %.sroa.032.4.insert.shift = shl nuw i64 %.sroa.032.4.insert.ext, 32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #12
  call void @_ZNSaI6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2EmRKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 2, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %67 unwind label %115

67:                                               ; preds = %36
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #12
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %6) #12
  invoke void @_Z8tensor3d8DataTypejjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %6, i32 noundef %2, i32 noundef %39, i32 noundef %42, i32 noundef %45)
          to label %68 unwind label %117

68:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %7) #12
  invoke void @_Z8tensor3d8DataTypejjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %7, i32 noundef %2, i32 noundef %48, i32 noundef %51, i32 noundef %54)
          to label %69 unwind label %119

69:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #12
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind nonnull writable sret(%class.Tensor) align 8 %8, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %6)
          to label %70 unwind label %121

70:                                               ; preds = %69
  %71 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #12
  %72 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN6TensoraSEOS_(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #12
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind nonnull writable sret(%class.Tensor) align 8 %9, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %7)
          to label %73 unwind label %123

73:                                               ; preds = %70
  %74 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 1) #12
  %75 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN6TensoraSEOS_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  %76 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %6)
  %77 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %76, i32 noundef %2, i32 noundef 0)
          to label %78 unwind label %125

78:                                               ; preds = %73
  %79 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #12
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %79) #12
  %80 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %10, i32 noundef 1)
          to label %81 unwind label %127

81:                                               ; preds = %78
  %82 = invoke noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %6)
          to label %83 unwind label %127

83:                                               ; preds = %81
  %84 = zext i32 %82 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %80, ptr noundef %77, i64 noundef %84)
          to label %85 unwind label %127

85:                                               ; preds = %83
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  %86 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %7)
  %87 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %86, i32 noundef %2, i32 noundef 0)
          to label %88 unwind label %129

88:                                               ; preds = %85
  %89 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 1) #12
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %89) #12
  %90 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %11, i32 noundef 1)
          to label %91 unwind label %131

91:                                               ; preds = %88
  %92 = invoke noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %7)
          to label %93 unwind label %131

93:                                               ; preds = %91
  %94 = zext i32 %92 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %90, ptr noundef %87, i64 noundef %94)
          to label %95 unwind label %131

95:                                               ; preds = %93
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #12
  call void @_ZNSaIP6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  invoke void @_ZNSt6vectorIP6TensorSaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 2, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %96 unwind label %133

96:                                               ; preds = %95
  call void @_ZNSt15__new_allocatorIP6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  %97 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #12
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6TensorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 0) #12
  store ptr %97, ptr %98, align 8, !tbaa !5
  %99 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorI6TensorSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 1) #12
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6TensorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 1) #12
  store ptr %99, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #12
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 1)
          to label %101 unwind label %135

101:                                              ; preds = %96
  invoke void @_ZNSt6vectorIP6TensorSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %102 unwind label %137

102:                                              ; preds = %101
  %103 = invoke noundef i32 @_Z37non_max_suppression_infer_output_sizeSt6vectorIP6TensorSaIS1_EE26NonMaxSuppressionParamSpecS1_P8ArchInfo(ptr noundef nonnull %15, i64 %.sroa.032.4.insert.shift, <2 x float> %66, ptr noundef nonnull %14, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %104 unwind label %139

104:                                              ; preds = %102
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  %.not = icmp eq i32 %103, 0
  br i1 %.not, label %141, label %105

105:                                              ; preds = %104
  %106 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %107 = trunc i64 %106 to i32
  %108 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %107)
  %109 = load ptr, ptr @stdout, align 8, !tbaa !5
  %110 = call i32 @fflush(ptr noundef %109)
  %111 = call ptr @ee2str(i32 noundef %103)
  %112 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %111)
  %113 = load ptr, ptr @stdout, align 8, !tbaa !5
  %114 = call i32 @fflush(ptr noundef %113)
  call void @exit(i32 noundef 1) #13
  unreachable

115:                                              ; preds = %36
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #12
  br label %245

117:                                              ; preds = %67
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %244

119:                                              ; preds = %68
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %243

121:                                              ; preds = %69
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  br label %243

123:                                              ; preds = %70
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  br label %243

125:                                              ; preds = %73
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %243

127:                                              ; preds = %83, %81, %78
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  br label %243

129:                                              ; preds = %85
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %243

131:                                              ; preds = %93, %91, %88
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  br label %243

133:                                              ; preds = %95
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIP6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  br label %242

135:                                              ; preds = %96
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %241

137:                                              ; preds = %101
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %240

139:                                              ; preds = %102
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  br label %240

141:                                              ; preds = %104
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %142 unwind label %161

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #12
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %17, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %143 unwind label %163

143:                                              ; preds = %142
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind nonnull writable sret(%class.Tensor) align 8 %16, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %17)
          to label %144 unwind label %163

144:                                              ; preds = %143
  %145 = mul i32 %42, %39
  %146 = mul i32 %145, %45
  %147 = icmp eq i32 %76, %146
  br i1 %147, label %148, label %152

148:                                              ; preds = %144
  %149 = mul i32 %51, %48
  %150 = mul i32 %149, %54
  %151 = icmp eq i32 %86, %150
  br i1 %151, label %165, label %152

152:                                              ; preds = %148, %144
  %153 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %154 = trunc i64 %153 to i32
  %155 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %154)
  %156 = load ptr, ptr @stdout, align 8, !tbaa !5
  %157 = call i32 @fflush(ptr noundef %156)
  %158 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %159 = load ptr, ptr @stdout, align 8, !tbaa !5
  %160 = call i32 @fflush(ptr noundef %159)
  call void @exit(i32 noundef 1) #13
  unreachable

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

163:                                              ; preds = %143, %142
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %239

165:                                              ; preds = %148
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %166 unwind label %179

166:                                              ; preds = %165
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  %167 = invoke noundef i32 @_Z19non_max_suppressionSt6vectorI6TensorSaIS0_EE26NonMaxSuppressionParamSpecS0_P8ArchInfo(ptr noundef nonnull %18, i64 %.sroa.032.4.insert.shift, <2 x float> %66, ptr noundef nonnull %19, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %168 unwind label %181

168:                                              ; preds = %166
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #12
  %.not91 = icmp eq i32 %167, 0
  br i1 %.not91, label %183, label %169

169:                                              ; preds = %168
  %170 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %171 = trunc i64 %170 to i32
  %172 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %171)
  %173 = load ptr, ptr @stdout, align 8, !tbaa !5
  %174 = call i32 @fflush(ptr noundef %173)
  %175 = call ptr @ee2str(i32 noundef %167)
  %176 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %175)
  %177 = load ptr, ptr @stdout, align 8, !tbaa !5
  %178 = call i32 @fflush(ptr noundef %177)
  call void @exit(i32 noundef 1) #13
  unreachable

179:                                              ; preds = %165
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %238

181:                                              ; preds = %166
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #12
  br label %238

183:                                              ; preds = %168
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %184 unwind label %197

184:                                              ; preds = %183
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  %185 = invoke noundef i32 @_Z19non_max_suppressionSt6vectorI6TensorSaIS0_EE26NonMaxSuppressionParamSpecS0_P8ArchInfo(ptr noundef nonnull %20, i64 %.sroa.032.4.insert.shift, <2 x float> %66, ptr noundef nonnull %21, ptr noundef nonnull @_ZL18UT_SERIAL_ARCHINFO)
          to label %186 unwind label %199

186:                                              ; preds = %184
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %.not94 = icmp eq i32 %185, 0
  br i1 %.not94, label %201, label %187

187:                                              ; preds = %186
  %188 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %189 = trunc i64 %188 to i32
  %190 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %189)
  %191 = load ptr, ptr @stdout, align 8, !tbaa !5
  %192 = call i32 @fflush(ptr noundef %191)
  %193 = call ptr @ee2str(i32 noundef %185)
  %194 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %193)
  %195 = load ptr, ptr @stdout, align 8, !tbaa !5
  %196 = call i32 @fflush(ptr noundef %195)
  call void @exit(i32 noundef 1) #13
  unreachable

197:                                              ; preds = %183
  %198 = landingpad { ptr, i32 }
          cleanup
  br label %238

199:                                              ; preds = %184
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  br label %238

201:                                              ; preds = %186
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  %202 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %22, i32 noundef 1)
          to label %203 unwind label %214

203:                                              ; preds = %201
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  %204 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %23, i32 noundef 1)
          to label %205 unwind label %216

205:                                              ; preds = %203
  %206 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %207 unwind label %216

207:                                              ; preds = %205
  invoke void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef %202, ptr noundef %204, i32 noundef %206, i32 noundef %2, float noundef 0x3FA99999A0000000)
          to label %208 unwind label %216

208:                                              ; preds = %207
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %24) #12
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %24, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %209 unwind label %219

209:                                              ; preds = %208
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  %210 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %25, i32 noundef 1)
          to label %211 unwind label %221

211:                                              ; preds = %209
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #12
  %212 = getelementptr inbounds i8, ptr %24, i64 16
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %.not110 = icmp eq i32 %213, 0
  br i1 %.not110, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %211
  %wide.trip.count = zext i32 %213 to i64
  br label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %211
  call void @free(ptr noundef %77) #12
  call void @free(ptr noundef %87) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %24) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #12
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %6) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #12
  ret i32 0

214:                                              ; preds = %201
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %218

216:                                              ; preds = %207, %205, %203
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #12
  br label %218

218:                                              ; preds = %216, %214
  %.pn95 = phi { ptr, i32 } [ %217, %216 ], [ %215, %214 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  br label %238

219:                                              ; preds = %208
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %237

221:                                              ; preds = %209
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #12
  br label %237

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %223 = trunc nuw i64 %indvars.iv to i32
  %224 = mul i32 %223, 3
  %225 = zext i32 %224 to i64
  %226 = getelementptr inbounds i32, ptr %210, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = add i32 %224, 1
  %229 = zext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %210, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = add i32 %224, 2
  %233 = zext i32 %232 to i64
  %234 = getelementptr inbounds i32, ptr %210, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %227, i32 noundef %231, i32 noundef %235)
  %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 %.lr.ph, !llvm.loop !11

237:                                              ; preds = %221, %219
  %.pn97 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %24) #12
  br label %238

238:                                              ; preds = %197, %199, %179, %181, %237, %218
  %.pn97.pn = phi { ptr, i32 } [ %.pn97, %237 ], [ %.pn95, %218 ], [ %182, %181 ], [ %180, %179 ], [ %200, %199 ], [ %198, %197 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  br label %239

239:                                              ; preds = %238, %163
  %.pn97.pn.pn = phi { ptr, i32 } [ %.pn97.pn, %238 ], [ %164, %163 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #12
  br label %240

240:                                              ; preds = %137, %139, %239, %161
  %.pn97.pn.pn.pn = phi { ptr, i32 } [ %.pn97.pn.pn, %239 ], [ %162, %161 ], [ %140, %139 ], [ %138, %137 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  br label %241

241:                                              ; preds = %240, %135
  %.pn97.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn97.pn.pn.pn, %240 ], [ %136, %135 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #12
  call void @_ZNSt6vectorIP6TensorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #12
  br label %242

242:                                              ; preds = %241, %133
  %.pn97.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn97.pn.pn.pn.pn, %241 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #12
  br label %243

243:                                              ; preds = %125, %127, %242, %131, %129, %123, %121, %119
  %.pn97.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ], [ %120, %119 ], [ %128, %127 ], [ %126, %125 ], [ %.pn97.pn.pn.pn.pn.pn, %242 ], [ %132, %131 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %7) #12
  br label %244

244:                                              ; preds = %243, %117
  %.pn97.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn97.pn.pn.pn.pn.pn.pn.pn.pn, %243 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %6) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #12
  br label %245

245:                                              ; preds = %244, %115
  %.pn97.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn97.pn.pn.pn.pn.pn.pn.pn.pn.pn, %244 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #12
  resume { ptr, i32 } %.pn97.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: nounwind
declare i64 @syscall(i64 noundef, ...) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @fflush(ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare double @atof(ptr nocapture noundef nonnull) local_unnamed_addr #5

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z8tensor3d8DataTypejjj(ptr dead_on_unwind noalias writable sret(%struct.TensorDesc) align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind noalias writable sret(%class.Tensor) align 8, ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #7 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10UNI_MEMCPYPvPKvm(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef, i32 noundef) local_unnamed_addr #8

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #8

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

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

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

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

declare noundef i32 @_Z37non_max_suppression_infer_output_sizeSt6vectorIP6TensorSaIS1_EE26NonMaxSuppressionParamSpecS1_P8ArchInfo(ptr noundef, i64, <2 x float>, ptr noundef, ptr noundef) local_unnamed_addr #10

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @ee2str(i32 noundef) local_unnamed_addr #9

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor8get_descEv(ptr dead_on_unwind noalias writable sret(%struct.TensorDesc) align 4, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7 align 2

declare noundef i32 @_Z19non_max_suppressionSt6vectorI6TensorSaIS0_EE26NonMaxSuppressionParamSpecS0_P8ArchInfo(ptr noundef, i64, <2 x float>, ptr noundef, ptr noundef) local_unnamed_addr #10

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef, ptr noundef, i32 noundef, i32 noundef, float noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #11

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "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 = { nofree nounwind "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 = { noreturn nounwind "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 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { 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 #10 = { "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 #11 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #12 = { nounwind }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind willreturn memory(read) }

!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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass