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

; 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.PoolingParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, 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" = 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::initializer_list" = type { ptr, i64 }
%"class.std::allocator" = 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 [45 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z11poolingTestiPPc8DataType(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 %struct.PoolingParamSpec, align 4
  %14 = alloca %struct.TensorDesc, align 4
  %15 = alloca %struct.TensorDesc, align 4
  %16 = alloca %struct.TensorDesc, align 4
  %17 = alloca %class.Tensor, align 8
  %18 = alloca %struct.TensorDesc, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca %class.Tensor, align 8
  %24 = alloca %class.Tensor, align 8
  %25 = alloca i32, align 4
  %26 = alloca %struct.PoolingParamSpec, align 8
  %27 = alloca i32, align 4
  %28 = alloca %struct.TensorDesc, align 4
  %29 = alloca %class.Tensor, align 8
  %30 = alloca %struct.TensorDesc, align 8
  %31 = alloca i32, align 4
  %32 = alloca %class.Tensor, align 8
  %33 = alloca %"class.std::vector", align 8
  %34 = alloca %"class.std::initializer_list", align 8
  %35 = alloca [1 x %class.Tensor], align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.std::vector", align 8
  %38 = alloca %"class.std::initializer_list", align 8
  %39 = alloca [1 x %class.Tensor], align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca i32, align 4
  %42 = alloca %class.Tensor, align 8
  %43 = alloca %struct.PoolingParamSpec, align 8
  %44 = alloca %class.Tensor, align 8
  %45 = alloca %"class.std::vector", align 8
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %class.Tensor, align 8
  %49 = alloca %struct.PoolingParamSpec, align 8
  %50 = alloca %class.Tensor, align 8
  %51 = alloca %"class.std::vector", align 8
  %52 = alloca i32, align 4
  %53 = alloca %class.Tensor, align 8
  %54 = alloca %class.Tensor, align 8
  %55 = alloca double, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca %class.Tensor, align 8
  %59 = alloca %struct.PoolingParamSpec, align 8
  %60 = alloca %class.Tensor, align 8
  %61 = alloca %"class.std::vector", align 8
  %62 = alloca i32, align 4
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca [150 x i8], align 16
  %66 = alloca [120 x i8], align 16
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca %struct.TensorDesc, align 8
  %75 = alloca i32, align 4
  %76 = alloca %struct.TensorDesc, align 8
  %77 = alloca i32, align 4
  %78 = alloca %struct.TensorDesc, align 8
  %79 = alloca i32, align 4
  %80 = alloca %struct.TensorDesc, align 8
  %81 = alloca i32, align 4
  %82 = alloca double, align 8
  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
  %83 = load i32, ptr %4, align 4, !tbaa !5
  %84 = icmp eq i32 %83, 18
  br i1 %84, label %95, label %85

85:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %86 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %87 = trunc i64 %86 to i32
  store i32 %87, ptr %7, align 4, !tbaa !5
  %88 = load i32, ptr %7, align 4, !tbaa !5
  %89 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %88)
  %90 = load ptr, ptr @stdout, align 8, !tbaa !9
  %91 = call i32 @fflush(ptr noundef %90)
  %92 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %93 = load ptr, ptr @stdout, align 8, !tbaa !9
  %94 = call i32 @fflush(ptr noundef %93)
  call void @exit(i32 noundef 1) #11
  unreachable

95:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %96 = load ptr, ptr %5, align 8, !tbaa !9
  %97 = getelementptr inbounds ptr, ptr %96, i64 1
  %98 = load ptr, ptr %97, align 8, !tbaa !9
  %99 = call i32 @atoi(ptr noundef %98) #12
  store i32 %99, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  %100 = load ptr, ptr %5, align 8, !tbaa !9
  %101 = getelementptr inbounds ptr, ptr %100, i64 2
  %102 = load ptr, ptr %101, align 8, !tbaa !9
  %103 = call i32 @atoi(ptr noundef %102) #12
  store i32 %103, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  %104 = load ptr, ptr %5, align 8, !tbaa !9
  %105 = getelementptr inbounds ptr, ptr %104, i64 3
  %106 = load ptr, ptr %105, align 8, !tbaa !9
  %107 = call i32 @atoi(ptr noundef %106) #12
  store i32 %107, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  %108 = load ptr, ptr %5, align 8, !tbaa !9
  %109 = getelementptr inbounds ptr, ptr %108, i64 4
  %110 = load ptr, ptr %109, align 8, !tbaa !9
  %111 = call i32 @atoi(ptr noundef %110) #12
  store i32 %111, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  %112 = load ptr, ptr %5, align 8, !tbaa !9
  %113 = getelementptr inbounds ptr, ptr %112, i64 5
  %114 = load ptr, ptr %113, align 8, !tbaa !9
  %115 = call i32 @atoi(ptr noundef %114) #12
  store i32 %115, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 60, ptr %13) #10
  %116 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 13
  store i32 0, ptr %116, align 4, !tbaa !13
  %117 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 12
  store i32 0, ptr %117, align 4, !tbaa !18
  %118 = load ptr, ptr %5, align 8, !tbaa !9
  %119 = getelementptr inbounds ptr, ptr %118, i64 6
  %120 = load ptr, ptr %119, align 8, !tbaa !9
  %121 = call i32 @atoi(ptr noundef %120) #12
  %122 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 0
  store i32 %121, ptr %122, align 4, !tbaa !19
  %123 = load ptr, ptr %5, align 8, !tbaa !9
  %124 = getelementptr inbounds ptr, ptr %123, i64 7
  %125 = load ptr, ptr %124, align 8, !tbaa !9
  %126 = call i32 @atoi(ptr noundef %125) #12
  %127 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 1
  store i32 %126, ptr %127, align 4, !tbaa !20
  %128 = load ptr, ptr %5, align 8, !tbaa !9
  %129 = getelementptr inbounds ptr, ptr %128, i64 8
  %130 = load ptr, ptr %129, align 8, !tbaa !9
  %131 = call i32 @atoi(ptr noundef %130) #12
  %132 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 2
  store i32 %131, ptr %132, align 4, !tbaa !21
  %133 = load ptr, ptr %5, align 8, !tbaa !9
  %134 = getelementptr inbounds ptr, ptr %133, i64 9
  %135 = load ptr, ptr %134, align 8, !tbaa !9
  %136 = call i32 @atoi(ptr noundef %135) #12
  %137 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 3
  store i32 %136, ptr %137, align 4, !tbaa !22
  %138 = load ptr, ptr %5, align 8, !tbaa !9
  %139 = getelementptr inbounds ptr, ptr %138, i64 10
  %140 = load ptr, ptr %139, align 8, !tbaa !9
  %141 = call i32 @atoi(ptr noundef %140) #12
  %142 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 4
  store i32 %141, ptr %142, align 4, !tbaa !23
  %143 = load ptr, ptr %5, align 8, !tbaa !9
  %144 = getelementptr inbounds ptr, ptr %143, i64 11
  %145 = load ptr, ptr %144, align 8, !tbaa !9
  %146 = call i32 @atoi(ptr noundef %145) #12
  %147 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 5
  store i32 %146, ptr %147, align 4, !tbaa !24
  %148 = load ptr, ptr %5, align 8, !tbaa !9
  %149 = getelementptr inbounds ptr, ptr %148, i64 12
  %150 = load ptr, ptr %149, align 8, !tbaa !9
  %151 = call i32 @atoi(ptr noundef %150) #12
  %152 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 6
  store i32 %151, ptr %152, align 4, !tbaa !25
  %153 = load ptr, ptr %5, align 8, !tbaa !9
  %154 = getelementptr inbounds ptr, ptr %153, i64 13
  %155 = load ptr, ptr %154, align 8, !tbaa !9
  %156 = call i32 @atoi(ptr noundef %155) #12
  %157 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 7
  store i32 %156, ptr %157, align 4, !tbaa !26
  %158 = load ptr, ptr %5, align 8, !tbaa !9
  %159 = getelementptr inbounds ptr, ptr %158, i64 14
  %160 = load ptr, ptr %159, align 8, !tbaa !9
  %161 = call i32 @atoi(ptr noundef %160) #12
  %162 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 8
  store i32 %161, ptr %162, align 4, !tbaa !27
  %163 = load ptr, ptr %5, align 8, !tbaa !9
  %164 = getelementptr inbounds ptr, ptr %163, i64 15
  %165 = load ptr, ptr %164, align 8, !tbaa !9
  %166 = call i32 @atoi(ptr noundef %165) #12
  %167 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 9
  store i32 %166, ptr %167, align 4, !tbaa !28
  %168 = load ptr, ptr %5, align 8, !tbaa !9
  %169 = getelementptr inbounds ptr, ptr %168, i64 16
  %170 = load ptr, ptr %169, align 8, !tbaa !9
  %171 = call i32 @atoi(ptr noundef %170) #12
  %172 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 10
  store i32 %171, ptr %172, align 4, !tbaa !29
  %173 = load ptr, ptr %5, align 8, !tbaa !9
  %174 = getelementptr inbounds ptr, ptr %173, i64 17
  %175 = load ptr, ptr %174, align 8, !tbaa !9
  %176 = call i32 @atoi(ptr noundef %175) #12
  %177 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 11
  store i32 %176, ptr %177, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 92, ptr %14) #10
  call void @_ZN10TensorDescC2Ev(ptr noundef nonnull align 4 dereferenceable(92) %14) #10
  %178 = load i32, ptr %10, align 4, !tbaa !5
  %179 = icmp eq i32 %178, 1
  br i1 %179, label %180, label %186

180:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 92, ptr %15) #10
  %181 = load i32, ptr %6, align 4, !tbaa !11
  %182 = load i32, ptr %8, align 4, !tbaa !5
  %183 = load i32, ptr %9, align 4, !tbaa !5
  %184 = load i32, ptr %11, align 4, !tbaa !5
  %185 = load i32, ptr %12, align 4, !tbaa !5
  call void @_Z9tensor4df8DataType10DataFormatjjjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %15, i32 noundef %181, i32 noundef 2, i32 noundef %182, i32 noundef %183, i32 noundef %184, i32 noundef %185)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %15, i64 92, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 92, ptr %15) #10
  br label %193

186:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 92, ptr %16) #10
  %187 = load i32, ptr %6, align 4, !tbaa !11
  %188 = load i32, ptr %8, align 4, !tbaa !5
  %189 = load i32, ptr %9, align 4, !tbaa !5
  %190 = load i32, ptr %10, align 4, !tbaa !5
  %191 = load i32, ptr %11, align 4, !tbaa !5
  %192 = load i32, ptr %12, align 4, !tbaa !5
  call void @_Z9tensor5df8DataType10DataFormatjjjjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %16, i32 noundef %187, i32 noundef 2, i32 noundef %188, i32 noundef %189, i32 noundef %190, i32 noundef %191, i32 noundef %192)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %16, i64 92, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 92, ptr %16) #10
  br label %193

193:                                              ; preds = %186, %180
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 %14, i64 92, i1 false), !tbaa.struct !31
  call void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind writable sret(%class.Tensor) align 8 %17, ptr noundef byval(%struct.TensorDesc) align 8 %18)
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %194 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %195 unwind label %229

195:                                              ; preds = %193
  store i32 %194, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %196 = load i32, ptr %19, align 4, !tbaa !5
  %197 = load i32, ptr %6, align 4, !tbaa !11
  %198 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %196, i32 noundef %197, i32 noundef 0)
          to label %199 unwind label %233

199:                                              ; preds = %195
  store ptr %198, ptr %22, align 8, !tbaa !9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  %200 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %23, i32 noundef 1)
          to label %201 unwind label %237

201:                                              ; preds = %199
  %202 = load ptr, ptr %22, align 8, !tbaa !9
  %203 = invoke noundef i32 @_ZN6Tensor5bytesEv(ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %204 unwind label %237

204:                                              ; preds = %201
  %205 = zext i32 %203 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %200, ptr noundef %202, i64 noundef %205)
          to label %206 unwind label %237

206:                                              ; preds = %204
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #10
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef 1)
          to label %207 unwind label %241

207:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !35
  %208 = invoke noundef i32 @_Z25pooling_infer_output_sizeP6Tensor16PoolingParamSpecS0_P8ArchInfo(ptr noundef %17, ptr noundef byval(%struct.PoolingParamSpec) align 8 %26, ptr noundef %24, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %209 unwind label %245

209:                                              ; preds = %207
  store i32 %208, ptr %25, align 4, !tbaa !39
  %210 = load i32, ptr %25, align 4, !tbaa !39
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %253

212:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %213 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %214 = trunc i64 %213 to i32
  store i32 %214, ptr %27, align 4, !tbaa !5
  %215 = load i32, ptr %27, align 4, !tbaa !5
  %216 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %215)
          to label %217 unwind label %249

217:                                              ; preds = %212
  %218 = load ptr, ptr @stdout, align 8, !tbaa !9
  %219 = invoke i32 @fflush(ptr noundef %218)
          to label %220 unwind label %249

220:                                              ; preds = %217
  %221 = load i32, ptr %25, align 4, !tbaa !39
  %222 = invoke ptr @ee2str(i32 noundef %221)
          to label %223 unwind label %249

223:                                              ; preds = %220
  %224 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %222)
          to label %225 unwind label %249

225:                                              ; preds = %223
  %226 = load ptr, ptr @stdout, align 8, !tbaa !9
  %227 = invoke i32 @fflush(ptr noundef %226)
          to label %228 unwind label %249

228:                                              ; preds = %225
  call void @exit(i32 noundef 1) #11
  unreachable

229:                                              ; preds = %193
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %20, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %21, align 4
  br label %619

233:                                              ; preds = %195
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %20, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %21, align 4
  br label %618

237:                                              ; preds = %204, %201, %199
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %20, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %618

241:                                              ; preds = %206
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %20, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %21, align 4
  br label %617

245:                                              ; preds = %207
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %20, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %21, align 4
  br label %310

249:                                              ; preds = %225, %223, %220, %217, %212
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %20, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %310

253:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %254 unwind label %311

254:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 92, ptr %28) #10
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %28, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %255 unwind label %315

255:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !31
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind writable sret(%class.Tensor) align 8 %29, ptr noundef byval(%struct.TensorDesc) align 8 %30)
          to label %256 unwind label %319

256:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  %257 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %258 unwind label %323

258:                                              ; preds = %256
  store i32 %257, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #10
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %32, i32 noundef 1)
          to label %259 unwind label %327

259:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #10
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  %260 = getelementptr inbounds %"class.std::initializer_list", ptr %34, i32 0, i32 0
  store ptr %35, ptr %260, align 8, !tbaa !41
  %261 = getelementptr inbounds %"class.std::initializer_list", ptr %34, i32 0, i32 1
  store i64 1, ptr %261, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #10
  call void @_ZNSaI6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  %262 = getelementptr inbounds { ptr, i64 }, ptr %34, i32 0, i32 0
  %263 = load ptr, ptr %262, align 8
  %264 = getelementptr inbounds { ptr, i64 }, ptr %34, i32 0, i32 1
  %265 = load i64, ptr %264, align 8
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr %263, i64 %265, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %266 unwind label %331

266:                                              ; preds = %259
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  %267 = getelementptr inbounds [1 x %class.Tensor], ptr %35, i32 0, i32 0
  %268 = getelementptr inbounds %class.Tensor, ptr %267, i64 1
  br label %269

269:                                              ; preds = %269, %266
  %270 = phi ptr [ %268, %266 ], [ %271, %269 ]
  %271 = getelementptr inbounds %class.Tensor, ptr %270, i64 -1
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %271) #10
  %272 = icmp eq ptr %271, %267
  br i1 %272, label %273, label %269

273:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #10
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  %274 = getelementptr inbounds %"class.std::initializer_list", ptr %38, i32 0, i32 0
  store ptr %39, ptr %274, align 8, !tbaa !41
  %275 = getelementptr inbounds %"class.std::initializer_list", ptr %38, i32 0, i32 1
  store i64 1, ptr %275, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #10
  call void @_ZNSaI6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  %276 = getelementptr inbounds { ptr, i64 }, ptr %38, i32 0, i32 0
  %277 = load ptr, ptr %276, align 8
  %278 = getelementptr inbounds { ptr, i64 }, ptr %38, i32 0, i32 1
  %279 = load i64, ptr %278, align 8
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr %277, i64 %279, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %280 unwind label %342

280:                                              ; preds = %273
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #10
  %281 = getelementptr inbounds [1 x %class.Tensor], ptr %39, i32 0, i32 0
  %282 = getelementptr inbounds %class.Tensor, ptr %281, i64 1
  br label %283

283:                                              ; preds = %283, %280
  %284 = phi ptr [ %282, %280 ], [ %285, %283 ]
  %285 = getelementptr inbounds %class.Tensor, ptr %284, i64 -1
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %285) #10
  %286 = icmp eq ptr %285, %281
  br i1 %286, label %287, label %283

287:                                              ; preds = %283
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !35
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %288 unwind label %353

288:                                              ; preds = %287
  %289 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef %42, ptr noundef byval(%struct.PoolingParamSpec) align 8 %43, ptr noundef %44, ptr noundef %45, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %290 unwind label %357

290:                                              ; preds = %288
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #10
  store i32 %289, ptr %41, align 4, !tbaa !39
  %291 = load i32, ptr %41, align 4, !tbaa !39
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %366

293:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %294 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %295 = trunc i64 %294 to i32
  store i32 %295, ptr %46, align 4, !tbaa !5
  %296 = load i32, ptr %46, align 4, !tbaa !5
  %297 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %296)
          to label %298 unwind label %362

298:                                              ; preds = %293
  %299 = load ptr, ptr @stdout, align 8, !tbaa !9
  %300 = invoke i32 @fflush(ptr noundef %299)
          to label %301 unwind label %362

301:                                              ; preds = %298
  %302 = load i32, ptr %41, align 4, !tbaa !39
  %303 = invoke ptr @ee2str(i32 noundef %302)
          to label %304 unwind label %362

304:                                              ; preds = %301
  %305 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %303)
          to label %306 unwind label %362

306:                                              ; preds = %304
  %307 = load ptr, ptr @stdout, align 8, !tbaa !9
  %308 = invoke i32 @fflush(ptr noundef %307)
          to label %309 unwind label %362

309:                                              ; preds = %306
  call void @exit(i32 noundef 1) #11
  unreachable

310:                                              ; preds = %249, %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %616

311:                                              ; preds = %253
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %20, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %21, align 4
  br label %616

315:                                              ; preds = %254
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %20, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %21, align 4
  br label %615

319:                                              ; preds = %255
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %20, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %21, align 4
  br label %614

323:                                              ; preds = %256
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %20, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %21, align 4
  br label %613

327:                                              ; preds = %258
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %20, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %21, align 4
  br label %612

331:                                              ; preds = %259
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %20, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %21, align 4
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  %335 = getelementptr inbounds [1 x %class.Tensor], ptr %35, i32 0, i32 0
  %336 = getelementptr inbounds %class.Tensor, ptr %335, i64 1
  br label %337

337:                                              ; preds = %337, %331
  %338 = phi ptr [ %336, %331 ], [ %339, %337 ]
  %339 = getelementptr inbounds %class.Tensor, ptr %338, i64 -1
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #10
  %340 = icmp eq ptr %339, %335
  br i1 %340, label %341, label %337

341:                                              ; preds = %337
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #10
  br label %611

342:                                              ; preds = %273
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %20, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %21, align 4
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #10
  %346 = getelementptr inbounds [1 x %class.Tensor], ptr %39, i32 0, i32 0
  %347 = getelementptr inbounds %class.Tensor, ptr %346, i64 1
  br label %348

348:                                              ; preds = %348, %342
  %349 = phi ptr [ %347, %342 ], [ %350, %348 ]
  %350 = getelementptr inbounds %class.Tensor, ptr %349, i64 -1
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #10
  %351 = icmp eq ptr %350, %346
  br i1 %351, label %352, label %348

352:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #10
  br label %610

353:                                              ; preds = %287
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %20, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %21, align 4
  br label %361

357:                                              ; preds = %288
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %20, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %21, align 4
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  br label %361

361:                                              ; preds = %357, %353
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #10
  br label %389

362:                                              ; preds = %306, %304, %301, %298, %293
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %20, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %389

366:                                              ; preds = %290
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !35
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %367 unwind label %390

367:                                              ; preds = %366
  %368 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef %48, ptr noundef byval(%struct.PoolingParamSpec) align 8 %49, ptr noundef %50, ptr noundef %51, ptr noundef @_ZL18UT_SERIAL_ARCHINFO)
          to label %369 unwind label %394

369:                                              ; preds = %367
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  store i32 %368, ptr %47, align 4, !tbaa !39
  %370 = load i32, ptr %47, align 4, !tbaa !39
  %371 = icmp ne i32 %370, 0
  br i1 %371, label %372, label %403

372:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %373 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %374 = trunc i64 %373 to i32
  store i32 %374, ptr %52, align 4, !tbaa !5
  %375 = load i32, ptr %52, align 4, !tbaa !5
  %376 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %375)
          to label %377 unwind label %399

377:                                              ; preds = %372
  %378 = load ptr, ptr @stdout, align 8, !tbaa !9
  %379 = invoke i32 @fflush(ptr noundef %378)
          to label %380 unwind label %399

380:                                              ; preds = %377
  %381 = load i32, ptr %47, align 4, !tbaa !39
  %382 = invoke ptr @ee2str(i32 noundef %381)
          to label %383 unwind label %399

383:                                              ; preds = %380
  %384 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %382)
          to label %385 unwind label %399

385:                                              ; preds = %383
  %386 = load ptr, ptr @stdout, align 8, !tbaa !9
  %387 = invoke i32 @fflush(ptr noundef %386)
          to label %388 unwind label %399

388:                                              ; preds = %385
  call void @exit(i32 noundef 1) #11
  unreachable

389:                                              ; preds = %362, %361
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %609

390:                                              ; preds = %366
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %20, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %21, align 4
  br label %398

394:                                              ; preds = %367
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %20, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %21, align 4
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #10
  br label %398

398:                                              ; preds = %394, %390
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #10
  br label %417

399:                                              ; preds = %385, %383, %380, %377, %372
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %20, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %417

403:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  %404 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %53, i32 noundef 1)
          to label %405 unwind label %418

405:                                              ; preds = %403
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  %406 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %54, i32 noundef 1)
          to label %407 unwind label %422

407:                                              ; preds = %405
  %408 = load i32, ptr %31, align 4, !tbaa !5
  %409 = load i32, ptr %6, align 4, !tbaa !11
  invoke void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef %404, ptr noundef %406, i32 noundef %408, i32 noundef %409, float noundef 0x3FA99999A0000000)
          to label %410 unwind label %422

410:                                              ; preds = %407
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %411 = invoke noundef double @_Z10ut_time_msv()
          to label %412 unwind label %427

412:                                              ; preds = %410
  store double %411, ptr %55, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  store i32 0, ptr %56, align 4, !tbaa !5
  br label %413

413:                                              ; preds = %468, %412
  %414 = load i32, ptr %56, align 4, !tbaa !5
  %415 = icmp slt i32 %414, 6
  br i1 %415, label %431, label %416

416:                                              ; preds = %413
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %472

417:                                              ; preds = %399, %398
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %609

418:                                              ; preds = %403
  %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 %426

422:                                              ; preds = %407, %405
  %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) %54) #10
  br label %426

426:                                              ; preds = %422, %418
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  br label %609

427:                                              ; preds = %410
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %20, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %21, align 4
  br label %608

431:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !35
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %432 unwind label %454

432:                                              ; preds = %431
  %433 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef %58, ptr noundef byval(%struct.PoolingParamSpec) align 8 %59, ptr noundef %60, ptr noundef %61, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %434 unwind label %458

434:                                              ; preds = %432
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #10
  store i32 %433, ptr %57, align 4, !tbaa !39
  %435 = load i32, ptr %57, align 4, !tbaa !39
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %467

437:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %438 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %439 = trunc i64 %438 to i32
  store i32 %439, ptr %62, align 4, !tbaa !5
  %440 = load i32, ptr %62, align 4, !tbaa !5
  %441 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %440)
          to label %442 unwind label %463

442:                                              ; preds = %437
  %443 = load ptr, ptr @stdout, align 8, !tbaa !9
  %444 = invoke i32 @fflush(ptr noundef %443)
          to label %445 unwind label %463

445:                                              ; preds = %442
  %446 = load i32, ptr %57, align 4, !tbaa !39
  %447 = invoke ptr @ee2str(i32 noundef %446)
          to label %448 unwind label %463

448:                                              ; preds = %445
  %449 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %447)
          to label %450 unwind label %463

450:                                              ; preds = %448
  %451 = load ptr, ptr @stdout, align 8, !tbaa !9
  %452 = invoke i32 @fflush(ptr noundef %451)
          to label %453 unwind label %463

453:                                              ; preds = %450
  call void @exit(i32 noundef 1) #11
  unreachable

454:                                              ; preds = %431
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %20, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %21, align 4
  br label %462

458:                                              ; preds = %432
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %20, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %21, align 4
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #10
  br label %462

462:                                              ; preds = %458, %454
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #10
  br label %471

463:                                              ; preds = %450, %448, %445, %442, %437
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %20, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %471

467:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %468

468:                                              ; preds = %467
  %469 = load i32, ptr %56, align 4, !tbaa !5
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %56, align 4, !tbaa !5
  br label %413, !llvm.loop !47

471:                                              ; preds = %463, %462
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %608

472:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %473 = invoke noundef double @_Z10ut_time_msv()
          to label %474 unwind label %504

474:                                              ; preds = %472
  store double %473, ptr %63, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %475 = load double, ptr %63, align 8, !tbaa !45
  %476 = load double, ptr %55, align 8, !tbaa !45
  %477 = fsub double %475, %476
  %478 = fdiv double %477, 6.000000e+00
  store double %478, ptr %64, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 150, ptr %65) #10
  call void @llvm.lifetime.start.p0(i64 120, ptr %66) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #10
  store i32 0, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #10
  store i32 0, ptr %70, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #10
  store i32 0, ptr %71, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #10
  store i32 0, ptr %72, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #10
  store i32 0, ptr %73, align 4, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %74, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !31
  %479 = invoke noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %74)
          to label %480 unwind label %508

480:                                              ; preds = %474
  %481 = icmp ne i8 %479, 0
  br i1 %481, label %482, label %522

482:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %76, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !31
  %483 = invoke noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %76, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef %72, ptr noundef %73)
          to label %484 unwind label %512

484:                                              ; preds = %482
  store i32 %483, ptr %75, align 4, !tbaa !39
  %485 = load i32, ptr %75, align 4, !tbaa !39
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %520

487:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  %488 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %489 = trunc i64 %488 to i32
  store i32 %489, ptr %77, align 4, !tbaa !5
  %490 = load i32, ptr %77, align 4, !tbaa !5
  %491 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %490)
          to label %492 unwind label %516

492:                                              ; preds = %487
  %493 = load ptr, ptr @stdout, align 8, !tbaa !9
  %494 = invoke i32 @fflush(ptr noundef %493)
          to label %495 unwind label %516

495:                                              ; preds = %492
  %496 = load i32, ptr %75, align 4, !tbaa !39
  %497 = invoke ptr @ee2str(i32 noundef %496)
          to label %498 unwind label %516

498:                                              ; preds = %495
  %499 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %497)
          to label %500 unwind label %516

500:                                              ; preds = %498
  %501 = load ptr, ptr @stdout, align 8, !tbaa !9
  %502 = invoke i32 @fflush(ptr noundef %501)
          to label %503 unwind label %516

503:                                              ; preds = %500
  call void @exit(i32 noundef 1) #11
  unreachable

504:                                              ; preds = %472
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %20, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %21, align 4
  br label %607

508:                                              ; preds = %522, %474
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %20, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %21, align 4
  br label %606

512:                                              ; preds = %482
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %20, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %21, align 4
  br label %521

516:                                              ; preds = %500, %498, %495, %492, %487
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %20, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %521

520:                                              ; preds = %484
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  br label %559

521:                                              ; preds = %516, %512
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  br label %606

522:                                              ; preds = %480
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !31
  %523 = invoke noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %78)
          to label %524 unwind label %508

524:                                              ; preds = %522
  %525 = icmp ne i8 %523, 0
  br i1 %525, label %526, label %558

526:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %80, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !31
  %527 = invoke noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %80, ptr noundef %67, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef %71, ptr noundef %72, ptr noundef %73)
          to label %528 unwind label %548

528:                                              ; preds = %526
  store i32 %527, ptr %79, align 4, !tbaa !39
  %529 = load i32, ptr %79, align 4, !tbaa !39
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %556

531:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  %532 = call i64 (i64, ...) @syscall(i64 noundef 186) #10
  %533 = trunc i64 %532 to i32
  store i32 %533, ptr %81, align 4, !tbaa !5
  %534 = load i32, ptr %81, align 4, !tbaa !5
  %535 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %534)
          to label %536 unwind label %552

536:                                              ; preds = %531
  %537 = load ptr, ptr @stdout, align 8, !tbaa !9
  %538 = invoke i32 @fflush(ptr noundef %537)
          to label %539 unwind label %552

539:                                              ; preds = %536
  %540 = load i32, ptr %79, align 4, !tbaa !39
  %541 = invoke ptr @ee2str(i32 noundef %540)
          to label %542 unwind label %552

542:                                              ; preds = %539
  %543 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %541)
          to label %544 unwind label %552

544:                                              ; preds = %542
  %545 = load ptr, ptr @stdout, align 8, !tbaa !9
  %546 = invoke i32 @fflush(ptr noundef %545)
          to label %547 unwind label %552

547:                                              ; preds = %544
  call void @exit(i32 noundef 1) #11
  unreachable

548:                                              ; preds = %526
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %20, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %21, align 4
  br label %557

552:                                              ; preds = %544, %542, %539, %536, %531
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %20, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %557

556:                                              ; preds = %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  br label %558

557:                                              ; preds = %552, %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  br label %606

558:                                              ; preds = %556, %524
  br label %559

559:                                              ; preds = %558, %520
  %560 = getelementptr inbounds [120 x i8], ptr %66, i64 0, i64 0
  %561 = load i32, ptr %8, align 4, !tbaa !5
  %562 = load i32, ptr %9, align 4, !tbaa !5
  %563 = load i32, ptr %10, align 4, !tbaa !5
  %564 = load i32, ptr %11, align 4, !tbaa !5
  %565 = load i32, ptr %12, align 4, !tbaa !5
  %566 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 0
  %567 = load i32, ptr %566, align 4, !tbaa !19
  %568 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 1
  %569 = load i32, ptr %568, align 4, !tbaa !20
  %570 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 2
  %571 = load i32, ptr %570, align 4, !tbaa !21
  %572 = load i32, ptr %69, align 4, !tbaa !5
  %573 = load i32, ptr %70, align 4, !tbaa !5
  %574 = load i32, ptr %71, align 4, !tbaa !5
  %575 = load i32, ptr %72, align 4, !tbaa !5
  %576 = load i32, ptr %73, align 4, !tbaa !5
  %577 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %560, ptr noundef @.str.3, i32 noundef %561, i32 noundef %562, i32 noundef %563, i32 noundef %564, i32 noundef %565, i32 noundef %567, i32 noundef %569, i32 noundef %571, i32 noundef %572, i32 noundef %573, i32 noundef %574, i32 noundef %575, i32 noundef %576) #10
  %578 = getelementptr inbounds [150 x i8], ptr %65, i64 0, i64 0
  %579 = getelementptr inbounds [120 x i8], ptr %66, i64 0, i64 0
  %580 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %578, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %579) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  %581 = load i32, ptr %31, align 4, !tbaa !5
  %582 = uitofp i32 %581 to double
  %583 = fmul double 1.000000e+00, %582
  %584 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 0
  %585 = load i32, ptr %584, align 4, !tbaa !19
  %586 = uitofp i32 %585 to double
  %587 = fmul double %583, %586
  %588 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 1
  %589 = load i32, ptr %588, align 4, !tbaa !20
  %590 = uitofp i32 %589 to double
  %591 = fmul double %587, %590
  %592 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 2
  %593 = load i32, ptr %592, align 4, !tbaa !21
  %594 = uitofp i32 %593 to double
  %595 = fmul double %591, %594
  store double %595, ptr %82, align 8, !tbaa !45
  %596 = load i32, ptr %6, align 4, !tbaa !11
  %597 = getelementptr inbounds [150 x i8], ptr %65, i64 0, i64 0
  %598 = load double, ptr %82, align 8, !tbaa !45
  %599 = load double, ptr %64, align 8, !tbaa !45
  invoke void @_Z6ut_log8DataTypePcdd(i32 noundef %596, ptr noundef %597, double noundef %598, double noundef %599)
          to label %600 unwind label %602

600:                                              ; preds = %559
  %601 = load ptr, ptr %22, align 8, !tbaa !9
  call void @free(ptr noundef %601) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 150, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 92, ptr %28) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 92, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 60, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  ret i32 0

602:                                              ; preds = %559
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %20, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  br label %606

606:                                              ; preds = %602, %557, %521, %508
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 150, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %607

607:                                              ; preds = %606, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  br label %608

608:                                              ; preds = %607, %471, %427
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %609

609:                                              ; preds = %608, %426, %417, %389
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #10
  br label %610

610:                                              ; preds = %609, %352
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  br label %611

611:                                              ; preds = %610, %341
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #10
  br label %612

612:                                              ; preds = %611, %327
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #10
  br label %613

613:                                              ; preds = %612, %323
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  br label %614

614:                                              ; preds = %613, %319
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #10
  br label %615

615:                                              ; preds = %614, %315
  call void @llvm.lifetime.end.p0(i64 92, ptr %28) #10
  br label %616

616:                                              ; preds = %615, %311, %310
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  br label %617

617:                                              ; preds = %616, %241
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #10
  br label %618

618:                                              ; preds = %617, %237, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %619

619:                                              ; preds = %618, %229
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 92, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 60, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %620

620:                                              ; preds = %619
  %621 = load ptr, ptr %20, align 8
  %622 = load i32, ptr %21, align 4
  %623 = insertvalue { ptr, i32 } poison, ptr %621, 0
  %624 = insertvalue { ptr, i32 } %623, i32 %622, 1
  resume { ptr, i32 } %624
}

; 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 uwtable
declare dso_local void @_ZN10TensorDescC2Ev(ptr noundef nonnull align 4 dereferenceable(92)) unnamed_addr #6 align 2

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

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

; 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 nounwind uwtable
declare dso_local void @_Z9tensor5df8DataType10DataFormatjjjjj(ptr dead_on_unwind noalias writable sret(%struct.TensorDesc) align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #6

; 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) #0 align 2

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

declare i32 @__gxx_personality_v0(...)

; 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 #6 align 2

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

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

declare noundef i32 @_Z25pooling_infer_output_sizeP6Tensor16PoolingParamSpecS0_P8ArchInfo(ptr noundef, ptr noundef byval(%struct.PoolingParamSpec) align 8, ptr noundef, ptr noundef) #3

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

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

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

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

declare noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef, ptr noundef byval(%struct.PoolingParamSpec) align 8, ptr noundef, 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 #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #9 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

declare noundef double @_Z10ut_time_msv() #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #6

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

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #2

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

; 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 #9 align 2

attributes #0 = { 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 #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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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 = { nounwind }
attributes #11 = { noreturn nounwind }
attributes #12 = { 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, !16, i64 52}
!14 = !{!"_ZTS16PoolingParamSpec", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !15, i64 48, !16, i64 52, !17, i64 56}
!15 = !{!"_ZTS9RoundMode", !7, i64 0}
!16 = !{!"_ZTS11PoolingMode", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!14, !15, i64 48}
!19 = !{!14, !6, i64 0}
!20 = !{!14, !6, i64 4}
!21 = !{!14, !6, i64 8}
!22 = !{!14, !6, i64 12}
!23 = !{!14, !6, i64 16}
!24 = !{!14, !6, i64 20}
!25 = !{!14, !6, i64 24}
!26 = !{!14, !6, i64 28}
!27 = !{!14, !6, i64 32}
!28 = !{!14, !6, i64 36}
!29 = !{!14, !6, i64 40}
!30 = !{!14, !6, i64 44}
!31 = !{i64 0, i64 4, !11, i64 4, i64 4, !32, i64 8, i64 4, !5, i64 12, i64 80, !34}
!32 = !{!33, !33, i64 0}
!33 = !{!"_ZTS10DataFormat", !7, i64 0}
!34 = !{!7, !7, i64 0}
!35 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 4, !5, i64 20, i64 4, !5, i64 24, i64 4, !5, i64 28, i64 4, !5, i64 32, i64 4, !5, i64 36, i64 4, !5, i64 40, i64 4, !5, i64 44, i64 4, !5, i64 48, i64 4, !36, i64 52, i64 4, !37, i64 56, i64 1, !38}
!36 = !{!15, !15, i64 0}
!37 = !{!16, !16, i64 0}
!38 = !{!17, !17, i64 0}
!39 = !{!40, !40, i64 0}
!40 = !{!"_ZTS2EE", !7, i64 0}
!41 = !{!42, !10, i64 0}
!42 = !{!"_ZTSSt16initializer_listI6TensorE", !10, i64 0, !43, i64 8}
!43 = !{!"long", !7, i64 0}
!44 = !{!42, !43, i64 8}
!45 = !{!46, !46, i64 0}
!46 = !{!"double", !7, i64 0}
!47 = distinct !{!47, !48}
!48 = !{!"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 }
%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" }
%struct.PoolingParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%"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 }

@.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 [45 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z11poolingTestiPPc8DataType(i32 noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %struct.TensorDesc, align 8
  %5 = alloca %struct.TensorDesc, align 4
  %6 = alloca %struct.TensorDesc, align 4
  %7 = alloca %class.Tensor, align 8
  %8 = alloca %class.Tensor, align 8
  %9 = alloca %class.Tensor, align 8
  %10 = alloca %struct.PoolingParamSpec, align 8
  %11 = alloca %struct.TensorDesc, align 8
  %12 = alloca %class.Tensor, align 8
  %13 = alloca %class.Tensor, align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca [1 x %class.Tensor], align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::vector", align 8
  %18 = alloca [1 x %class.Tensor], align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %class.Tensor, align 8
  %21 = alloca %struct.PoolingParamSpec, align 8
  %22 = alloca %class.Tensor, align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca %class.Tensor, align 8
  %25 = alloca %struct.PoolingParamSpec, align 8
  %26 = alloca %class.Tensor, align 8
  %27 = alloca %"class.std::vector", align 8
  %28 = alloca %class.Tensor, align 8
  %29 = alloca %class.Tensor, align 8
  %30 = alloca %class.Tensor, align 8
  %31 = alloca %struct.PoolingParamSpec, align 8
  %32 = alloca %class.Tensor, align 8
  %33 = alloca %"class.std::vector", align 8
  %34 = alloca [150 x i8], align 16
  %35 = alloca [120 x i8], align 16
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = icmp eq i32 %0, 18
  br i1 %43, label %53, label %44

44:                                               ; preds = %3
  %45 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %46 = trunc i64 %45 to i32
  %47 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %46)
  %48 = load ptr, ptr @stdout, align 8, !tbaa !5
  %49 = tail call i32 @fflush(ptr noundef %48)
  %50 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %51 = load ptr, ptr @stdout, align 8, !tbaa !5
  %52 = tail call i32 @fflush(ptr noundef %51)
  tail call void @exit(i32 noundef 1) #13
  unreachable

53:                                               ; preds = %3
  %54 = getelementptr inbounds i8, ptr %1, i64 8
  %55 = load ptr, ptr %54, align 8, !tbaa !5
  %56 = tail call i32 @atoi(ptr nocapture noundef %55) #14
  %57 = getelementptr inbounds i8, ptr %1, i64 16
  %58 = load ptr, ptr %57, align 8, !tbaa !5
  %59 = tail call i32 @atoi(ptr nocapture noundef %58) #14
  %60 = getelementptr inbounds i8, ptr %1, i64 24
  %61 = load ptr, ptr %60, align 8, !tbaa !5
  %62 = tail call i32 @atoi(ptr nocapture noundef %61) #14
  %63 = getelementptr inbounds i8, ptr %1, i64 32
  %64 = load ptr, ptr %63, align 8, !tbaa !5
  %65 = tail call i32 @atoi(ptr nocapture noundef %64) #14
  %66 = getelementptr inbounds i8, ptr %1, i64 40
  %67 = load ptr, ptr %66, align 8, !tbaa !5
  %68 = tail call i32 @atoi(ptr nocapture noundef %67) #14
  %69 = getelementptr inbounds i8, ptr %1, i64 48
  %70 = load ptr, ptr %69, align 8, !tbaa !5
  %71 = tail call i32 @atoi(ptr nocapture noundef %70) #14
  %72 = getelementptr inbounds i8, ptr %1, i64 56
  %73 = load ptr, ptr %72, align 8, !tbaa !5
  %74 = tail call i32 @atoi(ptr nocapture noundef %73) #14
  %75 = getelementptr inbounds i8, ptr %1, i64 64
  %76 = load ptr, ptr %75, align 8, !tbaa !5
  %77 = tail call i32 @atoi(ptr nocapture noundef %76) #14
  %78 = getelementptr inbounds i8, ptr %1, i64 72
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  %80 = tail call i32 @atoi(ptr nocapture noundef %79) #14
  %81 = getelementptr inbounds i8, ptr %1, i64 80
  %82 = load ptr, ptr %81, align 8, !tbaa !5
  %83 = tail call i32 @atoi(ptr nocapture noundef %82) #14
  %84 = getelementptr inbounds i8, ptr %1, i64 88
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  %86 = tail call i32 @atoi(ptr nocapture noundef %85) #14
  %87 = getelementptr inbounds i8, ptr %1, i64 96
  %88 = load ptr, ptr %87, align 8, !tbaa !5
  %89 = tail call i32 @atoi(ptr nocapture noundef %88) #14
  %90 = getelementptr inbounds i8, ptr %1, i64 104
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = tail call i32 @atoi(ptr nocapture noundef %91) #14
  %93 = getelementptr inbounds i8, ptr %1, i64 112
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  %95 = tail call i32 @atoi(ptr nocapture noundef %94) #14
  %96 = getelementptr inbounds i8, ptr %1, i64 120
  %97 = load ptr, ptr %96, align 8, !tbaa !5
  %98 = tail call i32 @atoi(ptr nocapture noundef %97) #14
  %99 = getelementptr inbounds i8, ptr %1, i64 128
  %100 = load ptr, ptr %99, align 8, !tbaa !5
  %101 = tail call i32 @atoi(ptr nocapture noundef %100) #14
  %102 = getelementptr inbounds i8, ptr %1, i64 136
  %103 = load ptr, ptr %102, align 8, !tbaa !5
  %104 = tail call i32 @atoi(ptr nocapture noundef %103) #14
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %4) #12
  call void @_ZN10TensorDescC2Ev(ptr noundef nonnull align 4 dereferenceable(92) %4) #12
  %105 = icmp eq i32 %62, 1
  br i1 %105, label %106, label %107

106:                                              ; preds = %53
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %5) #12
  call void @_Z9tensor4df8DataType10DataFormatjjjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %5, i32 noundef %2, i32 noundef 2, i32 noundef %56, i32 noundef %59, i32 noundef %65, i32 noundef %68)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %4, ptr noundef nonnull align 4 dereferenceable(92) %5, i64 92, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %5) #12
  br label %108

107:                                              ; preds = %53
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %6) #12
  call void @_Z9tensor5df8DataType10DataFormatjjjjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %6, i32 noundef %2, i32 noundef 2, i32 noundef %56, i32 noundef %59, i32 noundef %62, i32 noundef %65, i32 noundef %68)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %4, ptr noundef nonnull align 4 dereferenceable(92) %6, i64 92, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %6) #12
  br label %108

108:                                              ; preds = %107, %106
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #12
  call void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind nonnull writable sret(%class.Tensor) align 8 %7, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %4)
  %109 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %110 unwind label %132

110:                                              ; preds = %108
  %111 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %109, i32 noundef %2, i32 noundef 0)
          to label %112 unwind label %134

112:                                              ; preds = %110
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  %113 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %8, i32 noundef 1)
          to label %114 unwind label %136

114:                                              ; preds = %112
  %115 = invoke noundef i32 @_ZN6Tensor5bytesEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %116 unwind label %136

116:                                              ; preds = %114
  %117 = zext i32 %115 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %113, ptr noundef %111, i64 noundef %117)
          to label %118 unwind label %136

118:                                              ; preds = %116
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #12
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 1)
          to label %119 unwind label %138

119:                                              ; preds = %118
  store i32 %71, ptr %10, align 8, !tbaa !14
  %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 4
  store i32 %74, ptr %.sroa.10.0..sroa_idx, align 4, !tbaa !14
  %.sroa.13.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 8
  store i32 %77, ptr %.sroa.13.0..sroa_idx, align 8, !tbaa !14
  %.sroa.16.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 12
  store i32 %80, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !14
  %.sroa.17.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 16
  store i32 %83, ptr %.sroa.17.0..sroa_idx, align 8, !tbaa !14
  %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 20
  store i32 %86, ptr %.sroa.18.0..sroa_idx, align 4, !tbaa !14
  %.sroa.19.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 24
  store i32 %89, ptr %.sroa.19.0..sroa_idx, align 8, !tbaa !14
  %.sroa.20.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 28
  store i32 %92, ptr %.sroa.20.0..sroa_idx, align 4, !tbaa !14
  %.sroa.21.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 32
  store i32 %95, ptr %.sroa.21.0..sroa_idx, align 8, !tbaa !14
  %.sroa.22.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 36
  store i32 %98, ptr %.sroa.22.0..sroa_idx, align 4, !tbaa !14
  %.sroa.23.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 40
  store i32 %101, ptr %.sroa.23.0..sroa_idx, align 8, !tbaa !14
  %.sroa.24.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 44
  store i32 %104, ptr %.sroa.24.0..sroa_idx, align 4, !tbaa !14
  %.sroa.25.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 48
  store i32 0, ptr %.sroa.25.0..sroa_idx, align 8, !tbaa !17
  %.sroa.26.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 52
  store i32 0, ptr %.sroa.26.0..sroa_idx, align 4, !tbaa !19
  %120 = invoke noundef i32 @_Z25pooling_infer_output_sizeP6Tensor16PoolingParamSpecS0_P8ArchInfo(ptr noundef nonnull %7, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %10, ptr noundef nonnull %9, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %121 unwind label %140

121:                                              ; preds = %119
  %.not = icmp eq i32 %120, 0
  br i1 %.not, label %142, label %122

122:                                              ; preds = %121
  %123 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %124 = trunc i64 %123 to i32
  %125 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %124)
  %126 = load ptr, ptr @stdout, align 8, !tbaa !5
  %127 = call i32 @fflush(ptr noundef %126)
  %128 = call ptr @ee2str(i32 noundef %120)
  %129 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %128)
  %130 = load ptr, ptr @stdout, align 8, !tbaa !5
  %131 = call i32 @fflush(ptr noundef %130)
  call void @exit(i32 noundef 1) #13
  unreachable

132:                                              ; preds = %108
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %315

134:                                              ; preds = %110
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %315

136:                                              ; preds = %116, %114, %112
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  br label %315

138:                                              ; preds = %118
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %314

140:                                              ; preds = %119
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %313

142:                                              ; preds = %121
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %143 unwind label %164

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %11) #12
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %11, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %144 unwind label %166

144:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #12
  invoke void @_ZN6Tensor11alloc_sizedIL10MemoryType1EEES_10TensorDesc(ptr dead_on_unwind nonnull writable sret(%class.Tensor) align 8 %12, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11)
          to label %145 unwind label %168

145:                                              ; preds = %144
  %146 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %147 unwind label %170

147:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #12
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %13, i32 noundef 1)
          to label %148 unwind label %172

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #12
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #12
  call void @_ZNSaI6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr nonnull %15, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %149 unwind label %174

149:                                              ; preds = %148
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #12
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %12) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #12
  call void @_ZNSaI6TensorEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ESt16initializer_listIS0_ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr nonnull %18, i64 1, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %150 unwind label %176

150:                                              ; preds = %149
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #12
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %21, align 8, !tbaa !14
  %.sroa.10.0..sroa_idx37 = getelementptr inbounds i8, ptr %21, i64 4
  store i32 %74, ptr %.sroa.10.0..sroa_idx37, align 4, !tbaa !14
  %.sroa.13.0..sroa_idx44 = getelementptr inbounds i8, ptr %21, i64 8
  store i32 %77, ptr %.sroa.13.0..sroa_idx44, align 8, !tbaa !14
  %.sroa.16.0..sroa_idx51 = getelementptr inbounds i8, ptr %21, i64 12
  store i32 %80, ptr %.sroa.16.0..sroa_idx51, align 4, !tbaa !14
  %.sroa.17.0..sroa_idx57 = getelementptr inbounds i8, ptr %21, i64 16
  store i32 %83, ptr %.sroa.17.0..sroa_idx57, align 8, !tbaa !14
  %.sroa.18.0..sroa_idx63 = getelementptr inbounds i8, ptr %21, i64 20
  store i32 %86, ptr %.sroa.18.0..sroa_idx63, align 4, !tbaa !14
  %.sroa.19.0..sroa_idx69 = getelementptr inbounds i8, ptr %21, i64 24
  store i32 %89, ptr %.sroa.19.0..sroa_idx69, align 8, !tbaa !14
  %.sroa.20.0..sroa_idx75 = getelementptr inbounds i8, ptr %21, i64 28
  store i32 %92, ptr %.sroa.20.0..sroa_idx75, align 4, !tbaa !14
  %.sroa.21.0..sroa_idx81 = getelementptr inbounds i8, ptr %21, i64 32
  store i32 %95, ptr %.sroa.21.0..sroa_idx81, align 8, !tbaa !14
  %.sroa.22.0..sroa_idx87 = getelementptr inbounds i8, ptr %21, i64 36
  store i32 %98, ptr %.sroa.22.0..sroa_idx87, align 4, !tbaa !14
  %.sroa.23.0..sroa_idx93 = getelementptr inbounds i8, ptr %21, i64 40
  store i32 %101, ptr %.sroa.23.0..sroa_idx93, align 8, !tbaa !14
  %.sroa.24.0..sroa_idx99 = getelementptr inbounds i8, ptr %21, i64 44
  store i32 %104, ptr %.sroa.24.0..sroa_idx99, align 4, !tbaa !14
  %.sroa.25.0..sroa_idx105 = getelementptr inbounds i8, ptr %21, i64 48
  store i32 0, ptr %.sroa.25.0..sroa_idx105, align 8, !tbaa !17
  %.sroa.26.0..sroa_idx111 = getelementptr inbounds i8, ptr %21, i64 52
  store i32 0, ptr %.sroa.26.0..sroa_idx111, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %151 unwind label %178

151:                                              ; preds = %150
  %152 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %20, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %153 unwind label %180

153:                                              ; preds = %151
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  %.not192 = icmp eq i32 %152, 0
  br i1 %.not192, label %183, label %154

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

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

166:                                              ; preds = %143
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %312

168:                                              ; preds = %144
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %311

170:                                              ; preds = %145
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %310

172:                                              ; preds = %147
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %309

174:                                              ; preds = %148
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #12
  br label %308

176:                                              ; preds = %149
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI6TensorED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #12
  br label %307

178:                                              ; preds = %150
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

180:                                              ; preds = %151
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  br label %182

182:                                              ; preds = %180, %178
  %.pn = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #12
  br label %306

183:                                              ; preds = %153
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %25, align 8, !tbaa !14
  %.sroa.10.0..sroa_idx39 = getelementptr inbounds i8, ptr %25, i64 4
  store i32 %74, ptr %.sroa.10.0..sroa_idx39, align 4, !tbaa !14
  %.sroa.13.0..sroa_idx46 = getelementptr inbounds i8, ptr %25, i64 8
  store i32 %77, ptr %.sroa.13.0..sroa_idx46, align 8, !tbaa !14
  %.sroa.16.0..sroa_idx53 = getelementptr inbounds i8, ptr %25, i64 12
  store i32 %80, ptr %.sroa.16.0..sroa_idx53, align 4, !tbaa !14
  %.sroa.17.0..sroa_idx59 = getelementptr inbounds i8, ptr %25, i64 16
  store i32 %83, ptr %.sroa.17.0..sroa_idx59, align 8, !tbaa !14
  %.sroa.18.0..sroa_idx65 = getelementptr inbounds i8, ptr %25, i64 20
  store i32 %86, ptr %.sroa.18.0..sroa_idx65, align 4, !tbaa !14
  %.sroa.19.0..sroa_idx71 = getelementptr inbounds i8, ptr %25, i64 24
  store i32 %89, ptr %.sroa.19.0..sroa_idx71, align 8, !tbaa !14
  %.sroa.20.0..sroa_idx77 = getelementptr inbounds i8, ptr %25, i64 28
  store i32 %92, ptr %.sroa.20.0..sroa_idx77, align 4, !tbaa !14
  %.sroa.21.0..sroa_idx83 = getelementptr inbounds i8, ptr %25, i64 32
  store i32 %95, ptr %.sroa.21.0..sroa_idx83, align 8, !tbaa !14
  %.sroa.22.0..sroa_idx89 = getelementptr inbounds i8, ptr %25, i64 36
  store i32 %98, ptr %.sroa.22.0..sroa_idx89, align 4, !tbaa !14
  %.sroa.23.0..sroa_idx95 = getelementptr inbounds i8, ptr %25, i64 40
  store i32 %101, ptr %.sroa.23.0..sroa_idx95, align 8, !tbaa !14
  %.sroa.24.0..sroa_idx101 = getelementptr inbounds i8, ptr %25, i64 44
  store i32 %104, ptr %.sroa.24.0..sroa_idx101, align 4, !tbaa !14
  %.sroa.25.0..sroa_idx107 = getelementptr inbounds i8, ptr %25, i64 48
  store i32 0, ptr %.sroa.25.0..sroa_idx107, align 8, !tbaa !17
  %.sroa.26.0..sroa_idx113 = getelementptr inbounds i8, ptr %25, i64 52
  store i32 0, ptr %.sroa.26.0..sroa_idx113, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %184 unwind label %197

184:                                              ; preds = %183
  %185 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %24, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull @_ZL18UT_SERIAL_ARCHINFO)
          to label %186 unwind label %199

186:                                              ; preds = %184
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #12
  %.not195 = icmp eq i32 %185, 0
  br i1 %.not195, label %202, 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 %201

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

201:                                              ; preds = %199, %197
  %.pn193 = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #12
  br label %306

202:                                              ; preds = %186
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  %203 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %28, i32 noundef 1)
          to label %204 unwind label %231

204:                                              ; preds = %202
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %12) #12
  %205 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %29, i32 noundef 1)
          to label %206 unwind label %233

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

207:                                              ; preds = %206
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  %208 = invoke noundef double @_Z10ut_time_msv()
          to label %.preheader unwind label %236

.preheader:                                       ; preds = %207
  %.sroa.10.0..sroa_idx41 = getelementptr inbounds i8, ptr %31, i64 4
  %.sroa.13.0..sroa_idx48 = getelementptr inbounds i8, ptr %31, i64 8
  %.sroa.16.0..sroa_idx55 = getelementptr inbounds i8, ptr %31, i64 12
  %.sroa.17.0..sroa_idx61 = getelementptr inbounds i8, ptr %31, i64 16
  %.sroa.18.0..sroa_idx67 = getelementptr inbounds i8, ptr %31, i64 20
  %.sroa.19.0..sroa_idx73 = getelementptr inbounds i8, ptr %31, i64 24
  %.sroa.20.0..sroa_idx79 = getelementptr inbounds i8, ptr %31, i64 28
  %.sroa.21.0..sroa_idx85 = getelementptr inbounds i8, ptr %31, i64 32
  %.sroa.22.0..sroa_idx91 = getelementptr inbounds i8, ptr %31, i64 36
  %.sroa.23.0..sroa_idx97 = getelementptr inbounds i8, ptr %31, i64 40
  %.sroa.24.0..sroa_idx103 = getelementptr inbounds i8, ptr %31, i64 44
  %.sroa.25.0..sroa_idx109 = getelementptr inbounds i8, ptr %31, i64 48
  %.sroa.26.0..sroa_idx115 = getelementptr inbounds i8, ptr %31, i64 52
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %31, align 8, !tbaa !14
  store i32 %74, ptr %.sroa.10.0..sroa_idx41, align 4, !tbaa !14
  store i32 %77, ptr %.sroa.13.0..sroa_idx48, align 8, !tbaa !14
  store i32 %80, ptr %.sroa.16.0..sroa_idx55, align 4, !tbaa !14
  store i32 %83, ptr %.sroa.17.0..sroa_idx61, align 8, !tbaa !14
  store i32 %86, ptr %.sroa.18.0..sroa_idx67, align 4, !tbaa !14
  store i32 %89, ptr %.sroa.19.0..sroa_idx73, align 8, !tbaa !14
  store i32 %92, ptr %.sroa.20.0..sroa_idx79, align 4, !tbaa !14
  store i32 %95, ptr %.sroa.21.0..sroa_idx85, align 8, !tbaa !14
  store i32 %98, ptr %.sroa.22.0..sroa_idx91, align 4, !tbaa !14
  store i32 %101, ptr %.sroa.23.0..sroa_idx97, align 8, !tbaa !14
  store i32 %104, ptr %.sroa.24.0..sroa_idx103, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx109, align 8, !tbaa !17
  store i32 0, ptr %.sroa.26.0..sroa_idx115, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %238 unwind label %251

209:                                              ; preds = %240
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %31, align 8, !tbaa !14
  store i32 %74, ptr %.sroa.10.0..sroa_idx41, align 4, !tbaa !14
  store i32 %77, ptr %.sroa.13.0..sroa_idx48, align 8, !tbaa !14
  store i32 %80, ptr %.sroa.16.0..sroa_idx55, align 4, !tbaa !14
  store i32 %83, ptr %.sroa.17.0..sroa_idx61, align 8, !tbaa !14
  store i32 %86, ptr %.sroa.18.0..sroa_idx67, align 4, !tbaa !14
  store i32 %89, ptr %.sroa.19.0..sroa_idx73, align 8, !tbaa !14
  store i32 %92, ptr %.sroa.20.0..sroa_idx79, align 4, !tbaa !14
  store i32 %95, ptr %.sroa.21.0..sroa_idx85, align 8, !tbaa !14
  store i32 %98, ptr %.sroa.22.0..sroa_idx91, align 4, !tbaa !14
  store i32 %101, ptr %.sroa.23.0..sroa_idx97, align 8, !tbaa !14
  store i32 %104, ptr %.sroa.24.0..sroa_idx103, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx109, align 8, !tbaa !17
  store i32 0, ptr %.sroa.26.0..sroa_idx115, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %210 unwind label %251

210:                                              ; preds = %209
  %211 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %30, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %212 unwind label %253

212:                                              ; preds = %210
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  %.not218.1 = icmp eq i32 %211, 0
  br i1 %.not218.1, label %213, label %241

213:                                              ; preds = %212
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %31, align 8, !tbaa !14
  store i32 %74, ptr %.sroa.10.0..sroa_idx41, align 4, !tbaa !14
  store i32 %77, ptr %.sroa.13.0..sroa_idx48, align 8, !tbaa !14
  store i32 %80, ptr %.sroa.16.0..sroa_idx55, align 4, !tbaa !14
  store i32 %83, ptr %.sroa.17.0..sroa_idx61, align 8, !tbaa !14
  store i32 %86, ptr %.sroa.18.0..sroa_idx67, align 4, !tbaa !14
  store i32 %89, ptr %.sroa.19.0..sroa_idx73, align 8, !tbaa !14
  store i32 %92, ptr %.sroa.20.0..sroa_idx79, align 4, !tbaa !14
  store i32 %95, ptr %.sroa.21.0..sroa_idx85, align 8, !tbaa !14
  store i32 %98, ptr %.sroa.22.0..sroa_idx91, align 4, !tbaa !14
  store i32 %101, ptr %.sroa.23.0..sroa_idx97, align 8, !tbaa !14
  store i32 %104, ptr %.sroa.24.0..sroa_idx103, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx109, align 8, !tbaa !17
  store i32 0, ptr %.sroa.26.0..sroa_idx115, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %214 unwind label %251

214:                                              ; preds = %213
  %215 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %30, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %216 unwind label %253

216:                                              ; preds = %214
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  %.not218.2 = icmp eq i32 %215, 0
  br i1 %.not218.2, label %217, label %241

217:                                              ; preds = %216
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %31, align 8, !tbaa !14
  store i32 %74, ptr %.sroa.10.0..sroa_idx41, align 4, !tbaa !14
  store i32 %77, ptr %.sroa.13.0..sroa_idx48, align 8, !tbaa !14
  store i32 %80, ptr %.sroa.16.0..sroa_idx55, align 4, !tbaa !14
  store i32 %83, ptr %.sroa.17.0..sroa_idx61, align 8, !tbaa !14
  store i32 %86, ptr %.sroa.18.0..sroa_idx67, align 4, !tbaa !14
  store i32 %89, ptr %.sroa.19.0..sroa_idx73, align 8, !tbaa !14
  store i32 %92, ptr %.sroa.20.0..sroa_idx79, align 4, !tbaa !14
  store i32 %95, ptr %.sroa.21.0..sroa_idx85, align 8, !tbaa !14
  store i32 %98, ptr %.sroa.22.0..sroa_idx91, align 4, !tbaa !14
  store i32 %101, ptr %.sroa.23.0..sroa_idx97, align 8, !tbaa !14
  store i32 %104, ptr %.sroa.24.0..sroa_idx103, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx109, align 8, !tbaa !17
  store i32 0, ptr %.sroa.26.0..sroa_idx115, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %218 unwind label %251

218:                                              ; preds = %217
  %219 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %30, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %220 unwind label %253

220:                                              ; preds = %218
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  %.not218.3 = icmp eq i32 %219, 0
  br i1 %.not218.3, label %221, label %241

221:                                              ; preds = %220
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %31, align 8, !tbaa !14
  store i32 %74, ptr %.sroa.10.0..sroa_idx41, align 4, !tbaa !14
  store i32 %77, ptr %.sroa.13.0..sroa_idx48, align 8, !tbaa !14
  store i32 %80, ptr %.sroa.16.0..sroa_idx55, align 4, !tbaa !14
  store i32 %83, ptr %.sroa.17.0..sroa_idx61, align 8, !tbaa !14
  store i32 %86, ptr %.sroa.18.0..sroa_idx67, align 4, !tbaa !14
  store i32 %89, ptr %.sroa.19.0..sroa_idx73, align 8, !tbaa !14
  store i32 %92, ptr %.sroa.20.0..sroa_idx79, align 4, !tbaa !14
  store i32 %95, ptr %.sroa.21.0..sroa_idx85, align 8, !tbaa !14
  store i32 %98, ptr %.sroa.22.0..sroa_idx91, align 4, !tbaa !14
  store i32 %101, ptr %.sroa.23.0..sroa_idx97, align 8, !tbaa !14
  store i32 %104, ptr %.sroa.24.0..sroa_idx103, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx109, align 8, !tbaa !17
  store i32 0, ptr %.sroa.26.0..sroa_idx115, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %222 unwind label %251

222:                                              ; preds = %221
  %223 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %30, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %224 unwind label %253

224:                                              ; preds = %222
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  %.not218.4 = icmp eq i32 %223, 0
  br i1 %.not218.4, label %225, label %241

225:                                              ; preds = %224
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  store i32 %71, ptr %31, align 8, !tbaa !14
  store i32 %74, ptr %.sroa.10.0..sroa_idx41, align 4, !tbaa !14
  store i32 %77, ptr %.sroa.13.0..sroa_idx48, align 8, !tbaa !14
  store i32 %80, ptr %.sroa.16.0..sroa_idx55, align 4, !tbaa !14
  store i32 %83, ptr %.sroa.17.0..sroa_idx61, align 8, !tbaa !14
  store i32 %86, ptr %.sroa.18.0..sroa_idx67, align 4, !tbaa !14
  store i32 %89, ptr %.sroa.19.0..sroa_idx73, align 8, !tbaa !14
  store i32 %92, ptr %.sroa.20.0..sroa_idx79, align 4, !tbaa !14
  store i32 %95, ptr %.sroa.21.0..sroa_idx85, align 8, !tbaa !14
  store i32 %98, ptr %.sroa.22.0..sroa_idx91, align 4, !tbaa !14
  store i32 %101, ptr %.sroa.23.0..sroa_idx97, align 8, !tbaa !14
  store i32 %104, ptr %.sroa.24.0..sroa_idx103, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx109, align 8, !tbaa !17
  store i32 0, ptr %.sroa.26.0..sroa_idx115, align 4, !tbaa !19
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  invoke void @_ZNSt6vectorI6TensorSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %226 unwind label %251

226:                                              ; preds = %225
  %227 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %30, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %228 unwind label %253

228:                                              ; preds = %226
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  %.not218.5 = icmp eq i32 %227, 0
  br i1 %.not218.5, label %229, label %241

229:                                              ; preds = %228
  %230 = invoke noundef double @_Z10ut_time_msv()
          to label %256 unwind label %272

231:                                              ; preds = %202
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %235

233:                                              ; preds = %206, %204
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #12
  br label %235

235:                                              ; preds = %233, %231
  %.pn196 = phi { ptr, i32 } [ %234, %233 ], [ %232, %231 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  br label %306

236:                                              ; preds = %207
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %306

238:                                              ; preds = %.preheader
  %239 = invoke noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef nonnull %30, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %240 unwind label %253

240:                                              ; preds = %238
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  %.not218 = icmp eq i32 %239, 0
  br i1 %.not218, label %209, label %241

241:                                              ; preds = %228, %224, %220, %216, %212, %240
  %.lcssa220 = phi i32 [ %239, %240 ], [ %211, %212 ], [ %215, %216 ], [ %219, %220 ], [ %223, %224 ], [ %227, %228 ]
  %242 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %243 = trunc i64 %242 to i32
  %244 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %243)
  %245 = load ptr, ptr @stdout, align 8, !tbaa !5
  %246 = call i32 @fflush(ptr noundef %245)
  %247 = call ptr @ee2str(i32 noundef %.lcssa220)
  %248 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %247)
  %249 = load ptr, ptr @stdout, align 8, !tbaa !5
  %250 = call i32 @fflush(ptr noundef %249)
  call void @exit(i32 noundef 1) #13
  unreachable

251:                                              ; preds = %225, %221, %217, %213, %209, %.preheader
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %255

253:                                              ; preds = %226, %222, %218, %214, %210, %238
  %254 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #12
  br label %255

255:                                              ; preds = %253, %251
  %.pn204 = phi { ptr, i32 } [ %254, %253 ], [ %252, %251 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #12
  br label %306

256:                                              ; preds = %229
  %257 = fsub double %230, %208
  %258 = fdiv double %257, 6.000000e+00
  call void @llvm.lifetime.start.p0(i64 150, ptr nonnull %34) #12
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %35) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #12
  store i32 0, ptr %38, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #12
  store i32 0, ptr %39, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #12
  store i32 0, ptr %40, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #12
  store i32 0, ptr %41, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #12
  store i32 0, ptr %42, align 4, !tbaa !14
  %259 = call noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11)
  %.not198 = icmp eq i8 %259, 0
  br i1 %.not198, label %274, label %260

260:                                              ; preds = %256
  %261 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef nonnull %42)
  %.not201 = icmp eq i32 %261, 0
  br i1 %.not201, label %288, label %262

262:                                              ; preds = %260
  %263 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %264 = trunc i64 %263 to i32
  %265 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %264)
  %266 = load ptr, ptr @stdout, align 8, !tbaa !5
  %267 = call i32 @fflush(ptr noundef %266)
  %268 = call ptr @ee2str(i32 noundef %261)
  %269 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %268)
  %270 = load ptr, ptr @stdout, align 8, !tbaa !5
  %271 = call i32 @fflush(ptr noundef %270)
  call void @exit(i32 noundef 1) #13
  unreachable

272:                                              ; preds = %229
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %306

274:                                              ; preds = %256
  %275 = call noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11)
  %.not199 = icmp eq i8 %275, 0
  br i1 %.not199, label %288, label %276

276:                                              ; preds = %274
  %277 = call noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %42)
  %.not200 = icmp eq i32 %277, 0
  br i1 %.not200, label %._crit_edge, label %278

._crit_edge:                                      ; preds = %276
  %.pre = load i32, ptr %40, align 4, !tbaa !14
  br label %288

278:                                              ; preds = %276
  %279 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %280 = trunc i64 %279 to i32
  %281 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %280)
  %282 = load ptr, ptr @stdout, align 8, !tbaa !5
  %283 = call i32 @fflush(ptr noundef %282)
  %284 = call ptr @ee2str(i32 noundef %277)
  %285 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %284)
  %286 = load ptr, ptr @stdout, align 8, !tbaa !5
  %287 = call i32 @fflush(ptr noundef %286)
  call void @exit(i32 noundef 1) #13
  unreachable

288:                                              ; preds = %._crit_edge, %260, %274
  %289 = phi i32 [ %.pre, %._crit_edge ], [ 0, %260 ], [ 0, %274 ]
  %290 = load i32, ptr %38, align 4, !tbaa !14
  %291 = load i32, ptr %39, align 4, !tbaa !14
  %292 = load i32, ptr %41, align 4, !tbaa !14
  %293 = load i32, ptr %42, align 4, !tbaa !14
  %294 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %56, i32 noundef %59, i32 noundef %62, i32 noundef %65, i32 noundef %68, i32 noundef %71, i32 noundef %74, i32 noundef %77, i32 noundef %290, i32 noundef %291, i32 noundef %289, i32 noundef %292, i32 noundef %293) #12
  %295 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %34, ptr noundef nonnull dereferenceable(1) @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %35) #12
  %296 = uitofp i32 %146 to double
  %297 = uitofp i32 %71 to double
  %298 = fmul double %297, %296
  %299 = uitofp i32 %74 to double
  %300 = fmul double %298, %299
  %301 = uitofp i32 %77 to double
  %302 = fmul double %300, %301
  invoke void @_Z6ut_log8DataTypePcdd(i32 noundef %2, ptr noundef nonnull %34, double noundef %302, double noundef %258)
          to label %303 unwind label %304

303:                                              ; preds = %288
  call void @free(ptr noundef %111) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %35) #12
  call void @llvm.lifetime.end.p0(i64 150, ptr nonnull %34) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %11) #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
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %4) #12
  ret i32 0

304:                                              ; preds = %288
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #12
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %35) #12
  call void @llvm.lifetime.end.p0(i64 150, ptr nonnull %34) #12
  br label %306

306:                                              ; preds = %236, %255, %304, %272, %235, %201, %182
  %.pn204.pn.pn = phi { ptr, i32 } [ %.pn196, %235 ], [ %.pn193, %201 ], [ %.pn, %182 ], [ %.pn204, %255 ], [ %237, %236 ], [ %305, %304 ], [ %273, %272 ]
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  br label %307

307:                                              ; preds = %306, %176
  %.pn204.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn, %306 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  call void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #12
  br label %308

308:                                              ; preds = %307, %174
  %.pn204.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn, %307 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  br label %309

309:                                              ; preds = %308, %172
  %.pn204.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn.pn, %308 ], [ %173, %172 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #12
  br label %310

310:                                              ; preds = %309, %170
  %.pn204.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn.pn.pn, %309 ], [ %171, %170 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #12
  br label %311

311:                                              ; preds = %310, %168
  %.pn204.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn.pn.pn.pn, %310 ], [ %169, %168 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #12
  br label %312

312:                                              ; preds = %311, %166
  %.pn204.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn.pn.pn.pn.pn, %311 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %11) #12
  br label %313

313:                                              ; preds = %312, %164, %140
  %.pn204.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn.pn.pn.pn.pn.pn, %312 ], [ %165, %164 ], [ %141, %140 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  br label %314

314:                                              ; preds = %313, %138
  %.pn204.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn.pn.pn.pn.pn.pn.pn.pn, %313 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  br label %315

315:                                              ; preds = %134, %136, %314, %132
  %.pn204.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %133, %132 ], [ %.pn204.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %314 ], [ %137, %136 ], [ %135, %134 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %4) #12
  resume { ptr, i32 } %.pn204.pn.pn.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 nounwind uwtable
declare dso_local void @_ZN10TensorDescC2Ev(ptr noundef nonnull align 4 dereferenceable(92)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress 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) #7

; 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 nounwind uwtable
declare dso_local void @_Z9tensor5df8DataType10DataFormatjjjjj(ptr dead_on_unwind noalias writable sret(%struct.TensorDesc) align 4, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #6

; 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 #0 align 2

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

declare i32 @__gxx_personality_v0(...)

; 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 #6 align 2

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

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

declare noundef i32 @_Z25pooling_infer_output_sizeP6Tensor16PoolingParamSpecS0_P8ArchInfo(ptr noundef, ptr noundef byval(%struct.PoolingParamSpec) align 8, ptr noundef, ptr noundef) local_unnamed_addr #9

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 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 #0 align 2

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

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

declare noundef i32 @_Z7pooling6Tensor16PoolingParamSpecS_St6vectorIS_SaIS_EEP8ArchInfo(ptr noundef, ptr noundef byval(%struct.PoolingParamSpec) align 8, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #9

; 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 #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI6TensorSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #10 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

declare noundef double @_Z10ut_time_msv() local_unnamed_addr #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #6

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

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

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

; 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 #10 align 2

attributes #0 = { 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 #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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { "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 = { 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 = { 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 = !{i64 0, i64 4, !10, i64 4, i64 4, !12, i64 8, i64 4, !14, i64 12, i64 80, !16}
!10 = !{!11, !11, i64 0}
!11 = !{!"_ZTS8DataType", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"_ZTS10DataFormat", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTS9RoundMode", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"_ZTS11PoolingMode", !7, i64 0}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass