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

; 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.PadParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, float, 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.TensorDesc = type { i32, i32, i32, [20 x i32] }

@.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
@.str.2 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZL18UT_SERIAL_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@.str.3 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZL15UT_CPU_ARCHINFO = external hidden global %struct.ArchInfo, align 8

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z11paddingTestiPPc8DataType(i32 noundef %0, ptr noundef %1, i32 noundef %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %struct.PadParamSpec, align 4
  %26 = alloca i32, align 4
  %27 = alloca %class.Tensor, align 8
  %28 = alloca %struct.TensorDesc, align 4
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca %struct.TensorDesc, align 8
  %32 = alloca i32, align 4
  %33 = alloca %struct.TensorDesc, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %class.Tensor, align 8
  %36 = alloca %struct.TensorDesc, align 8
  %37 = alloca %class.Tensor, align 8
  %38 = alloca %class.Tensor, align 8
  %39 = alloca i32, align 4
  %40 = alloca %struct.PadParamSpec, align 8
  %41 = alloca i32, align 4
  %42 = alloca %struct.TensorDesc, align 4
  %43 = alloca %struct.TensorDesc, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %class.Tensor, align 8
  %47 = alloca %struct.PadParamSpec, align 8
  %48 = alloca %class.Tensor, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %class.Tensor, align 8
  %52 = alloca %struct.PadParamSpec, align 8
  %53 = alloca %class.Tensor, align 8
  %54 = alloca i32, align 4
  %55 = alloca %class.Tensor, align 8
  %56 = alloca %class.Tensor, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %57 = load ptr, ptr %5, align 8, !tbaa !9
  %58 = getelementptr inbounds ptr, ptr %57, i64 1
  %59 = load ptr, ptr %58, align 8, !tbaa !9
  %60 = call i32 @atoi(ptr noundef %59) #10
  store i32 %60, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  %61 = load ptr, ptr %5, align 8, !tbaa !9
  %62 = getelementptr inbounds ptr, ptr %61, i64 2
  %63 = load ptr, ptr %62, align 8, !tbaa !9
  %64 = call i32 @atoi(ptr noundef %63) #10
  store i32 %64, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  %65 = load ptr, ptr %5, align 8, !tbaa !9
  %66 = getelementptr inbounds ptr, ptr %65, i64 3
  %67 = load ptr, ptr %66, align 8, !tbaa !9
  %68 = call i32 @atoi(ptr noundef %67) #10
  store i32 %68, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  %69 = load ptr, ptr %5, align 8, !tbaa !9
  %70 = getelementptr inbounds ptr, ptr %69, i64 4
  %71 = load ptr, ptr %70, align 8, !tbaa !9
  %72 = call i32 @atoi(ptr noundef %71) #10
  store i32 %72, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %73 = load ptr, ptr %5, align 8, !tbaa !9
  %74 = getelementptr inbounds ptr, ptr %73, i64 5
  %75 = load ptr, ptr %74, align 8, !tbaa !9
  %76 = call i32 @atoi(ptr noundef %75) #10
  store i32 %76, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %77 = load ptr, ptr %5, align 8, !tbaa !9
  %78 = getelementptr inbounds ptr, ptr %77, i64 6
  %79 = load ptr, ptr %78, align 8, !tbaa !9
  %80 = call i32 @atoi(ptr noundef %79) #10
  store i32 %80, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %81 = load ptr, ptr %5, align 8, !tbaa !9
  %82 = getelementptr inbounds ptr, ptr %81, i64 7
  %83 = load ptr, ptr %82, align 8, !tbaa !9
  %84 = call i32 @atoi(ptr noundef %83) #10
  store i32 %84, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %85 = load ptr, ptr %5, align 8, !tbaa !9
  %86 = getelementptr inbounds ptr, ptr %85, i64 8
  %87 = load ptr, ptr %86, align 8, !tbaa !9
  %88 = call i32 @atoi(ptr noundef %87) #10
  store i32 %88, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %89 = load ptr, ptr %5, align 8, !tbaa !9
  %90 = getelementptr inbounds ptr, ptr %89, i64 9
  %91 = load ptr, ptr %90, align 8, !tbaa !9
  %92 = call i32 @atoi(ptr noundef %91) #10
  store i32 %92, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %93 = load ptr, ptr %5, align 8, !tbaa !9
  %94 = getelementptr inbounds ptr, ptr %93, i64 10
  %95 = load ptr, ptr %94, align 8, !tbaa !9
  %96 = call i32 @atoi(ptr noundef %95) #10
  store i32 %96, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %97 = load ptr, ptr %5, align 8, !tbaa !9
  %98 = getelementptr inbounds ptr, ptr %97, i64 11
  %99 = load ptr, ptr %98, align 8, !tbaa !9
  %100 = call i32 @atoi(ptr noundef %99) #10
  store i32 %100, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %101 = load ptr, ptr %5, align 8, !tbaa !9
  %102 = getelementptr inbounds ptr, ptr %101, i64 12
  %103 = load ptr, ptr %102, align 8, !tbaa !9
  %104 = call i32 @atoi(ptr noundef %103) #10
  store i32 %104, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %105 = load ptr, ptr %5, align 8, !tbaa !9
  %106 = getelementptr inbounds ptr, ptr %105, i64 13
  %107 = load ptr, ptr %106, align 8, !tbaa !9
  %108 = call i32 @atoi(ptr noundef %107) #10
  store i32 %108, ptr %19, align 4, !tbaa !5
  %109 = load i32, ptr %11, align 4, !tbaa !5
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %120

111:                                              ; preds = %3
  %112 = load i32, ptr %15, align 4, !tbaa !5
  %113 = icmp eq i32 %112, 0
  br i1 %113, label %114, label %120

114:                                              ; preds = %111
  %115 = load i32, ptr %12, align 4, !tbaa !5
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %120

117:                                              ; preds = %114
  %118 = load i32, ptr %16, align 4, !tbaa !5
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %130, label %120

120:                                              ; preds = %117, %114, %111, %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %121 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %122 = trunc i64 %121 to i32
  store i32 %122, ptr %20, align 4, !tbaa !5
  %123 = load i32, ptr %20, align 4, !tbaa !5
  %124 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %123)
  %125 = load ptr, ptr @stdout, align 8, !tbaa !9
  %126 = call i32 @fflush(ptr noundef %125)
  %127 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %128 = load ptr, ptr @stdout, align 8, !tbaa !9
  %129 = call i32 @fflush(ptr noundef %128)
  call void @exit(i32 noundef 1) #11
  unreachable

130:                                              ; preds = %117
  %131 = load i32, ptr %11, align 4, !tbaa !5
  %132 = icmp eq i32 0, %131
  br i1 %132, label %143, label %133

133:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %134 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %135 = trunc i64 %134 to i32
  store i32 %135, ptr %21, align 4, !tbaa !5
  %136 = load i32, ptr %21, align 4, !tbaa !5
  %137 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %136)
  %138 = load ptr, ptr @stdout, align 8, !tbaa !9
  %139 = call i32 @fflush(ptr noundef %138)
  %140 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %141 = load ptr, ptr @stdout, align 8, !tbaa !9
  %142 = call i32 @fflush(ptr noundef %141)
  call void @exit(i32 noundef 1) #11
  unreachable

143:                                              ; preds = %130
  %144 = load i32, ptr %15, align 4, !tbaa !5
  %145 = icmp eq i32 0, %144
  br i1 %145, label %156, label %146

146:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  %147 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %148 = trunc i64 %147 to i32
  store i32 %148, ptr %22, align 4, !tbaa !5
  %149 = load i32, ptr %22, align 4, !tbaa !5
  %150 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %149)
  %151 = load ptr, ptr @stdout, align 8, !tbaa !9
  %152 = call i32 @fflush(ptr noundef %151)
  %153 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %154 = load ptr, ptr @stdout, align 8, !tbaa !9
  %155 = call i32 @fflush(ptr noundef %154)
  call void @exit(i32 noundef 1) #11
  unreachable

156:                                              ; preds = %143
  %157 = load i32, ptr %12, align 4, !tbaa !5
  %158 = icmp eq i32 0, %157
  br i1 %158, label %169, label %159

159:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %160 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %161 = trunc i64 %160 to i32
  store i32 %161, ptr %23, align 4, !tbaa !5
  %162 = load i32, ptr %23, align 4, !tbaa !5
  %163 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %162)
  %164 = load ptr, ptr @stdout, align 8, !tbaa !9
  %165 = call i32 @fflush(ptr noundef %164)
  %166 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %167 = load ptr, ptr @stdout, align 8, !tbaa !9
  %168 = call i32 @fflush(ptr noundef %167)
  call void @exit(i32 noundef 1) #11
  unreachable

169:                                              ; preds = %156
  %170 = load i32, ptr %16, align 4, !tbaa !5
  %171 = icmp eq i32 0, %170
  br i1 %171, label %182, label %172

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %173 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %174 = trunc i64 %173 to i32
  store i32 %174, ptr %24, align 4, !tbaa !5
  %175 = load i32, ptr %24, align 4, !tbaa !5
  %176 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %175)
  %177 = load ptr, ptr @stdout, align 8, !tbaa !9
  %178 = call i32 @fflush(ptr noundef %177)
  %179 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %180 = load ptr, ptr @stdout, align 8, !tbaa !9
  %181 = call i32 @fflush(ptr noundef %180)
  call void @exit(i32 noundef 1) #11
  unreachable

182:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 40, ptr %25) #9
  %183 = load i32, ptr %11, align 4, !tbaa !5
  %184 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 0
  store i32 %183, ptr %184, align 4, !tbaa !13
  %185 = load i32, ptr %15, align 4, !tbaa !5
  %186 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 1
  store i32 %185, ptr %186, align 4, !tbaa !17
  %187 = load i32, ptr %12, align 4, !tbaa !5
  %188 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 2
  store i32 %187, ptr %188, align 4, !tbaa !18
  %189 = load i32, ptr %16, align 4, !tbaa !5
  %190 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 3
  store i32 %189, ptr %190, align 4, !tbaa !19
  %191 = load i32, ptr %13, align 4, !tbaa !5
  %192 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 4
  store i32 %191, ptr %192, align 4, !tbaa !20
  %193 = load i32, ptr %17, align 4, !tbaa !5
  %194 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 5
  store i32 %193, ptr %194, align 4, !tbaa !21
  %195 = load i32, ptr %14, align 4, !tbaa !5
  %196 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 6
  store i32 %195, ptr %196, align 4, !tbaa !22
  %197 = load i32, ptr %18, align 4, !tbaa !5
  %198 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 7
  store i32 %197, ptr %198, align 4, !tbaa !23
  %199 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 8
  store float 0.000000e+00, ptr %199, align 4, !tbaa !24
  %200 = load i32, ptr %19, align 4, !tbaa !5
  switch i32 %200, label %209 [
    i32 0, label %201
    i32 1, label %203
    i32 2, label %205
    i32 3, label %207
  ]

201:                                              ; preds = %182
  %202 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 9
  store i32 0, ptr %202, align 4, !tbaa !25
  br label %220

203:                                              ; preds = %182
  %204 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 9
  store i32 2, ptr %204, align 4, !tbaa !25
  br label %220

205:                                              ; preds = %182
  %206 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 9
  store i32 1, ptr %206, align 4, !tbaa !25
  br label %220

207:                                              ; preds = %182
  %208 = getelementptr inbounds %struct.PadParamSpec, ptr %25, i32 0, i32 9
  store i32 3, ptr %208, align 4, !tbaa !25
  br label %220

209:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %210 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %211 = trunc i64 %210 to i32
  store i32 %211, ptr %26, align 4, !tbaa !5
  %212 = load i32, ptr %26, align 4, !tbaa !5
  %213 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %212)
  %214 = load ptr, ptr @stdout, align 8, !tbaa !9
  %215 = call i32 @fflush(ptr noundef %214)
  %216 = load i32, ptr %19, align 4, !tbaa !5
  %217 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %216)
  %218 = load ptr, ptr @stdout, align 8, !tbaa !9
  %219 = call i32 @fflush(ptr noundef %218)
  call void @exit(i32 noundef 1) #11
  unreachable

220:                                              ; preds = %207, %205, %203, %201
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #9
  call void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %27, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 92, ptr %28) #9
  %221 = load i32, ptr %6, align 4, !tbaa !11
  %222 = load i32, ptr %7, align 4, !tbaa !5
  %223 = load i32, ptr %8, align 4, !tbaa !5
  %224 = load i32, ptr %9, align 4, !tbaa !5
  %225 = load i32, ptr %10, align 4, !tbaa !5
  invoke void @_Z9tensor4df8DataType10DataFormatjjjj(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %28, i32 noundef %221, i32 noundef 0, i32 noundef %222, i32 noundef %223, i32 noundef %224, i32 noundef %225)
          to label %226 unwind label %265

226:                                              ; preds = %220
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !26
  invoke void @_ZN6Tensor6resizeE10TensorDesc(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef byval(%struct.TensorDesc) align 8 %31)
          to label %227 unwind label %265

227:                                              ; preds = %226
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %228 unwind label %265

228:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !26
  %229 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %33)
          to label %230 unwind label %269

230:                                              ; preds = %228
  store i32 %229, ptr %32, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %231 = load i32, ptr %32, align 4, !tbaa !5
  %232 = load i32, ptr %6, align 4, !tbaa !11
  %233 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %231, i32 noundef %232, i32 noundef 0)
          to label %234 unwind label %273

234:                                              ; preds = %230
  store ptr %233, ptr %34, align 8, !tbaa !9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  %235 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %35, i32 noundef 1)
          to label %236 unwind label %277

236:                                              ; preds = %234
  %237 = load ptr, ptr %34, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %28, i64 92, i1 false), !tbaa.struct !26
  %238 = invoke noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %36)
          to label %239 unwind label %277

239:                                              ; preds = %236
  %240 = zext i32 %238 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %235, ptr noundef %237, i64 noundef %240)
          to label %241 unwind label %277

241:                                              ; preds = %239
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #9
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %37, i32 noundef 1)
          to label %242 unwind label %281

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #9
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %38, i32 noundef 1)
          to label %243 unwind label %285

243:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 4 %25, i64 40, i1 false), !tbaa.struct !30
  %244 = invoke noundef i32 @_Z25padding_infer_output_sizeP6Tensor12PadParamSpecS0_P8ArchInfo(ptr noundef %27, ptr noundef byval(%struct.PadParamSpec) align 8 %40, ptr noundef %37, ptr noundef @_ZL18UT_SERIAL_ARCHINFO)
          to label %245 unwind label %289

245:                                              ; preds = %243
  store i32 %244, ptr %39, align 4, !tbaa !33
  %246 = load i32, ptr %39, align 4, !tbaa !33
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %297

248:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %249 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %250 = trunc i64 %249 to i32
  store i32 %250, ptr %41, align 4, !tbaa !5
  %251 = load i32, ptr %41, align 4, !tbaa !5
  %252 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %251)
          to label %253 unwind label %293

253:                                              ; preds = %248
  %254 = load ptr, ptr @stdout, align 8, !tbaa !9
  %255 = invoke i32 @fflush(ptr noundef %254)
          to label %256 unwind label %293

256:                                              ; preds = %253
  %257 = load i32, ptr %39, align 4, !tbaa !33
  %258 = invoke ptr @ee2str(i32 noundef %257)
          to label %259 unwind label %293

259:                                              ; preds = %256
  %260 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %258)
          to label %261 unwind label %293

261:                                              ; preds = %259
  %262 = load ptr, ptr @stdout, align 8, !tbaa !9
  %263 = invoke i32 @fflush(ptr noundef %262)
          to label %264 unwind label %293

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

265:                                              ; preds = %227, %226, %220
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %29, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %30, align 4
  br label %403

269:                                              ; preds = %228
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %29, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %30, align 4
  br label %402

273:                                              ; preds = %230
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %29, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %30, align 4
  br label %401

277:                                              ; preds = %239, %236, %234
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %29, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %30, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %401

281:                                              ; preds = %241
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %29, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %30, align 4
  br label %400

285:                                              ; preds = %242
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %29, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %30, align 4
  br label %399

289:                                              ; preds = %243
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %29, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %30, align 4
  br label %325

293:                                              ; preds = %261, %259, %256, %253, %248
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %29, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %325

297:                                              ; preds = %245
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %298 unwind label %326

298:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 92, ptr %42) #9
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %42, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %299 unwind label %330

299:                                              ; preds = %298
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %42, i64 92, i1 false), !tbaa.struct !26
  invoke void @_ZN6Tensor6resizeE10TensorDesc(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef byval(%struct.TensorDesc) align 8 %43)
          to label %300 unwind label %330

300:                                              ; preds = %299
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %301 unwind label %330

301:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  %302 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %303 unwind label %334

303:                                              ; preds = %301
  store i32 %302, ptr %44, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 4 %25, i64 40, i1 false), !tbaa.struct !30
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  %304 = invoke noundef i32 @_Z7padding6Tensor12PadParamSpecS_P8ArchInfo(ptr noundef %46, ptr noundef byval(%struct.PadParamSpec) align 8 %47, ptr noundef %48, ptr noundef @_ZL15UT_CPU_ARCHINFO)
          to label %305 unwind label %338

305:                                              ; preds = %303
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  store i32 %304, ptr %45, align 4, !tbaa !33
  %306 = load i32, ptr %45, align 4, !tbaa !33
  %307 = icmp ne i32 %306, 0
  br i1 %307, label %308, label %346

308:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %309 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %310 = trunc i64 %309 to i32
  store i32 %310, ptr %49, align 4, !tbaa !5
  %311 = load i32, ptr %49, align 4, !tbaa !5
  %312 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %311)
          to label %313 unwind label %342

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

316:                                              ; preds = %313
  %317 = load i32, ptr %45, align 4, !tbaa !33
  %318 = invoke ptr @ee2str(i32 noundef %317)
          to label %319 unwind label %342

319:                                              ; preds = %316
  %320 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %318)
          to label %321 unwind label %342

321:                                              ; preds = %319
  %322 = load ptr, ptr @stdout, align 8, !tbaa !9
  %323 = invoke i32 @fflush(ptr noundef %322)
          to label %324 unwind label %342

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

325:                                              ; preds = %293, %289
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %398

326:                                              ; preds = %297
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %29, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %30, align 4
  br label %398

330:                                              ; preds = %300, %299, %298
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %29, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %30, align 4
  br label %397

334:                                              ; preds = %301
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %29, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %30, align 4
  br label %396

338:                                              ; preds = %303
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %29, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %30, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %368

342:                                              ; preds = %321, %319, %316, %313, %308
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %29, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %368

346:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 4 %25, i64 40, i1 false), !tbaa.struct !30
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  %347 = invoke noundef i32 @_Z7padding6Tensor12PadParamSpecS_P8ArchInfo(ptr noundef %51, ptr noundef byval(%struct.PadParamSpec) align 8 %52, ptr noundef %53, ptr noundef @_ZL18UT_SERIAL_ARCHINFO)
          to label %348 unwind label %369

348:                                              ; preds = %346
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  store i32 %347, ptr %50, align 4, !tbaa !33
  %349 = load i32, ptr %50, align 4, !tbaa !33
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %377

351:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %352 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %353 = trunc i64 %352 to i32
  store i32 %353, ptr %54, align 4, !tbaa !5
  %354 = load i32, ptr %54, align 4, !tbaa !5
  %355 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %354)
          to label %356 unwind label %373

356:                                              ; preds = %351
  %357 = load ptr, ptr @stdout, align 8, !tbaa !9
  %358 = invoke i32 @fflush(ptr noundef %357)
          to label %359 unwind label %373

359:                                              ; preds = %356
  %360 = load i32, ptr %50, align 4, !tbaa !33
  %361 = invoke ptr @ee2str(i32 noundef %360)
          to label %362 unwind label %373

362:                                              ; preds = %359
  %363 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %361)
          to label %364 unwind label %373

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

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

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

369:                                              ; preds = %346
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %29, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %30, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br label %386

373:                                              ; preds = %364, %362, %359, %356, %351
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %29, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %386

377:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  %378 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %55, i32 noundef 1)
          to label %379 unwind label %387

379:                                              ; preds = %377
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  %380 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef %56, i32 noundef 1)
          to label %381 unwind label %391

381:                                              ; preds = %379
  %382 = load i32, ptr %44, align 4, !tbaa !5
  %383 = load i32, ptr %6, align 4, !tbaa !11
  invoke void @_Z10ut_check_aPvS_j8DataType(ptr noundef %378, ptr noundef %380, i32 noundef %382, i32 noundef %383)
          to label %384 unwind label %391

384:                                              ; preds = %381
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  %385 = load ptr, ptr %34, align 8, !tbaa !9
  call void @free(ptr noundef %385) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %42) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %28) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  ret i32 0

386:                                              ; preds = %373, %369
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %396

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

391:                                              ; preds = %381, %379
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %29, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %30, align 4
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  br label %395

395:                                              ; preds = %391, %387
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  br label %396

396:                                              ; preds = %395, %386, %368, %334
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %397

397:                                              ; preds = %396, %330
  call void @llvm.lifetime.end.p0(i64 92, ptr %42) #9
  br label %398

398:                                              ; preds = %397, %326, %325
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  br label %399

399:                                              ; preds = %398, %285
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  br label %400

400:                                              ; preds = %399, %281
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #9
  br label %401

401:                                              ; preds = %400, %277, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %402

402:                                              ; preds = %401, %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %403

403:                                              ; preds = %402, %265
  call void @llvm.lifetime.end.p0(i64 92, ptr %28) #9
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %404

404:                                              ; preds = %403
  %405 = load ptr, ptr %29, align 8
  %406 = load i32, ptr %30, align 4
  %407 = insertvalue { ptr, i32 } poison, ptr %405, 0
  %408 = insertvalue { ptr, i32 } %407, i32 %406, 1
  resume { ptr, i32 } %408
}

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

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

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

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

declare i32 @fflush(ptr noundef) #4

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor6resizeE10TensorDesc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef byval(%struct.TensorDesc) align 8) #0 align 2

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

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

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

; 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: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #8

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

declare noundef i32 @_Z25padding_infer_output_sizeP6Tensor12PadParamSpecS0_P8ArchInfo(ptr noundef, ptr noundef byval(%struct.PadParamSpec) align 8, ptr noundef, ptr noundef) #4

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

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

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

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

declare noundef i32 @_Z7padding6Tensor12PadParamSpecS_P8ArchInfo(ptr noundef, ptr noundef byval(%struct.PadParamSpec) align 8, ptr noundef, ptr noundef) #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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, !6, i64 0}
!14 = !{!"_ZTS12PadParamSpec", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !15, i64 32, !16, i64 36}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS7PadMode", !7, i64 0}
!17 = !{!14, !6, i64 4}
!18 = !{!14, !6, i64 8}
!19 = !{!14, !6, i64 12}
!20 = !{!14, !6, i64 16}
!21 = !{!14, !6, i64 20}
!22 = !{!14, !6, i64 24}
!23 = !{!14, !6, i64 28}
!24 = !{!14, !15, i64 32}
!25 = !{!14, !16, i64 36}
!26 = !{i64 0, i64 4, !11, i64 4, i64 4, !27, i64 8, i64 4, !5, i64 12, i64 80, !29}
!27 = !{!28, !28, i64 0}
!28 = !{!"_ZTS10DataFormat", !7, i64 0}
!29 = !{!7, !7, i64 0}
!30 = !{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, !31, i64 36, i64 4, !32}
!31 = !{!15, !15, i64 0}
!32 = !{!16, !16, i64 0}
!33 = !{!34, !34, i64 0}
!34 = !{!"_ZTS2EE", !7, i64 0}


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

%struct.ArchInfo = type { i32, ptr }
%class.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.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.PadParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, float, i32 }

@.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
@.str.2 = external hidden unnamed_addr constant [26 x i8], align 1
@_ZL18UT_SERIAL_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@.str.3 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZL15UT_CPU_ARCHINFO = external hidden global %struct.ArchInfo, align 8
@switch.table._Z11paddingTestiPPc8DataType = private unnamed_addr constant [4 x i32] [i32 0, i32 2, i32 1, i32 3], align 4

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z11paddingTestiPPc8DataType(i32 noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %class.Tensor, align 8
  %5 = alloca %struct.TensorDesc, align 8
  %6 = alloca %class.Tensor, align 8
  %7 = alloca %class.Tensor, align 8
  %8 = alloca %class.Tensor, align 8
  %9 = alloca %struct.PadParamSpec, align 8
  %10 = alloca %struct.TensorDesc, align 8
  %11 = alloca %class.Tensor, align 8
  %12 = alloca %struct.PadParamSpec, align 8
  %13 = alloca %class.Tensor, align 8
  %14 = alloca %class.Tensor, align 8
  %15 = alloca %struct.PadParamSpec, align 8
  %16 = alloca %class.Tensor, align 8
  %17 = alloca %class.Tensor, align 8
  %18 = alloca %class.Tensor, align 8
  %19 = getelementptr inbounds i8, ptr %1, i64 8
  %20 = load ptr, ptr %19, align 8, !tbaa !5
  %21 = tail call i32 @atoi(ptr nocapture noundef %20) #11
  %22 = getelementptr inbounds i8, ptr %1, i64 16
  %23 = load ptr, ptr %22, align 8, !tbaa !5
  %24 = tail call i32 @atoi(ptr nocapture noundef %23) #11
  %25 = getelementptr inbounds i8, ptr %1, i64 24
  %26 = load ptr, ptr %25, align 8, !tbaa !5
  %27 = tail call i32 @atoi(ptr nocapture noundef %26) #11
  %28 = getelementptr inbounds i8, ptr %1, i64 32
  %29 = load ptr, ptr %28, align 8, !tbaa !5
  %30 = tail call i32 @atoi(ptr nocapture noundef %29) #11
  %31 = getelementptr inbounds i8, ptr %1, i64 40
  %32 = load ptr, ptr %31, align 8, !tbaa !5
  %33 = tail call i32 @atoi(ptr nocapture noundef %32) #11
  %34 = getelementptr inbounds i8, ptr %1, i64 48
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  %36 = tail call i32 @atoi(ptr nocapture noundef %35) #11
  %37 = getelementptr inbounds i8, ptr %1, i64 56
  %38 = load ptr, ptr %37, align 8, !tbaa !5
  %39 = tail call i32 @atoi(ptr nocapture noundef %38) #11
  %40 = getelementptr inbounds i8, ptr %1, i64 64
  %41 = load ptr, ptr %40, align 8, !tbaa !5
  %42 = tail call i32 @atoi(ptr nocapture noundef %41) #11
  %43 = getelementptr inbounds i8, ptr %1, i64 72
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  %45 = tail call i32 @atoi(ptr nocapture noundef %44) #11
  %46 = getelementptr inbounds i8, ptr %1, i64 80
  %47 = load ptr, ptr %46, align 8, !tbaa !5
  %48 = tail call i32 @atoi(ptr nocapture noundef %47) #11
  %49 = getelementptr inbounds i8, ptr %1, i64 88
  %50 = load ptr, ptr %49, align 8, !tbaa !5
  %51 = tail call i32 @atoi(ptr nocapture noundef %50) #11
  %52 = getelementptr inbounds i8, ptr %1, i64 96
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  %54 = tail call i32 @atoi(ptr nocapture noundef %53) #11
  %55 = getelementptr inbounds i8, ptr %1, i64 104
  %56 = load ptr, ptr %55, align 8, !tbaa !5
  %57 = tail call i32 @atoi(ptr nocapture noundef %56) #11
  %58 = icmp eq i32 %33, 0
  %59 = icmp eq i32 %45, 0
  %or.cond = select i1 %58, i1 %59, i1 false
  %60 = icmp eq i32 %36, 0
  %or.cond3 = select i1 %or.cond, i1 %60, i1 false
  %61 = icmp eq i32 %48, 0
  %or.cond5 = select i1 %or.cond3, i1 %61, i1 false
  br i1 %or.cond5, label %71, label %62

62:                                               ; preds = %3
  %63 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %64 = trunc i64 %63 to i32
  %65 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %64)
  %66 = load ptr, ptr @stdout, align 8, !tbaa !5
  %67 = tail call i32 @fflush(ptr noundef %66)
  %68 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %69 = load ptr, ptr @stdout, align 8, !tbaa !5
  %70 = tail call i32 @fflush(ptr noundef %69)
  tail call void @exit(i32 noundef 1) #13
  unreachable

71:                                               ; preds = %3
  %72 = icmp ult i32 %57, 4
  br i1 %72, label %switch.lookup, label %73

73:                                               ; preds = %71
  %74 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %75 = trunc i64 %74 to i32
  %76 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %75)
  %77 = load ptr, ptr @stdout, align 8, !tbaa !5
  %78 = tail call i32 @fflush(ptr noundef %77)
  %79 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %57)
  %80 = load ptr, ptr @stdout, align 8, !tbaa !5
  %81 = tail call i32 @fflush(ptr noundef %80)
  tail call void @exit(i32 noundef 1) #13
  unreachable

switch.lookup:                                    ; preds = %71
  %82 = zext nneg i32 %57 to i64
  %switch.gep = getelementptr inbounds [4 x i32], ptr @switch.table._Z11paddingTestiPPc8DataType, i64 0, i64 %82
  %switch.load = load i32, ptr %switch.gep, align 4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #12
  call void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %4, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %5) #12
  call void @_Z9tensor4df8DataType10DataFormatjjjj(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %5, i32 noundef %2, i32 noundef 0, i32 noundef %21, i32 noundef %24, i32 noundef %27, i32 noundef %30)
  invoke void @_ZN6Tensor6resizeE10TensorDesc(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %5)
          to label %83 unwind label %108

83:                                               ; preds = %switch.lookup
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %84 unwind label %108

84:                                               ; preds = %83
  %85 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %5)
  %86 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %85, i32 noundef %2, i32 noundef 0)
          to label %87 unwind label %110

87:                                               ; preds = %84
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  %88 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %6, i32 noundef 1)
          to label %89 unwind label %112

89:                                               ; preds = %87
  %90 = invoke noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %5)
          to label %91 unwind label %112

91:                                               ; preds = %89
  %92 = zext i32 %90 to i64
  invoke void @_Z10UNI_MEMCPYPvPKvm(ptr noundef %88, ptr noundef %86, i64 noundef %92)
          to label %93 unwind label %112

93:                                               ; preds = %91
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #12
  invoke void @_ZN6TensorC2E10MemoryType(ptr noundef nonnull align 8 dereferenceable(32) %7, i32 noundef 1)
          to label %94 unwind label %114

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

95:                                               ; preds = %94
  %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %9, i8 0, i64 16, i1 false)
  store i32 %39, ptr %.sroa.10.0..sroa_idx, align 8, !tbaa !9
  %.sroa.11.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 20
  store i32 %51, ptr %.sroa.11.0..sroa_idx, align 4, !tbaa !9
  %.sroa.12.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 24
  store i32 %42, ptr %.sroa.12.0..sroa_idx, align 8, !tbaa !9
  %.sroa.13.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 28
  store i32 %54, ptr %.sroa.13.0..sroa_idx, align 4, !tbaa !9
  %.sroa.14.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 32
  store float 0.000000e+00, ptr %.sroa.14.0..sroa_idx, align 8, !tbaa !11
  %.sroa.15.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 36
  store i32 %switch.load, ptr %.sroa.15.0..sroa_idx, align 4, !tbaa !13
  %96 = invoke noundef i32 @_Z25padding_infer_output_sizeP6Tensor12PadParamSpecS0_P8ArchInfo(ptr noundef nonnull %4, ptr noundef nonnull byval(%struct.PadParamSpec) align 8 %9, ptr noundef nonnull %7, ptr noundef nonnull @_ZL18UT_SERIAL_ARCHINFO)
          to label %97 unwind label %118

97:                                               ; preds = %95
  %.not = icmp eq i32 %96, 0
  br i1 %.not, label %120, label %98

98:                                               ; preds = %97
  %99 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %100 = trunc i64 %99 to i32
  %101 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %100)
  %102 = load ptr, ptr @stdout, align 8, !tbaa !5
  %103 = call i32 @fflush(ptr noundef %102)
  %104 = call ptr @ee2str(i32 noundef %96)
  %105 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef %104)
  %106 = load ptr, ptr @stdout, align 8, !tbaa !5
  %107 = call i32 @fflush(ptr noundef %106)
  call void @exit(i32 noundef 1) #13
  unreachable

108:                                              ; preds = %83, %switch.lookup
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %177

110:                                              ; preds = %84
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %177

112:                                              ; preds = %91, %89, %87
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #12
  br label %177

114:                                              ; preds = %93
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %176

116:                                              ; preds = %94
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %175

118:                                              ; preds = %95
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %174

120:                                              ; preds = %97
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %121 unwind label %139

121:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %10) #12
  invoke void @_ZN6Tensor8get_descEv(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %10, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %122 unwind label %141

122:                                              ; preds = %121
  invoke void @_ZN6Tensor6resizeE10TensorDesc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %10)
          to label %123 unwind label %141

123:                                              ; preds = %122
  invoke void @_ZN6Tensor5allocEv(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %124 unwind label %141

124:                                              ; preds = %123
  %125 = invoke noundef i32 @_ZN6Tensor6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %126 unwind label %143

126:                                              ; preds = %124
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  %.sroa.10.0..sroa_idx34 = getelementptr inbounds i8, ptr %12, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %12, i8 0, i64 16, i1 false)
  store i32 %39, ptr %.sroa.10.0..sroa_idx34, align 8, !tbaa !9
  %.sroa.11.0..sroa_idx38 = getelementptr inbounds i8, ptr %12, i64 20
  store i32 %51, ptr %.sroa.11.0..sroa_idx38, align 4, !tbaa !9
  %.sroa.12.0..sroa_idx42 = getelementptr inbounds i8, ptr %12, i64 24
  store i32 %42, ptr %.sroa.12.0..sroa_idx42, align 8, !tbaa !9
  %.sroa.13.0..sroa_idx46 = getelementptr inbounds i8, ptr %12, i64 28
  store i32 %54, ptr %.sroa.13.0..sroa_idx46, align 4, !tbaa !9
  %.sroa.14.0..sroa_idx50 = getelementptr inbounds i8, ptr %12, i64 32
  store float 0.000000e+00, ptr %.sroa.14.0..sroa_idx50, align 8, !tbaa !11
  %.sroa.15.0..sroa_idx54 = getelementptr inbounds i8, ptr %12, i64 36
  store i32 %switch.load, ptr %.sroa.15.0..sroa_idx54, align 4, !tbaa !13
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  %127 = invoke noundef i32 @_Z7padding6Tensor12PadParamSpecS_P8ArchInfo(ptr noundef nonnull %11, ptr noundef nonnull byval(%struct.PadParamSpec) align 8 %12, ptr noundef nonnull %13, ptr noundef nonnull @_ZL15UT_CPU_ARCHINFO)
          to label %128 unwind label %145

128:                                              ; preds = %126
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  %.not116 = icmp eq i32 %127, 0
  br i1 %.not116, label %147, label %129

129:                                              ; preds = %128
  %130 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %131 = trunc i64 %130 to i32
  %132 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %131)
  %133 = load ptr, ptr @stdout, align 8, !tbaa !5
  %134 = call i32 @fflush(ptr noundef %133)
  %135 = call ptr @ee2str(i32 noundef %127)
  %136 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef %135)
  %137 = load ptr, ptr @stdout, align 8, !tbaa !5
  %138 = call i32 @fflush(ptr noundef %137)
  call void @exit(i32 noundef 1) #13
  unreachable

139:                                              ; preds = %120
  %140 = landingpad { ptr, i32 }
          cleanup
  br label %174

141:                                              ; preds = %123, %122, %121
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %173

143:                                              ; preds = %124
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %173

145:                                              ; preds = %126
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #12
  br label %173

147:                                              ; preds = %128
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  %.sroa.10.0..sroa_idx36 = getelementptr inbounds i8, ptr %15, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %15, i8 0, i64 16, i1 false)
  store i32 %39, ptr %.sroa.10.0..sroa_idx36, align 8, !tbaa !9
  %.sroa.11.0..sroa_idx40 = getelementptr inbounds i8, ptr %15, i64 20
  store i32 %51, ptr %.sroa.11.0..sroa_idx40, align 4, !tbaa !9
  %.sroa.12.0..sroa_idx44 = getelementptr inbounds i8, ptr %15, i64 24
  store i32 %42, ptr %.sroa.12.0..sroa_idx44, align 8, !tbaa !9
  %.sroa.13.0..sroa_idx48 = getelementptr inbounds i8, ptr %15, i64 28
  store i32 %54, ptr %.sroa.13.0..sroa_idx48, align 4, !tbaa !9
  %.sroa.14.0..sroa_idx52 = getelementptr inbounds i8, ptr %15, i64 32
  store float 0.000000e+00, ptr %.sroa.14.0..sroa_idx52, align 8, !tbaa !11
  %.sroa.15.0..sroa_idx56 = getelementptr inbounds i8, ptr %15, i64 36
  store i32 %switch.load, ptr %.sroa.15.0..sroa_idx56, align 4, !tbaa !13
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %148 = invoke noundef i32 @_Z7padding6Tensor12PadParamSpecS_P8ArchInfo(ptr noundef nonnull %14, ptr noundef nonnull byval(%struct.PadParamSpec) align 8 %15, ptr noundef nonnull %16, ptr noundef nonnull @_ZL18UT_SERIAL_ARCHINFO)
          to label %149 unwind label %160

149:                                              ; preds = %147
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  %.not117 = icmp eq i32 %148, 0
  br i1 %.not117, label %162, label %150

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

160:                                              ; preds = %147
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #12
  br label %173

162:                                              ; preds = %149
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  %163 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %17, i32 noundef 1)
          to label %164 unwind label %168

164:                                              ; preds = %162
  call void @_ZN6TensorC2ERKS_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  %165 = invoke noundef ptr @_Z19get_ptr_from_tensor6Tensor4Arch(ptr noundef nonnull %18, i32 noundef 1)
          to label %166 unwind label %170

166:                                              ; preds = %164
  invoke void @_Z10ut_check_aPvS_j8DataType(ptr noundef %163, ptr noundef %165, i32 noundef %125, i32 noundef %2)
          to label %167 unwind label %170

167:                                              ; preds = %166
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @free(ptr noundef %86) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %10) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %5) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12
  ret i32 0

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

170:                                              ; preds = %166, %164
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  br label %172

172:                                              ; preds = %170, %168
  %.pn = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  br label %173

173:                                              ; preds = %143, %145, %160, %172, %141
  %.pn.pn.pn = phi { ptr, i32 } [ %142, %141 ], [ %.pn, %172 ], [ %161, %160 ], [ %146, %145 ], [ %144, %143 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %10) #12
  br label %174

174:                                              ; preds = %173, %139, %118
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %173 ], [ %140, %139 ], [ %119, %118 ]
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  br label %175

175:                                              ; preds = %174, %116
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %174 ], [ %117, %116 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #12
  br label %176

176:                                              ; preds = %175, %114
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %175 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #12
  br label %177

177:                                              ; preds = %110, %112, %176, %108
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %109, %108 ], [ %.pn.pn.pn.pn.pn.pn, %176 ], [ %113, %112 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %5) #12
  call void @_ZN6TensorD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #12
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Tensor6resizeE10TensorDesc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #0 align 2

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

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

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

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

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

; 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: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_Z14tensorNumBytes10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #7

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

declare noundef i32 @_Z25padding_infer_output_sizeP6Tensor12PadParamSpecS0_P8ArchInfo(ptr noundef, ptr noundef byval(%struct.PadParamSpec) align 8, ptr noundef, ptr noundef) local_unnamed_addr #8

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

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

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

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

declare noundef i32 @_Z7padding6Tensor12PadParamSpecS_P8ArchInfo(ptr noundef, ptr noundef byval(%struct.PadParamSpec) align 8, ptr noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10ut_check_aPvS_j8DataType(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #7

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { 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 #3 = { 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 = { 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 #5 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nounwind 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 #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { nounwind }
attributes #13 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTS7PadMode", !7, i64 0}


; Effective O3 passes: DSEPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass