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

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

@.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 [11 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z13poolingbpTestiPPc8DataType(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 i32, align 4
  %33 = alloca %class.Tensor, align 8
  %34 = alloca %struct.PoolingParamSpec, align 8
  %35 = alloca %class.Tensor, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %class.Tensor, align 8
  %39 = alloca %struct.PoolingParamSpec, align 8
  %40 = alloca %class.Tensor, align 8
  %41 = alloca i32, align 4
  %42 = alloca %class.Tensor, align 8
  %43 = alloca %class.Tensor, align 8
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %class.Tensor, align 8
  %48 = alloca %struct.PoolingParamSpec, align 8
  %49 = alloca %class.Tensor, align 8
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca [150 x i8], align 16
  %54 = alloca [120 x i8], align 16
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca %struct.TensorDesc, align 8
  %63 = alloca i32, align 4
  %64 = alloca %struct.TensorDesc, align 8
  %65 = alloca i32, align 4
  %66 = alloca %struct.TensorDesc, align 8
  %67 = alloca i32, align 4
  %68 = alloca %struct.TensorDesc, align 8
  %69 = alloca i32, align 4
  %70 = 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
  %71 = load i32, ptr %4, align 4, !tbaa !5
  %72 = icmp eq i32 %71, 18
  br i1 %72, label %83, label %73

73:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %74 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %75 = trunc i64 %74 to i32
  store i32 %75, ptr %7, align 4, !tbaa !5
  %76 = load i32, ptr %7, align 4, !tbaa !5
  %77 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %76)
  %78 = load ptr, ptr @stdout, align 8, !tbaa !9
  %79 = call i32 @fflush(ptr noundef %78)
  %80 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %81 = load ptr, ptr @stdout, align 8, !tbaa !9
  %82 = call i32 @fflush(ptr noundef %81)
  call void @exit(i32 noundef 1) #10
  unreachable

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

169:                                              ; preds = %83
  call void @llvm.lifetime.start.p0(i64 92, ptr %15) #9
  %170 = load i32, ptr %6, align 4, !tbaa !11
  %171 = load i32, ptr %8, align 4, !tbaa !5
  %172 = load i32, ptr %9, align 4, !tbaa !5
  %173 = load i32, ptr %11, align 4, !tbaa !5
  %174 = load i32, ptr %12, align 4, !tbaa !5
  call void @_Z9tensor4df8DataType10DataFormatjjjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %15, i32 noundef %170, i32 noundef 2, i32 noundef %171, i32 noundef %172, i32 noundef %173, i32 noundef %174)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %15, i64 92, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 92, ptr %15) #9
  br label %182

175:                                              ; preds = %83
  call void @llvm.lifetime.start.p0(i64 92, ptr %16) #9
  %176 = load i32, ptr %6, align 4, !tbaa !11
  %177 = load i32, ptr %8, align 4, !tbaa !5
  %178 = load i32, ptr %9, align 4, !tbaa !5
  %179 = load i32, ptr %10, align 4, !tbaa !5
  %180 = load i32, ptr %11, align 4, !tbaa !5
  %181 = load i32, ptr %12, align 4, !tbaa !5
  call void @_Z9tensor5df8DataType10DataFormatjjjjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %16, i32 noundef %176, i32 noundef 2, i32 noundef %177, i32 noundef %178, i32 noundef %179, i32 noundef %180, i32 noundef %181)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %16, i64 92, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 92, ptr %16) #9
  br label %182

182:                                              ; preds = %175, %169
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 %14, i64 92, i1 false), !tbaa.struct !32
  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) #9
  %183 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %184 unwind label %218

184:                                              ; preds = %182
  store i32 %183, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %185 = load i32, ptr %19, align 4, !tbaa !5
  %186 = load i32, ptr %6, align 4, !tbaa !11
  %187 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %185, i32 noundef %186, i32 noundef 0)
          to label %188 unwind label %222

188:                                              ; preds = %184
  store ptr %187, 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) #9
  %189 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %23, i32 noundef 1)
          to label %190 unwind label %226

190:                                              ; preds = %188
  %191 = load ptr, ptr %22, align 8, !tbaa !9
  %192 = invoke noundef i32 @_ZN6Tensor5bytesEv(ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %193 unwind label %226

193:                                              ; preds = %190
  %194 = zext i32 %192 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %189, ptr noundef %191, i64 noundef %194)
          to label %195 unwind label %226

195:                                              ; preds = %193
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef 1)
          to label %196 unwind label %230

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !36
  %197 = 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 %198 unwind label %234

198:                                              ; preds = %196
  store i32 %197, ptr %25, align 4, !tbaa !40
  %199 = load i32, ptr %25, align 4, !tbaa !40
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %242

201:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %202 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %203 = trunc i64 %202 to i32
  store i32 %203, ptr %27, align 4, !tbaa !5
  %204 = load i32, ptr %27, align 4, !tbaa !5
  %205 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %204)
          to label %206 unwind label %238

206:                                              ; preds = %201
  %207 = load ptr, ptr @stdout, align 8, !tbaa !9
  %208 = invoke i32 @fflush(ptr noundef %207)
          to label %209 unwind label %238

209:                                              ; preds = %206
  %210 = load i32, ptr %25, align 4, !tbaa !40
  %211 = invoke ptr @ee2str(i32 noundef %210)
          to label %212 unwind label %238

212:                                              ; preds = %209
  %213 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %211)
          to label %214 unwind label %238

214:                                              ; preds = %212
  %215 = load ptr, ptr @stdout, align 8, !tbaa !9
  %216 = invoke i32 @fflush(ptr noundef %215)
          to label %217 unwind label %238

217:                                              ; preds = %214
  call void @exit(i32 noundef 1) #10
  unreachable

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

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

226:                                              ; preds = %193, %190, %188
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %20, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %530

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

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

238:                                              ; preds = %214, %212, %209, %206, %201
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %20, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %269

242:                                              ; preds = %198
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %243 unwind label %270

243:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 92, ptr %28) #9
  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 %244 unwind label %274

244:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !32
  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 %245 unwind label %278

245:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  %246 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %247 unwind label %282

247:                                              ; preds = %245
  store i32 %246, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !36
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  %248 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef %33, ptr noundef byval(%struct.PoolingParamSpec) align 8 %34, ptr noundef %35, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %249 unwind label %286

249:                                              ; preds = %247
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  store i32 %248, ptr %32, align 4, !tbaa !40
  %250 = load i32, ptr %32, align 4, !tbaa !40
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %294

252:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %253 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %254 = trunc i64 %253 to i32
  store i32 %254, ptr %36, align 4, !tbaa !5
  %255 = load i32, ptr %36, align 4, !tbaa !5
  %256 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %255)
          to label %257 unwind label %290

257:                                              ; preds = %252
  %258 = load ptr, ptr @stdout, align 8, !tbaa !9
  %259 = invoke i32 @fflush(ptr noundef %258)
          to label %260 unwind label %290

260:                                              ; preds = %257
  %261 = load i32, ptr %32, align 4, !tbaa !40
  %262 = invoke ptr @ee2str(i32 noundef %261)
          to label %263 unwind label %290

263:                                              ; preds = %260
  %264 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %262)
          to label %265 unwind label %290

265:                                              ; preds = %263
  %266 = load ptr, ptr @stdout, align 8, !tbaa !9
  %267 = invoke i32 @fflush(ptr noundef %266)
          to label %268 unwind label %290

268:                                              ; preds = %265
  call void @exit(i32 noundef 1) #10
  unreachable

269:                                              ; preds = %238, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %528

270:                                              ; preds = %242
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %20, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %21, align 4
  br label %528

274:                                              ; preds = %243
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %20, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %21, align 4
  br label %527

278:                                              ; preds = %244
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %20, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %21, align 4
  br label %526

282:                                              ; preds = %245
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %20, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %21, align 4
  br label %525

286:                                              ; preds = %247
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %20, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %316

290:                                              ; preds = %265, %263, %260, %257, %252
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %20, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %316

294:                                              ; preds = %249
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !36
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  %295 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef %38, ptr noundef byval(%struct.PoolingParamSpec) align 8 %39, ptr noundef %40, ptr noundef @_ZL18UT_SERIAL_ARCHINFO)
          to label %296 unwind label %317

296:                                              ; preds = %294
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  store i32 %295, ptr %37, align 4, !tbaa !40
  %297 = load i32, ptr %37, align 4, !tbaa !40
  %298 = icmp ne i32 %297, 0
  br i1 %298, label %299, label %325

299:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %300 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %301 = trunc i64 %300 to i32
  store i32 %301, ptr %41, align 4, !tbaa !5
  %302 = load i32, ptr %41, align 4, !tbaa !5
  %303 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %302)
          to label %304 unwind label %321

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

307:                                              ; preds = %304
  %308 = load i32, ptr %37, align 4, !tbaa !40
  %309 = invoke ptr @ee2str(i32 noundef %308)
          to label %310 unwind label %321

310:                                              ; preds = %307
  %311 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %309)
          to label %312 unwind label %321

312:                                              ; preds = %310
  %313 = load ptr, ptr @stdout, align 8, !tbaa !9
  %314 = invoke i32 @fflush(ptr noundef %313)
          to label %315 unwind label %321

315:                                              ; preds = %312
  call void @exit(i32 noundef 1) #10
  unreachable

316:                                              ; preds = %290, %286
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %525

317:                                              ; preds = %294
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %20, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %339

321:                                              ; preds = %312, %310, %307, %304, %299
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %20, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %339

325:                                              ; preds = %296
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  %326 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %42, i32 noundef 1)
          to label %327 unwind label %340

327:                                              ; preds = %325
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  %328 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %43, i32 noundef 1)
          to label %329 unwind label %344

329:                                              ; preds = %327
  %330 = load i32, ptr %31, align 4, !tbaa !5
  %331 = load i32, ptr %6, align 4, !tbaa !11
  invoke void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef %326, ptr noundef %328, i32 noundef %330, i32 noundef %331, float noundef 0x3FA99999A0000000)
          to label %332 unwind label %344

332:                                              ; preds = %329
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %333 = invoke noundef double @_Z10ut_time_msv()
          to label %334 unwind label %349

334:                                              ; preds = %332
  store double %333, ptr %44, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  store i32 0, ptr %45, align 4, !tbaa !5
  br label %335

335:                                              ; preds = %384, %334
  %336 = load i32, ptr %45, align 4, !tbaa !5
  %337 = icmp slt i32 %336, 6
  br i1 %337, label %353, label %338

338:                                              ; preds = %335
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %388

339:                                              ; preds = %321, %317
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %525

340:                                              ; preds = %325
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %20, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %21, align 4
  br label %348

344:                                              ; preds = %329, %327
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %20, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %348

348:                                              ; preds = %344, %340
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #9
  br label %525

349:                                              ; preds = %332
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %20, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %21, align 4
  br label %524

353:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %13, i64 60, i1 false), !tbaa.struct !36
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  %354 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef %47, ptr noundef byval(%struct.PoolingParamSpec) align 8 %48, ptr noundef %49, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %355 unwind label %375

355:                                              ; preds = %353
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  store i32 %354, ptr %46, align 4, !tbaa !40
  %356 = load i32, ptr %46, align 4, !tbaa !40
  %357 = icmp ne i32 %356, 0
  br i1 %357, label %358, label %383

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

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

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

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

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

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

375:                                              ; preds = %353
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %20, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %21, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %387

379:                                              ; preds = %371, %369, %366, %363, %358
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %20, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %387

383:                                              ; preds = %355
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %384

384:                                              ; preds = %383
  %385 = load i32, ptr %45, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %45, align 4, !tbaa !5
  br label %335, !llvm.loop !44

387:                                              ; preds = %379, %375
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %524

388:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %389 = invoke noundef double @_Z10ut_time_msv()
          to label %390 unwind label %420

390:                                              ; preds = %388
  store double %389, ptr %51, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %391 = load double, ptr %51, align 8, !tbaa !42
  %392 = load double, ptr %44, align 8, !tbaa !42
  %393 = fsub double %391, %392
  %394 = fdiv double %393, 6.000000e+00
  store double %394, ptr %52, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 150, ptr %53) #9
  call void @llvm.lifetime.start.p0(i64 120, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  store i32 0, ptr %57, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  store i32 0, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  store i32 0, ptr %59, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  store i32 0, ptr %60, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #9
  store i32 0, ptr %61, align 4, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %62, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !32
  %395 = invoke noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %62)
          to label %396 unwind label %424

396:                                              ; preds = %390
  %397 = icmp ne i8 %395, 0
  br i1 %397, label %398, label %438

398:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !32
  %399 = invoke noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %64, ptr noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %60, ptr noundef %61)
          to label %400 unwind label %428

400:                                              ; preds = %398
  store i32 %399, ptr %63, align 4, !tbaa !40
  %401 = load i32, ptr %63, align 4, !tbaa !40
  %402 = icmp ne i32 %401, 0
  br i1 %402, label %403, label %436

403:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #9
  %404 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %405 = trunc i64 %404 to i32
  store i32 %405, ptr %65, align 4, !tbaa !5
  %406 = load i32, ptr %65, align 4, !tbaa !5
  %407 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %406)
          to label %408 unwind label %432

408:                                              ; preds = %403
  %409 = load ptr, ptr @stdout, align 8, !tbaa !9
  %410 = invoke i32 @fflush(ptr noundef %409)
          to label %411 unwind label %432

411:                                              ; preds = %408
  %412 = load i32, ptr %63, align 4, !tbaa !40
  %413 = invoke ptr @ee2str(i32 noundef %412)
          to label %414 unwind label %432

414:                                              ; preds = %411
  %415 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %413)
          to label %416 unwind label %432

416:                                              ; preds = %414
  %417 = load ptr, ptr @stdout, align 8, !tbaa !9
  %418 = invoke i32 @fflush(ptr noundef %417)
          to label %419 unwind label %432

419:                                              ; preds = %416
  call void @exit(i32 noundef 1) #10
  unreachable

420:                                              ; preds = %388
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %20, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %21, align 4
  br label %523

424:                                              ; preds = %438, %390
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %20, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %21, align 4
  br label %522

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

432:                                              ; preds = %416, %414, %411, %408, %403
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %20, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  br label %437

436:                                              ; preds = %400
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %475

437:                                              ; preds = %432, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %522

438:                                              ; preds = %396
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !32
  %439 = invoke noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %66)
          to label %440 unwind label %424

440:                                              ; preds = %438
  %441 = icmp ne i8 %439, 0
  br i1 %441, label %442, label %474

442:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !32
  %443 = invoke noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %68, ptr noundef %55, ptr noundef %56, ptr noundef %57, ptr noundef %58, ptr noundef %59, ptr noundef %60, ptr noundef %61)
          to label %444 unwind label %464

444:                                              ; preds = %442
  store i32 %443, ptr %67, align 4, !tbaa !40
  %445 = load i32, ptr %67, align 4, !tbaa !40
  %446 = icmp ne i32 %445, 0
  br i1 %446, label %447, label %472

447:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #9
  %448 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %449 = trunc i64 %448 to i32
  store i32 %449, ptr %69, align 4, !tbaa !5
  %450 = load i32, ptr %69, align 4, !tbaa !5
  %451 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %450)
          to label %452 unwind label %468

452:                                              ; preds = %447
  %453 = load ptr, ptr @stdout, align 8, !tbaa !9
  %454 = invoke i32 @fflush(ptr noundef %453)
          to label %455 unwind label %468

455:                                              ; preds = %452
  %456 = load i32, ptr %67, align 4, !tbaa !40
  %457 = invoke ptr @ee2str(i32 noundef %456)
          to label %458 unwind label %468

458:                                              ; preds = %455
  %459 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2, ptr noundef %457)
          to label %460 unwind label %468

460:                                              ; preds = %458
  %461 = load ptr, ptr @stdout, align 8, !tbaa !9
  %462 = invoke i32 @fflush(ptr noundef %461)
          to label %463 unwind label %468

463:                                              ; preds = %460
  call void @exit(i32 noundef 1) #10
  unreachable

464:                                              ; preds = %442
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %20, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %21, align 4
  br label %473

468:                                              ; preds = %460, %458, %455, %452, %447
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %20, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  br label %473

472:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %474

473:                                              ; preds = %468, %464
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %522

474:                                              ; preds = %472, %440
  br label %475

475:                                              ; preds = %474, %436
  %476 = getelementptr inbounds [120 x i8], ptr %54, i64 0, i64 0
  %477 = load i32, ptr %8, align 4, !tbaa !5
  %478 = load i32, ptr %9, align 4, !tbaa !5
  %479 = load i32, ptr %10, align 4, !tbaa !5
  %480 = load i32, ptr %11, align 4, !tbaa !5
  %481 = load i32, ptr %12, align 4, !tbaa !5
  %482 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 0
  %483 = load i32, ptr %482, align 4, !tbaa !20
  %484 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 1
  %485 = load i32, ptr %484, align 4, !tbaa !21
  %486 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 2
  %487 = load i32, ptr %486, align 4, !tbaa !22
  %488 = load i32, ptr %57, align 4, !tbaa !5
  %489 = load i32, ptr %58, align 4, !tbaa !5
  %490 = load i32, ptr %59, align 4, !tbaa !5
  %491 = load i32, ptr %60, align 4, !tbaa !5
  %492 = load i32, ptr %61, align 4, !tbaa !5
  %493 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %476, ptr noundef @.str.3, i32 noundef %477, i32 noundef %478, i32 noundef %479, i32 noundef %480, i32 noundef %481, i32 noundef %483, i32 noundef %485, i32 noundef %487, i32 noundef %488, i32 noundef %489, i32 noundef %490, i32 noundef %491, i32 noundef %492) #9
  %494 = getelementptr inbounds [150 x i8], ptr %53, i64 0, i64 0
  %495 = getelementptr inbounds [120 x i8], ptr %54, i64 0, i64 0
  %496 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %494, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %495) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  %497 = load i32, ptr %31, align 4, !tbaa !5
  %498 = uitofp i32 %497 to double
  %499 = fmul double 1.000000e+00, %498
  %500 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 0
  %501 = load i32, ptr %500, align 4, !tbaa !20
  %502 = uitofp i32 %501 to double
  %503 = fmul double %499, %502
  %504 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 1
  %505 = load i32, ptr %504, align 4, !tbaa !21
  %506 = uitofp i32 %505 to double
  %507 = fmul double %503, %506
  %508 = getelementptr inbounds %struct.PoolingParamSpec, ptr %13, i32 0, i32 2
  %509 = load i32, ptr %508, align 4, !tbaa !22
  %510 = uitofp i32 %509 to double
  %511 = fmul double %507, %510
  store double %511, ptr %70, align 8, !tbaa !42
  %512 = load i32, ptr %6, align 4, !tbaa !11
  %513 = getelementptr inbounds [150 x i8], ptr %53, i64 0, i64 0
  %514 = load double, ptr %70, align 8, !tbaa !42
  %515 = load double, ptr %52, align 8, !tbaa !42
  invoke void @_Z6ut_log8DataTypePcdd(i32 noundef %512, ptr noundef %513, double noundef %514, double noundef %515)
          to label %516 unwind label %518

516:                                              ; preds = %475
  %517 = load ptr, ptr %22, align 8, !tbaa !9
  call void @free(ptr noundef %517) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 150, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %28) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 60, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  ret i32 0

518:                                              ; preds = %475
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %20, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %522

522:                                              ; preds = %518, %473, %437, %424
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 150, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %523

523:                                              ; preds = %522, %420
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %524

524:                                              ; preds = %523, %387, %349
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %525

525:                                              ; preds = %524, %348, %339, %316, %282
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %526

526:                                              ; preds = %525, %278
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #9
  br label %527

527:                                              ; preds = %526, %274
  call void @llvm.lifetime.end.p0(i64 92, ptr %28) #9
  br label %528

528:                                              ; preds = %527, %270, %269
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %529

529:                                              ; preds = %528, %230
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  br label %530

530:                                              ; preds = %529, %226, %222
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %531

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

532:                                              ; preds = %531
  %533 = load ptr, ptr %20, align 8
  %534 = load i32, ptr %21, align 4
  %535 = insertvalue { ptr, i32 } poison, ptr %533, 0
  %536 = insertvalue { ptr, i32 } %535, i32 %534, 1
  resume { ptr, i32 } %536
}

; 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

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

; 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

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 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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, !17, i64 56}
!20 = !{!14, !6, i64 0}
!21 = !{!14, !6, i64 4}
!22 = !{!14, !6, i64 8}
!23 = !{!14, !6, i64 12}
!24 = !{!14, !6, i64 16}
!25 = !{!14, !6, i64 20}
!26 = !{!14, !6, i64 24}
!27 = !{!14, !6, i64 28}
!28 = !{!14, !6, i64 32}
!29 = !{!14, !6, i64 36}
!30 = !{!14, !6, i64 40}
!31 = !{!14, !6, i64 44}
!32 = !{i64 0, i64 4, !11, i64 4, i64 4, !33, i64 8, i64 4, !5, i64 12, i64 80, !35}
!33 = !{!34, !34, i64 0}
!34 = !{!"_ZTS10DataFormat", !7, i64 0}
!35 = !{!7, !7, i64 0}
!36 = !{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, !37, i64 52, i64 4, !38, i64 56, i64 1, !39}
!37 = !{!15, !15, i64 0}
!38 = !{!16, !16, i64 0}
!39 = !{!17, !17, i64 0}
!40 = !{!41, !41, i64 0}
!41 = !{!"_ZTS2EE", !7, i64 0}
!42 = !{!43, !43, i64 0}
!43 = !{!"double", !7, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"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 }

@.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 [11 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z13poolingbpTestiPPc8DataType(i32 noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %.sroa.28 = alloca [3 x i8], align 1
  %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 %struct.PoolingParamSpec, align 8
  %15 = alloca %class.Tensor, align 8
  %16 = alloca %class.Tensor, align 8
  %17 = alloca %struct.PoolingParamSpec, align 8
  %18 = alloca %class.Tensor, align 8
  %19 = alloca %class.Tensor, align 8
  %20 = alloca %class.Tensor, align 8
  %21 = alloca %class.Tensor, align 8
  %22 = alloca %struct.PoolingParamSpec, align 8
  %23 = alloca %class.Tensor, align 8
  %24 = alloca [150 x i8], align 16
  %25 = alloca [120 x i8], align 16
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = icmp eq i32 %0, 18
  br i1 %33, label %43, label %34

34:                                               ; preds = %3
  %35 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %36 = trunc i64 %35 to i32
  %37 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %36)
  %38 = load ptr, ptr @stdout, align 8, !tbaa !5
  %39 = tail call i32 @fflush(ptr noundef %38)
  %40 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %41 = load ptr, ptr @stdout, align 8, !tbaa !5
  %42 = tail call i32 @fflush(ptr noundef %41)
  tail call void @exit(i32 noundef 1) #12
  unreachable

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

96:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %5) #11
  call void @_Z9tensor4df8DataType10DataFormatjjjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %5, i32 noundef %2, i32 noundef 2, i32 noundef %46, i32 noundef %49, i32 noundef %55, i32 noundef %58)
  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) #11
  br label %98

97:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %6) #11
  call void @_Z9tensor5df8DataType10DataFormatjjjjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %6, i32 noundef %2, i32 noundef 2, i32 noundef %46, i32 noundef %49, i32 noundef %52, i32 noundef %55, i32 noundef %58)
  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) #11
  br label %98

98:                                               ; preds = %97, %96
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #11
  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)
  %99 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %100 unwind label %122

100:                                              ; preds = %98
  %101 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %99, i32 noundef %2, i32 noundef 0)
          to label %102 unwind label %124

102:                                              ; preds = %100
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  %103 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %8, i32 noundef 1)
          to label %104 unwind label %126

104:                                              ; preds = %102
  %105 = invoke noundef i32 @_ZN6Tensor5bytesEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %106 unwind label %126

106:                                              ; preds = %104
  %107 = zext i32 %105 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %103, ptr noundef %101, i64 noundef %107)
          to label %108 unwind label %126

108:                                              ; preds = %106
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #11
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 1)
          to label %109 unwind label %128

109:                                              ; preds = %108
  store i32 %61, ptr %10, align 8, !tbaa !14
  %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 4
  store i32 %64, ptr %.sroa.10.0..sroa_idx, align 4, !tbaa !14
  %.sroa.13.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 8
  store i32 %67, ptr %.sroa.13.0..sroa_idx, align 8, !tbaa !14
  %.sroa.16.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 12
  store i32 %70, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !14
  %.sroa.17.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 16
  store i32 %73, ptr %.sroa.17.0..sroa_idx, align 8, !tbaa !14
  %.sroa.18.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 20
  store i32 %76, ptr %.sroa.18.0..sroa_idx, align 4, !tbaa !14
  %.sroa.19.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 24
  store i32 %79, ptr %.sroa.19.0..sroa_idx, align 8, !tbaa !14
  %.sroa.20.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 28
  store i32 %82, ptr %.sroa.20.0..sroa_idx, align 4, !tbaa !14
  %.sroa.21.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 32
  store i32 %85, ptr %.sroa.21.0..sroa_idx, align 8, !tbaa !14
  %.sroa.22.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 36
  store i32 %88, ptr %.sroa.22.0..sroa_idx, align 4, !tbaa !14
  %.sroa.23.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 40
  store i32 %91, ptr %.sroa.23.0..sroa_idx, align 8, !tbaa !14
  %.sroa.24.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 44
  store i32 %94, 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 1, ptr %.sroa.26.0..sroa_idx, align 4, !tbaa !19
  %.sroa.27.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 56
  store i8 1, ptr %.sroa.27.0..sroa_idx, align 8, !tbaa !21
  %110 = 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 %111 unwind label %130

111:                                              ; preds = %109
  %.not = icmp eq i32 %110, 0
  br i1 %.not, label %132, label %112

112:                                              ; preds = %111
  %113 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %114 = trunc i64 %113 to i32
  %115 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %114)
  %116 = load ptr, ptr @stdout, align 8, !tbaa !5
  %117 = call i32 @fflush(ptr noundef %116)
  %118 = call ptr @ee2str(i32 noundef %110)
  %119 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %118)
  %120 = load ptr, ptr @stdout, align 8, !tbaa !5
  %121 = call i32 @fflush(ptr noundef %120)
  call void @exit(i32 noundef 1) #12
  unreachable

122:                                              ; preds = %98
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %275

124:                                              ; preds = %100
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %275

126:                                              ; preds = %106, %104, %102
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  br label %275

128:                                              ; preds = %108
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %274

130:                                              ; preds = %109
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %273

132:                                              ; preds = %111
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %133 unwind label %150

133:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %11) #11
  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 %134 unwind label %152

134:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #11
  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 %135 unwind label %154

135:                                              ; preds = %134
  %136 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %137 unwind label %156

137:                                              ; preds = %135
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %14, align 8, !tbaa !14
  %.sroa.10.0..sroa_idx34 = getelementptr inbounds i8, ptr %14, i64 4
  store i32 %64, ptr %.sroa.10.0..sroa_idx34, align 4, !tbaa !14
  %.sroa.13.0..sroa_idx41 = getelementptr inbounds i8, ptr %14, i64 8
  store i32 %67, ptr %.sroa.13.0..sroa_idx41, align 8, !tbaa !14
  %.sroa.16.0..sroa_idx48 = getelementptr inbounds i8, ptr %14, i64 12
  store i32 %70, ptr %.sroa.16.0..sroa_idx48, align 4, !tbaa !14
  %.sroa.17.0..sroa_idx54 = getelementptr inbounds i8, ptr %14, i64 16
  store i32 %73, ptr %.sroa.17.0..sroa_idx54, align 8, !tbaa !14
  %.sroa.18.0..sroa_idx60 = getelementptr inbounds i8, ptr %14, i64 20
  store i32 %76, ptr %.sroa.18.0..sroa_idx60, align 4, !tbaa !14
  %.sroa.19.0..sroa_idx66 = getelementptr inbounds i8, ptr %14, i64 24
  store i32 %79, ptr %.sroa.19.0..sroa_idx66, align 8, !tbaa !14
  %.sroa.20.0..sroa_idx72 = getelementptr inbounds i8, ptr %14, i64 28
  store i32 %82, ptr %.sroa.20.0..sroa_idx72, align 4, !tbaa !14
  %.sroa.21.0..sroa_idx78 = getelementptr inbounds i8, ptr %14, i64 32
  store i32 %85, ptr %.sroa.21.0..sroa_idx78, align 8, !tbaa !14
  %.sroa.22.0..sroa_idx84 = getelementptr inbounds i8, ptr %14, i64 36
  store i32 %88, ptr %.sroa.22.0..sroa_idx84, align 4, !tbaa !14
  %.sroa.23.0..sroa_idx90 = getelementptr inbounds i8, ptr %14, i64 40
  store i32 %91, ptr %.sroa.23.0..sroa_idx90, align 8, !tbaa !14
  %.sroa.24.0..sroa_idx96 = getelementptr inbounds i8, ptr %14, i64 44
  store i32 %94, ptr %.sroa.24.0..sroa_idx96, align 4, !tbaa !14
  %.sroa.25.0..sroa_idx102 = getelementptr inbounds i8, ptr %14, i64 48
  store i32 0, ptr %.sroa.25.0..sroa_idx102, align 8, !tbaa !17
  %.sroa.26.0..sroa_idx108 = getelementptr inbounds i8, ptr %14, i64 52
  store i32 1, ptr %.sroa.26.0..sroa_idx108, align 4, !tbaa !19
  %.sroa.27.0..sroa_idx114 = getelementptr inbounds i8, ptr %14, i64 56
  store i8 1, ptr %.sroa.27.0..sroa_idx114, align 8, !tbaa !21
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %138 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %13, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %14, ptr noundef nonnull %15, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %139 unwind label %158

139:                                              ; preds = %137
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  %.not180 = icmp eq i32 %138, 0
  br i1 %.not180, label %160, label %140

140:                                              ; preds = %139
  %141 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %142 = trunc i64 %141 to i32
  %143 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %142)
  %144 = load ptr, ptr @stdout, align 8, !tbaa !5
  %145 = call i32 @fflush(ptr noundef %144)
  %146 = call ptr @ee2str(i32 noundef %138)
  %147 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %146)
  %148 = load ptr, ptr @stdout, align 8, !tbaa !5
  %149 = call i32 @fflush(ptr noundef %148)
  call void @exit(i32 noundef 1) #12
  unreachable

150:                                              ; preds = %132
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %273

152:                                              ; preds = %133
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %272

154:                                              ; preds = %134
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %271

156:                                              ; preds = %135
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %270

158:                                              ; preds = %137
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #11
  br label %270

160:                                              ; preds = %139
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %17, align 8, !tbaa !14
  %.sroa.10.0..sroa_idx36 = getelementptr inbounds i8, ptr %17, i64 4
  store i32 %64, ptr %.sroa.10.0..sroa_idx36, align 4, !tbaa !14
  %.sroa.13.0..sroa_idx43 = getelementptr inbounds i8, ptr %17, i64 8
  store i32 %67, ptr %.sroa.13.0..sroa_idx43, align 8, !tbaa !14
  %.sroa.16.0..sroa_idx50 = getelementptr inbounds i8, ptr %17, i64 12
  store i32 %70, ptr %.sroa.16.0..sroa_idx50, align 4, !tbaa !14
  %.sroa.17.0..sroa_idx56 = getelementptr inbounds i8, ptr %17, i64 16
  store i32 %73, ptr %.sroa.17.0..sroa_idx56, align 8, !tbaa !14
  %.sroa.18.0..sroa_idx62 = getelementptr inbounds i8, ptr %17, i64 20
  store i32 %76, ptr %.sroa.18.0..sroa_idx62, align 4, !tbaa !14
  %.sroa.19.0..sroa_idx68 = getelementptr inbounds i8, ptr %17, i64 24
  store i32 %79, ptr %.sroa.19.0..sroa_idx68, align 8, !tbaa !14
  %.sroa.20.0..sroa_idx74 = getelementptr inbounds i8, ptr %17, i64 28
  store i32 %82, ptr %.sroa.20.0..sroa_idx74, align 4, !tbaa !14
  %.sroa.21.0..sroa_idx80 = getelementptr inbounds i8, ptr %17, i64 32
  store i32 %85, ptr %.sroa.21.0..sroa_idx80, align 8, !tbaa !14
  %.sroa.22.0..sroa_idx86 = getelementptr inbounds i8, ptr %17, i64 36
  store i32 %88, ptr %.sroa.22.0..sroa_idx86, align 4, !tbaa !14
  %.sroa.23.0..sroa_idx92 = getelementptr inbounds i8, ptr %17, i64 40
  store i32 %91, ptr %.sroa.23.0..sroa_idx92, align 8, !tbaa !14
  %.sroa.24.0..sroa_idx98 = getelementptr inbounds i8, ptr %17, i64 44
  store i32 %94, ptr %.sroa.24.0..sroa_idx98, align 4, !tbaa !14
  %.sroa.25.0..sroa_idx104 = getelementptr inbounds i8, ptr %17, i64 48
  store i32 0, ptr %.sroa.25.0..sroa_idx104, align 8, !tbaa !17
  %.sroa.26.0..sroa_idx110 = getelementptr inbounds i8, ptr %17, i64 52
  store i32 1, ptr %.sroa.26.0..sroa_idx110, align 4, !tbaa !19
  %.sroa.27.0..sroa_idx116 = getelementptr inbounds i8, ptr %17, i64 56
  store i8 1, ptr %.sroa.27.0..sroa_idx116, align 8, !tbaa !21
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  %161 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %16, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %17, ptr noundef nonnull %18, ptr noundef nonnull @_ZL18UT_SERIAL_ARCHINFO)
          to label %162 unwind label %173

162:                                              ; preds = %160
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  %.not181 = icmp eq i32 %161, 0
  br i1 %.not181, label %175, label %163

163:                                              ; preds = %162
  %164 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %165 = trunc i64 %164 to i32
  %166 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %165)
  %167 = load ptr, ptr @stdout, align 8, !tbaa !5
  %168 = call i32 @fflush(ptr noundef %167)
  %169 = call ptr @ee2str(i32 noundef %161)
  %170 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %169)
  %171 = load ptr, ptr @stdout, align 8, !tbaa !5
  %172 = call i32 @fflush(ptr noundef %171)
  call void @exit(i32 noundef 1) #12
  unreachable

173:                                              ; preds = %160
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #11
  br label %270

175:                                              ; preds = %162
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %176 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %19, i32 noundef 1)
          to label %177 unwind label %200

177:                                              ; preds = %175
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  %178 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %20, i32 noundef 1)
          to label %179 unwind label %202

179:                                              ; preds = %177
  invoke void @_Z10ut_check_vPvS_j8DataTypef(ptr noundef %176, ptr noundef %178, i32 noundef %136, i32 noundef %2, float noundef 0x3FA99999A0000000)
          to label %180 unwind label %202

180:                                              ; preds = %179
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  %181 = invoke noundef double @_Z10ut_time_msv()
          to label %.preheader unwind label %205

.preheader:                                       ; preds = %180
  %.sroa.10.0..sroa_idx38 = getelementptr inbounds i8, ptr %22, i64 4
  %.sroa.13.0..sroa_idx45 = getelementptr inbounds i8, ptr %22, i64 8
  %.sroa.16.0..sroa_idx52 = getelementptr inbounds i8, ptr %22, i64 12
  %.sroa.17.0..sroa_idx58 = getelementptr inbounds i8, ptr %22, i64 16
  %.sroa.18.0..sroa_idx64 = getelementptr inbounds i8, ptr %22, i64 20
  %.sroa.19.0..sroa_idx70 = getelementptr inbounds i8, ptr %22, i64 24
  %.sroa.20.0..sroa_idx76 = getelementptr inbounds i8, ptr %22, i64 28
  %.sroa.21.0..sroa_idx82 = getelementptr inbounds i8, ptr %22, i64 32
  %.sroa.22.0..sroa_idx88 = getelementptr inbounds i8, ptr %22, i64 36
  %.sroa.23.0..sroa_idx94 = getelementptr inbounds i8, ptr %22, i64 40
  %.sroa.24.0..sroa_idx100 = getelementptr inbounds i8, ptr %22, i64 44
  %.sroa.25.0..sroa_idx106 = getelementptr inbounds i8, ptr %22, i64 48
  %.sroa.26.0..sroa_idx112 = getelementptr inbounds i8, ptr %22, i64 52
  %.sroa.27.0..sroa_idx118 = getelementptr inbounds i8, ptr %22, i64 56
  %.sroa.28.0..sroa_idx122 = getelementptr inbounds i8, ptr %22, i64 57
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %22, align 8, !tbaa !14
  store i32 %64, ptr %.sroa.10.0..sroa_idx38, align 4, !tbaa !14
  store i32 %67, ptr %.sroa.13.0..sroa_idx45, align 8, !tbaa !14
  store i32 %70, ptr %.sroa.16.0..sroa_idx52, align 4, !tbaa !14
  store i32 %73, ptr %.sroa.17.0..sroa_idx58, align 8, !tbaa !14
  store i32 %76, ptr %.sroa.18.0..sroa_idx64, align 4, !tbaa !14
  store i32 %79, ptr %.sroa.19.0..sroa_idx70, align 8, !tbaa !14
  store i32 %82, ptr %.sroa.20.0..sroa_idx76, align 4, !tbaa !14
  store i32 %85, ptr %.sroa.21.0..sroa_idx82, align 8, !tbaa !14
  store i32 %88, ptr %.sroa.22.0..sroa_idx88, align 4, !tbaa !14
  store i32 %91, ptr %.sroa.23.0..sroa_idx94, align 8, !tbaa !14
  store i32 %94, ptr %.sroa.24.0..sroa_idx100, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx106, align 8, !tbaa !17
  store i32 1, ptr %.sroa.26.0..sroa_idx112, align 4, !tbaa !19
  store i8 1, ptr %.sroa.27.0..sroa_idx118, align 8, !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28.0..sroa_idx122, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28, i64 3, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %182 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %21, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %207 unwind label %218

183:                                              ; preds = %207
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %22, align 8, !tbaa !14
  store i32 %64, ptr %.sroa.10.0..sroa_idx38, align 4, !tbaa !14
  store i32 %67, ptr %.sroa.13.0..sroa_idx45, align 8, !tbaa !14
  store i32 %70, ptr %.sroa.16.0..sroa_idx52, align 4, !tbaa !14
  store i32 %73, ptr %.sroa.17.0..sroa_idx58, align 8, !tbaa !14
  store i32 %76, ptr %.sroa.18.0..sroa_idx64, align 4, !tbaa !14
  store i32 %79, ptr %.sroa.19.0..sroa_idx70, align 8, !tbaa !14
  store i32 %82, ptr %.sroa.20.0..sroa_idx76, align 4, !tbaa !14
  store i32 %85, ptr %.sroa.21.0..sroa_idx82, align 8, !tbaa !14
  store i32 %88, ptr %.sroa.22.0..sroa_idx88, align 4, !tbaa !14
  store i32 %91, ptr %.sroa.23.0..sroa_idx94, align 8, !tbaa !14
  store i32 %94, ptr %.sroa.24.0..sroa_idx100, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx106, align 8, !tbaa !17
  store i32 1, ptr %.sroa.26.0..sroa_idx112, align 4, !tbaa !19
  store i8 1, ptr %.sroa.27.0..sroa_idx118, align 8, !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28.0..sroa_idx122, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28, i64 3, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %184 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %21, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %185 unwind label %218

185:                                              ; preds = %183
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %.not198.1 = icmp eq i32 %184, 0
  br i1 %.not198.1, label %186, label %208

186:                                              ; preds = %185
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %22, align 8, !tbaa !14
  store i32 %64, ptr %.sroa.10.0..sroa_idx38, align 4, !tbaa !14
  store i32 %67, ptr %.sroa.13.0..sroa_idx45, align 8, !tbaa !14
  store i32 %70, ptr %.sroa.16.0..sroa_idx52, align 4, !tbaa !14
  store i32 %73, ptr %.sroa.17.0..sroa_idx58, align 8, !tbaa !14
  store i32 %76, ptr %.sroa.18.0..sroa_idx64, align 4, !tbaa !14
  store i32 %79, ptr %.sroa.19.0..sroa_idx70, align 8, !tbaa !14
  store i32 %82, ptr %.sroa.20.0..sroa_idx76, align 4, !tbaa !14
  store i32 %85, ptr %.sroa.21.0..sroa_idx82, align 8, !tbaa !14
  store i32 %88, ptr %.sroa.22.0..sroa_idx88, align 4, !tbaa !14
  store i32 %91, ptr %.sroa.23.0..sroa_idx94, align 8, !tbaa !14
  store i32 %94, ptr %.sroa.24.0..sroa_idx100, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx106, align 8, !tbaa !17
  store i32 1, ptr %.sroa.26.0..sroa_idx112, align 4, !tbaa !19
  store i8 1, ptr %.sroa.27.0..sroa_idx118, align 8, !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28.0..sroa_idx122, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28, i64 3, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %187 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %21, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %188 unwind label %218

188:                                              ; preds = %186
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %.not198.2 = icmp eq i32 %187, 0
  br i1 %.not198.2, label %189, label %208

189:                                              ; preds = %188
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %22, align 8, !tbaa !14
  store i32 %64, ptr %.sroa.10.0..sroa_idx38, align 4, !tbaa !14
  store i32 %67, ptr %.sroa.13.0..sroa_idx45, align 8, !tbaa !14
  store i32 %70, ptr %.sroa.16.0..sroa_idx52, align 4, !tbaa !14
  store i32 %73, ptr %.sroa.17.0..sroa_idx58, align 8, !tbaa !14
  store i32 %76, ptr %.sroa.18.0..sroa_idx64, align 4, !tbaa !14
  store i32 %79, ptr %.sroa.19.0..sroa_idx70, align 8, !tbaa !14
  store i32 %82, ptr %.sroa.20.0..sroa_idx76, align 4, !tbaa !14
  store i32 %85, ptr %.sroa.21.0..sroa_idx82, align 8, !tbaa !14
  store i32 %88, ptr %.sroa.22.0..sroa_idx88, align 4, !tbaa !14
  store i32 %91, ptr %.sroa.23.0..sroa_idx94, align 8, !tbaa !14
  store i32 %94, ptr %.sroa.24.0..sroa_idx100, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx106, align 8, !tbaa !17
  store i32 1, ptr %.sroa.26.0..sroa_idx112, align 4, !tbaa !19
  store i8 1, ptr %.sroa.27.0..sroa_idx118, align 8, !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28.0..sroa_idx122, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28, i64 3, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %190 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %21, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %191 unwind label %218

191:                                              ; preds = %189
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %.not198.3 = icmp eq i32 %190, 0
  br i1 %.not198.3, label %192, label %208

192:                                              ; preds = %191
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %22, align 8, !tbaa !14
  store i32 %64, ptr %.sroa.10.0..sroa_idx38, align 4, !tbaa !14
  store i32 %67, ptr %.sroa.13.0..sroa_idx45, align 8, !tbaa !14
  store i32 %70, ptr %.sroa.16.0..sroa_idx52, align 4, !tbaa !14
  store i32 %73, ptr %.sroa.17.0..sroa_idx58, align 8, !tbaa !14
  store i32 %76, ptr %.sroa.18.0..sroa_idx64, align 4, !tbaa !14
  store i32 %79, ptr %.sroa.19.0..sroa_idx70, align 8, !tbaa !14
  store i32 %82, ptr %.sroa.20.0..sroa_idx76, align 4, !tbaa !14
  store i32 %85, ptr %.sroa.21.0..sroa_idx82, align 8, !tbaa !14
  store i32 %88, ptr %.sroa.22.0..sroa_idx88, align 4, !tbaa !14
  store i32 %91, ptr %.sroa.23.0..sroa_idx94, align 8, !tbaa !14
  store i32 %94, ptr %.sroa.24.0..sroa_idx100, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx106, align 8, !tbaa !17
  store i32 1, ptr %.sroa.26.0..sroa_idx112, align 4, !tbaa !19
  store i8 1, ptr %.sroa.27.0..sroa_idx118, align 8, !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28.0..sroa_idx122, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28, i64 3, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %193 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %21, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %194 unwind label %218

194:                                              ; preds = %192
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %.not198.4 = icmp eq i32 %193, 0
  br i1 %.not198.4, label %195, label %208

195:                                              ; preds = %194
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  store i32 %61, ptr %22, align 8, !tbaa !14
  store i32 %64, ptr %.sroa.10.0..sroa_idx38, align 4, !tbaa !14
  store i32 %67, ptr %.sroa.13.0..sroa_idx45, align 8, !tbaa !14
  store i32 %70, ptr %.sroa.16.0..sroa_idx52, align 4, !tbaa !14
  store i32 %73, ptr %.sroa.17.0..sroa_idx58, align 8, !tbaa !14
  store i32 %76, ptr %.sroa.18.0..sroa_idx64, align 4, !tbaa !14
  store i32 %79, ptr %.sroa.19.0..sroa_idx70, align 8, !tbaa !14
  store i32 %82, ptr %.sroa.20.0..sroa_idx76, align 4, !tbaa !14
  store i32 %85, ptr %.sroa.21.0..sroa_idx82, align 8, !tbaa !14
  store i32 %88, ptr %.sroa.22.0..sroa_idx88, align 4, !tbaa !14
  store i32 %91, ptr %.sroa.23.0..sroa_idx94, align 8, !tbaa !14
  store i32 %94, ptr %.sroa.24.0..sroa_idx100, align 4, !tbaa !14
  store i32 0, ptr %.sroa.25.0..sroa_idx106, align 8, !tbaa !17
  store i32 1, ptr %.sroa.26.0..sroa_idx112, align 4, !tbaa !19
  store i8 1, ptr %.sroa.27.0..sroa_idx118, align 8, !tbaa !21
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28.0..sroa_idx122, ptr noundef nonnull align 1 dereferenceable(3) %.sroa.28, i64 3, i1 false), !tbaa.struct !23
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  %196 = invoke noundef i32 @_Z10pooling_bp6Tensor16PoolingParamSpecS_P8ArchInfo(ptr noundef nonnull %21, ptr noundef nonnull byval(%struct.PoolingParamSpec) align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %197 unwind label %218

197:                                              ; preds = %195
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %.not198.5 = icmp eq i32 %196, 0
  br i1 %.not198.5, label %198, label %208

198:                                              ; preds = %197
  %199 = invoke noundef double @_Z10ut_time_msv()
          to label %220 unwind label %236

200:                                              ; preds = %175
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %179, %177
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #11
  br label %204

204:                                              ; preds = %202, %200
  %.pn = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  br label %270

205:                                              ; preds = %180
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %270

207:                                              ; preds = %.preheader
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  %.not198 = icmp eq i32 %182, 0
  br i1 %.not198, label %183, label %208

208:                                              ; preds = %197, %194, %191, %188, %185, %207
  %.lcssa200 = phi i32 [ %182, %207 ], [ %184, %185 ], [ %187, %188 ], [ %190, %191 ], [ %193, %194 ], [ %196, %197 ]
  %209 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %210 = trunc i64 %209 to i32
  %211 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %210)
  %212 = load ptr, ptr @stdout, align 8, !tbaa !5
  %213 = call i32 @fflush(ptr noundef %212)
  %214 = call ptr @ee2str(i32 noundef %.lcssa200)
  %215 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %214)
  %216 = load ptr, ptr @stdout, align 8, !tbaa !5
  %217 = call i32 @fflush(ptr noundef %216)
  call void @exit(i32 noundef 1) #12
  unreachable

218:                                              ; preds = %195, %192, %189, %186, %183, %.preheader
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #11
  br label %270

220:                                              ; preds = %198
  %221 = fsub double %199, %181
  %222 = fdiv double %221, 6.000000e+00
  call void @llvm.lifetime.start.p0(i64 150, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #11
  store i32 0, ptr %28, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #11
  store i32 0, ptr %29, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #11
  store i32 0, ptr %30, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #11
  store i32 0, ptr %31, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #11
  store i32 0, ptr %32, align 4, !tbaa !14
  %223 = call noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11)
  %.not183 = icmp eq i8 %223, 0
  br i1 %.not183, label %238, label %224

224:                                              ; preds = %220
  %225 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %31, ptr noundef nonnull %32)
  %.not186 = icmp eq i32 %225, 0
  br i1 %.not186, label %252, label %226

226:                                              ; preds = %224
  %227 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %228 = trunc i64 %227 to i32
  %229 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %228)
  %230 = load ptr, ptr @stdout, align 8, !tbaa !5
  %231 = call i32 @fflush(ptr noundef %230)
  %232 = call ptr @ee2str(i32 noundef %225)
  %233 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %232)
  %234 = load ptr, ptr @stdout, align 8, !tbaa !5
  %235 = call i32 @fflush(ptr noundef %234)
  call void @exit(i32 noundef 1) #12
  unreachable

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

238:                                              ; preds = %220
  %239 = call noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11)
  %.not184 = icmp eq i8 %239, 0
  br i1 %.not184, label %252, label %240

240:                                              ; preds = %238
  %241 = call noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %11, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32)
  %.not185 = icmp eq i32 %241, 0
  br i1 %.not185, label %._crit_edge, label %242

._crit_edge:                                      ; preds = %240
  %.pre = load i32, ptr %30, align 4, !tbaa !14
  br label %252

242:                                              ; preds = %240
  %243 = call i64 (i64, ...) @syscall(i64 noundef 186) #11
  %244 = trunc i64 %243 to i32
  %245 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %244)
  %246 = load ptr, ptr @stdout, align 8, !tbaa !5
  %247 = call i32 @fflush(ptr noundef %246)
  %248 = call ptr @ee2str(i32 noundef %241)
  %249 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, ptr noundef %248)
  %250 = load ptr, ptr @stdout, align 8, !tbaa !5
  %251 = call i32 @fflush(ptr noundef %250)
  call void @exit(i32 noundef 1) #12
  unreachable

252:                                              ; preds = %._crit_edge, %224, %238
  %253 = phi i32 [ %.pre, %._crit_edge ], [ 0, %224 ], [ 0, %238 ]
  %254 = load i32, ptr %28, align 4, !tbaa !14
  %255 = load i32, ptr %29, align 4, !tbaa !14
  %256 = load i32, ptr %31, align 4, !tbaa !14
  %257 = load i32, ptr %32, align 4, !tbaa !14
  %258 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %46, i32 noundef %49, i32 noundef %52, i32 noundef %55, i32 noundef %58, i32 noundef %61, i32 noundef %64, i32 noundef %67, i32 noundef %254, i32 noundef %255, i32 noundef %253, i32 noundef %256, i32 noundef %257) #11
  %259 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %24, ptr noundef nonnull dereferenceable(1) @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %25) #11
  %260 = uitofp i32 %136 to double
  %261 = uitofp i32 %61 to double
  %262 = fmul double %261, %260
  %263 = uitofp i32 %64 to double
  %264 = fmul double %262, %263
  %265 = uitofp i32 %67 to double
  %266 = fmul double %264, %265
  invoke void @_Z6ut_log8DataTypePcdd(i32 noundef %2, ptr noundef nonnull %24, double noundef %266, double noundef %222)
          to label %267 unwind label %268

267:                                              ; preds = %252
  call void @free(ptr noundef %101) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 150, ptr nonnull %24) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %11) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #11
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.28)
  ret i32 0

268:                                              ; preds = %252
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 150, ptr nonnull %24) #11
  br label %270

270:                                              ; preds = %205, %218, %268, %236, %204, %173, %158, %156
  %.pn189.pn = phi { ptr, i32 } [ %.pn, %204 ], [ %174, %173 ], [ %159, %158 ], [ %157, %156 ], [ %219, %218 ], [ %206, %205 ], [ %269, %268 ], [ %237, %236 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #11
  br label %271

271:                                              ; preds = %270, %154
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %270 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #11
  br label %272

272:                                              ; preds = %271, %152
  %.pn189.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn, %271 ], [ %153, %152 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %11) #11
  br label %273

273:                                              ; preds = %272, %150, %130
  %.pn189.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn.pn, %272 ], [ %151, %150 ], [ %131, %130 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #11
  br label %274

274:                                              ; preds = %273, %128
  %.pn189.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn.pn.pn, %273 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #11
  br label %275

275:                                              ; preds = %124, %126, %274, %122
  %.pn189.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %123, %122 ], [ %.pn189.pn.pn.pn.pn.pn, %274 ], [ %127, %126 ], [ %125, %124 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %.sroa.28)
  resume { ptr, i32 } %.pn189.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

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

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

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 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 #11 = { nounwind }
attributes #12 = { noreturn nounwind }
attributes #13 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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}
!21 = !{!22, !22, i64 0}
!22 = !{!"bool", !7, i64 0}
!23 = !{}


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