; LLVM IR from huawei-noah/bolt :: compute/tensor/src/cpu/arm (convolution)

; 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.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.ConvolutionParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %union.ActivationSpec, i32, i32, i32, i32 }
%union.ActivationSpec = type { %struct.ClipParamSpec }
%struct.ClipParamSpec = type { float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl" }
%"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl" = type { %"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ActivationParamSpec = type { i32, [4 x float] }

@.str = external hidden unnamed_addr constant [20 x i8], align 1
@stdout = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [18 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z39convolution_infer_forward_algorithm_arm10TensorDescS_S_20ConvolutionParamSpec17ConvolutionPolicyP27ConvolutionForwardAlgorithm8DataType(ptr noundef byval(%struct.TensorDesc) align 8 %0, ptr noundef byval(%struct.TensorDesc) align 8 %1, ptr noundef byval(%struct.TensorDesc) align 8 %2, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %3, i32 noundef %4, ptr noundef %5, i32 noundef %6) #0 personality ptr @__gxx_personality_v0 {
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %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 i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.TensorDesc, align 8
  %30 = alloca i32, align 4
  %31 = alloca %struct.TensorDesc, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %struct.TensorDesc, align 8
  %35 = alloca i32, align 4
  %36 = alloca %struct.TensorDesc, align 8
  %37 = alloca i32, align 4
  %38 = alloca %struct.TensorDesc, align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %struct.TensorDesc, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %"class.std::vector", align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca %struct.TensorDesc, align 8
  %51 = alloca %struct.ConvolutionParamSpec, align 8
  %52 = alloca ptr, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca %struct.TensorDesc, align 8
  %57 = alloca %struct.TensorDesc, align 8
  %58 = alloca %struct.TensorDesc, align 8
  %59 = alloca %struct.ConvolutionParamSpec, align 8
  %60 = alloca i32, align 4
  %61 = alloca %struct.TensorDesc, align 4
  %62 = alloca %struct.TensorDesc, align 4
  %63 = alloca ptr, align 8
  %64 = alloca %struct.TensorDesc, align 8
  %65 = alloca ptr, align 8
  %66 = alloca %struct.TensorDesc, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca %struct.TensorDesc, align 8
  %70 = alloca ptr, align 8
  %71 = alloca %struct.TensorDesc, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca %struct.TensorDesc, align 8
  %75 = alloca i32, align 4
  %76 = alloca %struct.ActivationParamSpec, align 4
  %77 = alloca i32, align 4
  %78 = alloca %struct.TensorDesc, align 4
  %79 = alloca i32, align 4
  %80 = alloca %struct.TensorDesc, align 8
  %81 = alloca %struct.ConvolutionParamSpec, align 8
  %82 = alloca i32, align 4
  %83 = alloca double, align 8
  %84 = alloca i32, align 4
  %85 = alloca %struct.TensorDesc, align 8
  %86 = alloca %struct.TensorDesc, align 8
  %87 = alloca %struct.ConvolutionParamSpec, align 8
  %88 = alloca %struct.TensorDesc, align 8
  %89 = alloca %struct.TensorDesc, align 8
  %90 = alloca %struct.TensorDesc, align 8
  %91 = alloca %struct.ActivationParamSpec, align 8
  %92 = alloca i32, align 4
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  store i32 %4, ptr %9, align 4, !tbaa !5
  store ptr %5, ptr %10, align 8, !tbaa !9
  store i32 %6, ptr %11, align 4, !tbaa !11
  %95 = load ptr, ptr %10, align 8, !tbaa !9
  %96 = icmp eq ptr null, %95
  br i1 %96, label %97, label %113

97:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  store i32 1, ptr %12, align 4, !tbaa !13
  %98 = load i32, ptr %12, align 4, !tbaa !13
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %100, label %112

100:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %101 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %102 = trunc i64 %101 to i32
  store i32 %102, ptr %13, align 4, !tbaa !15
  %103 = load i32, ptr %13, align 4, !tbaa !15
  %104 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %103)
  %105 = load ptr, ptr @stdout, align 8, !tbaa !9
  %106 = call i32 @fflush(ptr noundef %105)
  %107 = load i32, ptr %12, align 4, !tbaa !13
  %108 = call ptr @ee2str(i32 noundef %107)
  %109 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %108)
  %110 = load ptr, ptr @stdout, align 8, !tbaa !9
  %111 = call i32 @fflush(ptr noundef %110)
  call void @exit(i32 noundef 1) #10
  unreachable

112:                                              ; preds = %97
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %113

113:                                              ; preds = %112, %7
  %114 = load ptr, ptr %10, align 8, !tbaa !9
  %115 = load i32, ptr %114, align 4, !tbaa !17
  %116 = icmp ne i32 %115, 9
  br i1 %116, label %117, label %118

117:                                              ; preds = %113
  store i32 0, ptr %8, align 4
  br label %651

118:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !13
  %119 = load i32, ptr %9, align 4, !tbaa !5
  %120 = icmp eq i32 %119, 1
  br i1 %120, label %121, label %298

121:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  %122 = call noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %29)
  %123 = icmp ne i8 %122, 0
  br i1 %123, label %124, label %161

124:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  %125 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %31, ptr noundef %15, ptr noundef %17, ptr noundef %19, ptr noundef %20, ptr noundef %22, ptr noundef %23)
  store i32 %125, ptr %30, align 4, !tbaa !13
  %126 = load i32, ptr %30, align 4, !tbaa !13
  %127 = icmp ne i32 %126, 0
  br i1 %127, label %128, label %140

128:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %129 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %130 = trunc i64 %129 to i32
  store i32 %130, ptr %32, align 4, !tbaa !15
  %131 = load i32, ptr %32, align 4, !tbaa !15
  %132 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %131)
  %133 = load ptr, ptr @stdout, align 8, !tbaa !9
  %134 = call i32 @fflush(ptr noundef %133)
  %135 = load i32, ptr %30, align 4, !tbaa !13
  %136 = call ptr @ee2str(i32 noundef %135)
  %137 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %136)
  %138 = load ptr, ptr @stdout, align 8, !tbaa !9
  %139 = call i32 @fflush(ptr noundef %138)
  call void @exit(i32 noundef 1) #10
  unreachable

140:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 8 %1, i64 92, i1 false), !tbaa.struct !19
  %141 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %34, ptr noundef %16, ptr noundef %18, ptr noundef %24, ptr noundef %25, ptr noundef %27, ptr noundef %28)
  store i32 %141, ptr %33, align 4, !tbaa !13
  %142 = load i32, ptr %33, align 4, !tbaa !13
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %156

144:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %145 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %146 = trunc i64 %145 to i32
  store i32 %146, ptr %35, align 4, !tbaa !15
  %147 = load i32, ptr %35, align 4, !tbaa !15
  %148 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %147)
  %149 = load ptr, ptr @stdout, align 8, !tbaa !9
  %150 = call i32 @fflush(ptr noundef %149)
  %151 = load i32, ptr %33, align 4, !tbaa !13
  %152 = call ptr @ee2str(i32 noundef %151)
  %153 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %152)
  %154 = load ptr, ptr @stdout, align 8, !tbaa !9
  %155 = call i32 @fflush(ptr noundef %154)
  call void @exit(i32 noundef 1) #10
  unreachable

156:                                              ; preds = %140
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  store i32 1, ptr %26, align 4, !tbaa !15
  store i32 1, ptr %21, align 4, !tbaa !15
  %157 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 4
  store i32 1, ptr %157, align 8, !tbaa !23
  %158 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 14
  store i32 1, ptr %158, align 8, !tbaa !28
  %159 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 8
  store i32 0, ptr %159, align 8, !tbaa !29
  %160 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 7
  store i32 0, ptr %160, align 4, !tbaa !30
  br label %199

161:                                              ; preds = %121
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  %162 = call noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %36)
  %163 = icmp ne i8 %162, 0
  br i1 %163, label %164, label %197

164:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  %165 = call noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %38, ptr noundef %15, ptr noundef %17, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23)
  store i32 %165, ptr %37, align 4, !tbaa !13
  %166 = load i32, ptr %37, align 4, !tbaa !13
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %180

168:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  %169 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %170 = trunc i64 %169 to i32
  store i32 %170, ptr %39, align 4, !tbaa !15
  %171 = load i32, ptr %39, align 4, !tbaa !15
  %172 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %171)
  %173 = load ptr, ptr @stdout, align 8, !tbaa !9
  %174 = call i32 @fflush(ptr noundef %173)
  %175 = load i32, ptr %37, align 4, !tbaa !13
  %176 = call ptr @ee2str(i32 noundef %175)
  %177 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %176)
  %178 = load ptr, ptr @stdout, align 8, !tbaa !9
  %179 = call i32 @fflush(ptr noundef %178)
  call void @exit(i32 noundef 1) #10
  unreachable

180:                                              ; preds = %164
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 8 %1, i64 92, i1 false), !tbaa.struct !19
  %181 = call noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef byval(%struct.TensorDesc) align 8 %41, ptr noundef %16, ptr noundef %18, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28)
  store i32 %181, ptr %40, align 4, !tbaa !13
  %182 = load i32, ptr %40, align 4, !tbaa !13
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %184, label %196

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  %185 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %186 = trunc i64 %185 to i32
  store i32 %186, ptr %42, align 4, !tbaa !15
  %187 = load i32, ptr %42, align 4, !tbaa !15
  %188 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %187)
  %189 = load ptr, ptr @stdout, align 8, !tbaa !9
  %190 = call i32 @fflush(ptr noundef %189)
  %191 = load i32, ptr %40, align 4, !tbaa !13
  %192 = call ptr @ee2str(i32 noundef %191)
  %193 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %192)
  %194 = load ptr, ptr @stdout, align 8, !tbaa !9
  %195 = call i32 @fflush(ptr noundef %194)
  call void @exit(i32 noundef 1) #10
  unreachable

196:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %198

197:                                              ; preds = %161
  store i32 51, ptr %8, align 4
  store i32 1, ptr %43, align 4
  br label %297

198:                                              ; preds = %196
  br label %199

199:                                              ; preds = %198, %156
  %200 = load i32, ptr %17, align 4, !tbaa !20
  %201 = icmp ne i32 %200, 2
  br i1 %201, label %209, label %202

202:                                              ; preds = %199
  %203 = load i32, ptr %20, align 4, !tbaa !15
  %204 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 13
  %205 = load i32, ptr %204, align 4, !tbaa !31
  %206 = udiv i32 %203, %205
  %207 = urem i32 %206, 8
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %209, label %214

209:                                              ; preds = %202, %199
  %210 = load i32, ptr %15, align 4, !tbaa !11
  %211 = icmp ne i32 1, %210
  br i1 %211, label %212, label %214

212:                                              ; preds = %209
  %213 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 4, ptr %213, align 4, !tbaa !17
  br label %276

214:                                              ; preds = %209, %202
  %215 = load i32, ptr %26, align 4, !tbaa !15
  %216 = icmp eq i32 %215, 1
  br i1 %216, label %217, label %273

217:                                              ; preds = %214
  %218 = load i32, ptr %27, align 4, !tbaa !15
  %219 = icmp eq i32 %218, 3
  br i1 %219, label %220, label %273

220:                                              ; preds = %217
  %221 = load i32, ptr %28, align 4, !tbaa !15
  %222 = icmp eq i32 %221, 3
  br i1 %222, label %223, label %273

223:                                              ; preds = %220
  %224 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 4
  %225 = load i32, ptr %224, align 8, !tbaa !23
  %226 = icmp eq i32 %225, 1
  br i1 %226, label %227, label %273

227:                                              ; preds = %223
  %228 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 5
  %229 = load i32, ptr %228, align 4, !tbaa !32
  %230 = icmp eq i32 %229, 1
  br i1 %230, label %231, label %273

231:                                              ; preds = %227
  %232 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 6
  %233 = load i32, ptr %232, align 8, !tbaa !33
  %234 = icmp eq i32 %233, 1
  br i1 %234, label %235, label %273

235:                                              ; preds = %231
  %236 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 7
  %237 = load i32, ptr %236, align 4, !tbaa !30
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %273

239:                                              ; preds = %235
  %240 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 8
  %241 = load i32, ptr %240, align 8, !tbaa !29
  %242 = icmp eq i32 %241, 0
  br i1 %242, label %243, label %273

243:                                              ; preds = %239
  %244 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 9
  %245 = load i32, ptr %244, align 4, !tbaa !34
  %246 = icmp eq i32 %245, 1
  br i1 %246, label %247, label %273

247:                                              ; preds = %243
  %248 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 10
  %249 = load i32, ptr %248, align 8, !tbaa !35
  %250 = icmp eq i32 %249, 1
  br i1 %250, label %251, label %273

251:                                              ; preds = %247
  %252 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 11
  %253 = load i32, ptr %252, align 4, !tbaa !36
  %254 = icmp eq i32 %253, 1
  br i1 %254, label %255, label %273

255:                                              ; preds = %251
  %256 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 12
  %257 = load i32, ptr %256, align 8, !tbaa !37
  %258 = icmp eq i32 %257, 1
  br i1 %258, label %259, label %273

259:                                              ; preds = %255
  %260 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 14
  %261 = load i32, ptr %260, align 8, !tbaa !28
  %262 = icmp eq i32 %261, 1
  br i1 %262, label %263, label %273

263:                                              ; preds = %259
  %264 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 15
  %265 = load i32, ptr %264, align 4, !tbaa !38
  %266 = icmp eq i32 %265, 1
  br i1 %266, label %267, label %273

267:                                              ; preds = %263
  %268 = getelementptr inbounds %struct.ConvolutionParamSpec, ptr %3, i32 0, i32 16
  %269 = load i32, ptr %268, align 8, !tbaa !39
  %270 = icmp eq i32 %269, 1
  br i1 %270, label %271, label %273

271:                                              ; preds = %267
  %272 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 5, ptr %272, align 4, !tbaa !17
  br label %275

273:                                              ; preds = %267, %263, %259, %255, %251, %247, %243, %239, %235, %231, %227, %223, %220, %217, %214
  %274 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 3, ptr %274, align 4, !tbaa !17
  br label %275

275:                                              ; preds = %273, %271
  br label %276

276:                                              ; preds = %275, %212
  %277 = load i32, ptr %11, align 4, !tbaa !11
  switch i32 %277, label %289 [
    i32 7, label %278
    i32 8, label %280
    i32 1, label %282
  ]

278:                                              ; preds = %276
  %279 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 6, ptr %279, align 4, !tbaa !17
  br label %290

280:                                              ; preds = %276
  %281 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 6, ptr %281, align 4, !tbaa !17
  br label %290

282:                                              ; preds = %276
  %283 = load ptr, ptr %10, align 8, !tbaa !9
  %284 = load i32, ptr %283, align 4, !tbaa !17
  %285 = icmp eq i32 %284, 5
  br i1 %285, label %286, label %288

286:                                              ; preds = %282
  %287 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 3, ptr %287, align 4, !tbaa !17
  br label %288

288:                                              ; preds = %286, %282
  br label %290

289:                                              ; preds = %276
  br label %290

290:                                              ; preds = %289, %288, %280, %278
  %291 = load ptr, ptr %10, align 8, !tbaa !9
  %292 = load i32, ptr %291, align 4, !tbaa !17
  %293 = icmp ne i32 4, %292
  br i1 %293, label %294, label %296

294:                                              ; preds = %290
  %295 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 3, ptr %295, align 4, !tbaa !17
  br label %296

296:                                              ; preds = %294, %290
  store i32 0, ptr %8, align 4
  store i32 1, ptr %43, align 4
  br label %297

297:                                              ; preds = %296, %197
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #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
  br label %650

298:                                              ; preds = %118
  %299 = load i32, ptr %9, align 4, !tbaa !5
  %300 = icmp eq i32 %299, 2
  br i1 %300, label %301, label %646

301:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #9
  call void @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  store i32 0, ptr %45, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  store i32 0, ptr %46, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  store i32 0, ptr %47, align 4, !tbaa !15
  br label %302

302:                                              ; preds = %396, %301
  %303 = load i32, ptr %47, align 4, !tbaa !15
  %304 = zext i32 %303 to i64
  %305 = call noundef i64 @_ZNKSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  %306 = icmp ult i64 %304, %305
  br i1 %306, label %308, label %307

307:                                              ; preds = %302
  store i32 3, ptr %43, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %401

308:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  store i32 0, ptr %48, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 8 %1, i64 92, i1 false), !tbaa.struct !19
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 8 %3, i64 108, i1 false), !tbaa.struct !40
  %309 = load i32, ptr %47, align 4, !tbaa !15
  %310 = zext i32 %309 to i64
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %310) #9
  %312 = load i32, ptr %311, align 4, !tbaa !17
  %313 = invoke noundef i32 @_Z38convolution_transform_filter_bytes_arm10TensorDesc20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef byval(%struct.TensorDesc) align 8 %50, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %51, i32 noundef %312, ptr noundef %48)
          to label %314 unwind label %334

314:                                              ; preds = %308
  store i32 %313, ptr %49, align 4, !tbaa !13
  %315 = load i32, ptr %49, align 4, !tbaa !13
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %342

317:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  %318 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %319 = trunc i64 %318 to i32
  store i32 %319, ptr %54, align 4, !tbaa !15
  %320 = load i32, ptr %54, align 4, !tbaa !15
  %321 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %320)
          to label %322 unwind label %338

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

325:                                              ; preds = %322
  %326 = load i32, ptr %49, align 4, !tbaa !13
  %327 = invoke ptr @ee2str(i32 noundef %326)
          to label %328 unwind label %338

328:                                              ; preds = %325
  %329 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %327)
          to label %330 unwind label %338

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

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

334:                                              ; preds = %308
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %52, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %53, align 4
  br label %377

338:                                              ; preds = %330, %328, %325, %322, %317
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %52, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %53, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  br label %377

342:                                              ; preds = %314
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  %343 = load i32, ptr %48, align 4, !tbaa !15
  %344 = load i32, ptr %45, align 4, !tbaa !15
  %345 = icmp ugt i32 %343, %344
  br i1 %345, label %346, label %348

346:                                              ; preds = %342
  %347 = load i32, ptr %48, align 4, !tbaa !15
  br label %350

348:                                              ; preds = %342
  %349 = load i32, ptr %45, align 4, !tbaa !15
  br label %350

350:                                              ; preds = %348, %346
  %351 = phi i32 [ %347, %346 ], [ %349, %348 ]
  store i32 %351, ptr %45, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 8 %1, i64 92, i1 false), !tbaa.struct !19
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 8 %2, i64 92, i1 false), !tbaa.struct !19
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 8 %3, i64 108, i1 false), !tbaa.struct !40
  %352 = load i32, ptr %47, align 4, !tbaa !15
  %353 = zext i32 %352 to i64
  %354 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %353) #9
  %355 = load i32, ptr %354, align 4, !tbaa !17
  %356 = invoke noundef i32 @_Z39convolution_infer_forward_tmp_bytes_arm10TensorDescS_S_20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef byval(%struct.TensorDesc) align 8 %56, ptr noundef byval(%struct.TensorDesc) align 8 %57, ptr noundef byval(%struct.TensorDesc) align 8 %58, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %59, i32 noundef %355, ptr noundef %48)
          to label %357 unwind label %378

357:                                              ; preds = %350
  store i32 %356, ptr %55, align 4, !tbaa !13
  %358 = load i32, ptr %55, align 4, !tbaa !13
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %360, label %386

360:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  %361 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %362 = trunc i64 %361 to i32
  store i32 %362, ptr %60, align 4, !tbaa !15
  %363 = load i32, ptr %60, align 4, !tbaa !15
  %364 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %363)
          to label %365 unwind label %382

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

368:                                              ; preds = %365
  %369 = load i32, ptr %55, align 4, !tbaa !13
  %370 = invoke ptr @ee2str(i32 noundef %369)
          to label %371 unwind label %382

371:                                              ; preds = %368
  %372 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %370)
          to label %373 unwind label %382

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

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

377:                                              ; preds = %338, %334
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %400

378:                                              ; preds = %350
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %52, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %53, align 4
  br label %399

382:                                              ; preds = %373, %371, %368, %365, %360
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %52, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %53, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  br label %399

386:                                              ; preds = %357
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  %387 = load i32, ptr %48, align 4, !tbaa !15
  %388 = load i32, ptr %46, align 4, !tbaa !15
  %389 = icmp ugt i32 %387, %388
  br i1 %389, label %390, label %392

390:                                              ; preds = %386
  %391 = load i32, ptr %48, align 4, !tbaa !15
  br label %394

392:                                              ; preds = %386
  %393 = load i32, ptr %46, align 4, !tbaa !15
  br label %394

394:                                              ; preds = %392, %390
  %395 = phi i32 [ %391, %390 ], [ %393, %392 ]
  store i32 %395, ptr %46, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %396

396:                                              ; preds = %394
  %397 = load i32, ptr %47, align 4, !tbaa !15
  %398 = add i32 %397, 1
  store i32 %398, ptr %47, align 4, !tbaa !15
  br label %302, !llvm.loop !44

399:                                              ; preds = %382, %378
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %400

400:                                              ; preds = %399, %377
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %645

401:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 92, ptr %61) #9
  %402 = getelementptr inbounds %struct.TensorDesc, ptr %1, i32 0, i32 0
  %403 = load i32, ptr %402, align 8, !tbaa !46
  %404 = getelementptr inbounds %struct.TensorDesc, ptr %2, i32 0, i32 3
  %405 = getelementptr inbounds [20 x i32], ptr %404, i64 0, i64 3
  %406 = load i32, ptr %405, align 4, !tbaa !15
  invoke void @_Z8tensor1d8DataTypej(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %61, i32 noundef %403, i32 noundef %406)
          to label %407 unwind label %471

407:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 92, ptr %62) #9
  %408 = getelementptr inbounds %struct.TensorDesc, ptr %2, i32 0, i32 3
  %409 = getelementptr inbounds [20 x i32], ptr %408, i64 0, i64 2
  %410 = load i32, ptr %409, align 4, !tbaa !15
  invoke void @_Z8tensor1d8DataTypej(ptr dead_on_unwind writable sret(%struct.TensorDesc) align 4 %62, i32 noundef 6, i32 noundef %410)
          to label %411 unwind label %475

411:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  %412 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %64)
          to label %413 unwind label %479

413:                                              ; preds = %411
  %414 = getelementptr inbounds %struct.TensorDesc, ptr %0, i32 0, i32 0
  %415 = load i32, ptr %414, align 8, !tbaa !46
  %416 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %412, i32 noundef %415, i32 noundef 0)
          to label %417 unwind label %479

417:                                              ; preds = %413
  store ptr %416, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 8 %1, i64 92, i1 false), !tbaa.struct !19
  %418 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %66)
          to label %419 unwind label %483

419:                                              ; preds = %417
  %420 = getelementptr inbounds %struct.TensorDesc, ptr %1, i32 0, i32 0
  %421 = load i32, ptr %420, align 8, !tbaa !46
  %422 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %418, i32 noundef %421, i32 noundef 0)
          to label %423 unwind label %483

423:                                              ; preds = %419
  store ptr %422, ptr %65, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  %424 = load i32, ptr %45, align 4, !tbaa !15
  %425 = getelementptr inbounds %struct.TensorDesc, ptr %1, i32 0, i32 0
  %426 = load i32, ptr %425, align 8, !tbaa !46
  %427 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %426)
          to label %428 unwind label %487

428:                                              ; preds = %423
  %429 = udiv i32 %424, %427
  %430 = getelementptr inbounds %struct.TensorDesc, ptr %1, i32 0, i32 0
  %431 = load i32, ptr %430, align 8, !tbaa !46
  %432 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %429, i32 noundef %431, i32 noundef 0)
          to label %433 unwind label %487

433:                                              ; preds = %428
  store ptr %432, ptr %67, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %61, i64 92, i1 false), !tbaa.struct !19
  %434 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %69)
          to label %435 unwind label %491

435:                                              ; preds = %433
  %436 = getelementptr inbounds %struct.TensorDesc, ptr %61, i32 0, i32 0
  %437 = load i32, ptr %436, align 4, !tbaa !46
  %438 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %434, i32 noundef %437, i32 noundef 0)
          to label %439 unwind label %491

439:                                              ; preds = %435
  store ptr %438, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 4 %62, i64 92, i1 false), !tbaa.struct !19
  %440 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %71)
          to label %441 unwind label %495

441:                                              ; preds = %439
  %442 = getelementptr inbounds %struct.TensorDesc, ptr %62, i32 0, i32 0
  %443 = load i32, ptr %442, align 4, !tbaa !46
  %444 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %440, i32 noundef %443, i32 noundef 0)
          to label %445 unwind label %495

445:                                              ; preds = %441
  store ptr %444, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #9
  %446 = load i32, ptr %46, align 4, !tbaa !15
  %447 = getelementptr inbounds %struct.TensorDesc, ptr %0, i32 0, i32 0
  %448 = load i32, ptr %447, align 8, !tbaa !46
  %449 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %448)
          to label %450 unwind label %499

450:                                              ; preds = %445
  %451 = udiv i32 %446, %449
  %452 = getelementptr inbounds %struct.TensorDesc, ptr %0, i32 0, i32 0
  %453 = load i32, ptr %452, align 8, !tbaa !46
  %454 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %451, i32 noundef %453, i32 noundef 3)
          to label %455 unwind label %499

455:                                              ; preds = %450
  store ptr %454, ptr %72, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %74, ptr align 8 %2, i64 92, i1 false), !tbaa.struct !19
  %456 = invoke noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8 %74)
          to label %457 unwind label %503

457:                                              ; preds = %455
  %458 = getelementptr inbounds %struct.TensorDesc, ptr %2, i32 0, i32 0
  %459 = load i32, ptr %458, align 8, !tbaa !46
  %460 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %456, i32 noundef %459, i32 noundef 3)
          to label %461 unwind label %503

461:                                              ; preds = %457
  store ptr %460, ptr %73, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #9
  store i32 0, ptr %75, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 20, ptr %76) #9
  call void @_ZN19ActivationParamSpecC2Ev(ptr noundef nonnull align 4 dereferenceable(20) %76) #9
  %462 = getelementptr inbounds %struct.ActivationParamSpec, ptr %76, i32 0, i32 0
  store i32 1, ptr %462, align 4, !tbaa !48
  %463 = getelementptr inbounds %struct.ActivationParamSpec, ptr %76, i32 0, i32 1
  %464 = getelementptr inbounds [4 x float], ptr %463, i64 0, i64 0
  store float 0.000000e+00, ptr %464, align 4, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #9
  store i32 0, ptr %77, align 4, !tbaa !15
  br label %465

465:                                              ; preds = %618, %461
  %466 = load i32, ptr %77, align 4, !tbaa !15
  %467 = zext i32 %466 to i64
  %468 = call noundef i64 @_ZNKSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  %469 = icmp ult i64 %467, %468
  br i1 %469, label %507, label %470

470:                                              ; preds = %465
  store i32 6, ptr %43, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  br label %623

471:                                              ; preds = %401
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %52, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %53, align 4
  br label %644

475:                                              ; preds = %407
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %52, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %53, align 4
  br label %643

479:                                              ; preds = %413, %411
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %52, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %53, align 4
  br label %642

483:                                              ; preds = %419, %417
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %52, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %53, align 4
  br label %641

487:                                              ; preds = %428, %423
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %52, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %53, align 4
  br label %640

491:                                              ; preds = %435, %433
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %52, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %53, align 4
  br label %639

495:                                              ; preds = %441, %439
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %52, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %53, align 4
  br label %638

499:                                              ; preds = %450, %445
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %52, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %53, align 4
  br label %637

503:                                              ; preds = %457, %455
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %52, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %53, align 4
  br label %636

507:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 92, ptr %78) #9
  call void @_ZN10TensorDescC2Ev(ptr noundef nonnull align 4 dereferenceable(92) %78) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %80, ptr align 8 %1, i64 92, i1 false), !tbaa.struct !19
  %508 = load ptr, ptr %65, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %81, ptr align 8 %3, i64 108, i1 false), !tbaa.struct !40
  %509 = load i32, ptr %77, align 4, !tbaa !15
  %510 = zext i32 %509 to i64
  %511 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %510) #9
  %512 = load i32, ptr %511, align 4, !tbaa !17
  %513 = load ptr, ptr %67, align 8, !tbaa !9
  %514 = invoke noundef i32 @_Z32convolution_transform_filter_arm10TensorDescPKv20ConvolutionParamSpec27ConvolutionForwardAlgorithmPS_Pv(ptr noundef byval(%struct.TensorDesc) align 8 %80, ptr noundef %508, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %81, i32 noundef %512, ptr noundef %78, ptr noundef %513)
          to label %515 unwind label %535

515:                                              ; preds = %507
  store i32 %514, ptr %79, align 4, !tbaa !13
  %516 = load i32, ptr %79, align 4, !tbaa !13
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %543

518:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #9
  %519 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %520 = trunc i64 %519 to i32
  store i32 %520, ptr %82, align 4, !tbaa !15
  %521 = load i32, ptr %82, align 4, !tbaa !15
  %522 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %521)
          to label %523 unwind label %539

523:                                              ; preds = %518
  %524 = load ptr, ptr @stdout, align 8, !tbaa !9
  %525 = invoke i32 @fflush(ptr noundef %524)
          to label %526 unwind label %539

526:                                              ; preds = %523
  %527 = load i32, ptr %79, align 4, !tbaa !13
  %528 = invoke ptr @ee2str(i32 noundef %527)
          to label %529 unwind label %539

529:                                              ; preds = %526
  %530 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %528)
          to label %531 unwind label %539

531:                                              ; preds = %529
  %532 = load ptr, ptr @stdout, align 8, !tbaa !9
  %533 = invoke i32 @fflush(ptr noundef %532)
          to label %534 unwind label %539

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

535:                                              ; preds = %507
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %52, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %53, align 4
  br label %582

539:                                              ; preds = %531, %529, %526, %523, %518
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %52, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %53, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  br label %582

543:                                              ; preds = %515
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  %544 = load ptr, ptr %72, align 8, !tbaa !9
  %545 = load i32, ptr %46, align 4, !tbaa !15
  %546 = zext i32 %545 to i64
  invoke void @_Z10UNI_MEMSETPvim(ptr noundef %544, i32 noundef 0, i64 noundef %546)
          to label %547 unwind label %583

547:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %548 = invoke noundef double @_Z10ut_time_msv()
          to label %549 unwind label %587

549:                                              ; preds = %547
  store double %548, ptr %83, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 8 %0, i64 92, i1 false), !tbaa.struct !19
  %550 = load ptr, ptr %63, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 4 %78, i64 92, i1 false), !tbaa.struct !19
  %551 = load ptr, ptr %67, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %87, ptr align 8 %3, i64 108, i1 false), !tbaa.struct !40
  %552 = load i32, ptr %77, align 4, !tbaa !15
  %553 = zext i32 %552 to i64
  %554 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %553) #9
  %555 = load i32, ptr %554, align 4, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %88, ptr align 4 %62, i64 92, i1 false), !tbaa.struct !19
  %556 = load ptr, ptr %70, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %89, ptr align 4 %61, i64 92, i1 false), !tbaa.struct !19
  %557 = load ptr, ptr %68, align 8, !tbaa !9
  %558 = load i32, ptr %46, align 4, !tbaa !15
  %559 = load ptr, ptr %72, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %90, ptr align 8 %2, i64 92, i1 false), !tbaa.struct !19
  %560 = load ptr, ptr %73, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %91, ptr align 4 %76, i64 20, i1 false), !tbaa.struct !54
  %561 = invoke noundef i32 @_Z15convolution_arm10TensorDescPvS_PKv20ConvolutionParamSpec27ConvolutionForwardAlgorithmS_S2_S_S2_jS0_S_S0_19ActivationParamSpec4Arch(ptr noundef byval(%struct.TensorDesc) align 8 %85, ptr noundef %550, ptr noundef byval(%struct.TensorDesc) align 8 %86, ptr noundef %551, ptr noundef byval(%struct.ConvolutionParamSpec) align 8 %87, i32 noundef %555, ptr noundef byval(%struct.TensorDesc) align 8 %88, ptr noundef %556, ptr noundef byval(%struct.TensorDesc) align 8 %89, ptr noundef %557, i32 noundef %558, ptr noundef %559, ptr noundef byval(%struct.TensorDesc) align 8 %90, ptr noundef %560, ptr noundef byval(%struct.ActivationParamSpec) align 8 %91, i32 noundef 6)
          to label %562 unwind label %591

562:                                              ; preds = %549
  store i32 %561, ptr %84, align 4, !tbaa !13
  %563 = load i32, ptr %84, align 4, !tbaa !13
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %599

565:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #9
  %566 = call i64 (i64, ...) @syscall(i64 noundef 186) #9
  %567 = trunc i64 %566 to i32
  store i32 %567, ptr %92, align 4, !tbaa !15
  %568 = load i32, ptr %92, align 4, !tbaa !15
  %569 = invoke i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %568)
          to label %570 unwind label %595

570:                                              ; preds = %565
  %571 = load ptr, ptr @stdout, align 8, !tbaa !9
  %572 = invoke i32 @fflush(ptr noundef %571)
          to label %573 unwind label %595

573:                                              ; preds = %570
  %574 = load i32, ptr %84, align 4, !tbaa !13
  %575 = invoke ptr @ee2str(i32 noundef %574)
          to label %576 unwind label %595

576:                                              ; preds = %573
  %577 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %575)
          to label %578 unwind label %595

578:                                              ; preds = %576
  %579 = load ptr, ptr @stdout, align 8, !tbaa !9
  %580 = invoke i32 @fflush(ptr noundef %579)
          to label %581 unwind label %595

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

582:                                              ; preds = %539, %535
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  br label %622

583:                                              ; preds = %543
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %52, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %53, align 4
  br label %622

587:                                              ; preds = %547
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %52, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %53, align 4
  br label %621

591:                                              ; preds = %549
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %52, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %53, align 4
  br label %612

595:                                              ; preds = %578, %576, %573, %570, %565
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %52, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %53, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #9
  br label %612

599:                                              ; preds = %562
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %600 = invoke noundef double @_Z10ut_time_msv()
          to label %601 unwind label %613

601:                                              ; preds = %599
  store double %600, ptr %93, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  store double 0x41DFFFFFFFC00000, ptr %94, align 8, !tbaa !52
  %602 = load double, ptr %94, align 8, !tbaa !52
  %603 = load double, ptr %93, align 8, !tbaa !52
  %604 = load double, ptr %83, align 8, !tbaa !52
  %605 = fsub double %603, %604
  %606 = fcmp ogt double %602, %605
  br i1 %606, label %607, label %617

607:                                              ; preds = %601
  %608 = load double, ptr %93, align 8, !tbaa !52
  %609 = load double, ptr %83, align 8, !tbaa !52
  %610 = fsub double %608, %609
  store double %610, ptr %94, align 8, !tbaa !52
  %611 = load i32, ptr %77, align 4, !tbaa !15
  store i32 %611, ptr %75, align 4, !tbaa !15
  br label %617

612:                                              ; preds = %595, %591
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  br label %621

613:                                              ; preds = %599
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %52, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %53, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  br label %621

617:                                              ; preds = %607, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %78) #9
  br label %618

618:                                              ; preds = %617
  %619 = load i32, ptr %77, align 4, !tbaa !15
  %620 = add i32 %619, 1
  store i32 %620, ptr %77, align 4, !tbaa !15
  br label %465, !llvm.loop !55

621:                                              ; preds = %613, %612, %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  br label %622

622:                                              ; preds = %621, %583, %582
  call void @llvm.lifetime.end.p0(i64 92, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 20, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  br label %636

623:                                              ; preds = %470
  %624 = load ptr, ptr %63, align 8, !tbaa !9
  call void @free(ptr noundef %624) #9
  %625 = load ptr, ptr %65, align 8, !tbaa !9
  call void @free(ptr noundef %625) #9
  %626 = load ptr, ptr %67, align 8, !tbaa !9
  call void @free(ptr noundef %626) #9
  %627 = load ptr, ptr %68, align 8, !tbaa !9
  call void @free(ptr noundef %627) #9
  %628 = load ptr, ptr %70, align 8, !tbaa !9
  call void @free(ptr noundef %628) #9
  %629 = load ptr, ptr %72, align 8, !tbaa !9
  call void @free(ptr noundef %629) #9
  %630 = load ptr, ptr %73, align 8, !tbaa !9
  call void @free(ptr noundef %630) #9
  %631 = load i32, ptr %75, align 4, !tbaa !15
  %632 = zext i32 %631 to i64
  %633 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %632) #9
  %634 = load i32, ptr %633, align 4, !tbaa !17
  %635 = load ptr, ptr %10, align 8, !tbaa !9
  store i32 %634, ptr %635, align 4, !tbaa !17
  store i32 0, ptr %14, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 20, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %62) #9
  call void @llvm.lifetime.end.p0(i64 92, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #9
  br label %647

636:                                              ; preds = %622, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %637

637:                                              ; preds = %636, %499
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  br label %638

638:                                              ; preds = %637, %495
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %639

639:                                              ; preds = %638, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %640

640:                                              ; preds = %639, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %641

641:                                              ; preds = %640, %483
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %642

642:                                              ; preds = %641, %479
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %643

643:                                              ; preds = %642, %475
  call void @llvm.lifetime.end.p0(i64 92, ptr %62) #9
  br label %644

644:                                              ; preds = %643, %471
  call void @llvm.lifetime.end.p0(i64 92, ptr %61) #9
  br label %645

645:                                              ; preds = %644, %400
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  call void @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %653

646:                                              ; preds = %298
  store i32 51, ptr %14, align 4, !tbaa !13
  br label %647

647:                                              ; preds = %646, %623
  br label %648

648:                                              ; preds = %647
  %649 = load i32, ptr %14, align 4, !tbaa !13
  store i32 %649, ptr %8, align 4
  store i32 1, ptr %43, align 4
  br label %650

650:                                              ; preds = %648, %297
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %651

651:                                              ; preds = %650, %117
  %652 = load i32, ptr %8, align 4
  ret i32 %652

653:                                              ; preds = %645
  %654 = load ptr, ptr %52, align 8
  %655 = load i32, ptr %53, align 4
  %656 = insertvalue { ptr, i32 } poison, ptr %654, 0
  %657 = insertvalue { ptr, i32 } %656, i32 %655, 1
  resume { ptr, i32 } %657
}

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @ee2str(i32 noundef) #4

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

; 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 noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #4

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z38convolution_transform_filter_bytes_arm10TensorDesc20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8, i32 noundef, ptr noundef) #0

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z39convolution_infer_forward_tmp_bytes_arm10TensorDescS_S_20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8, i32 noundef, ptr noundef) #0

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

; 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 nounwind uwtable
declare dso_local noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z10UNI_MEMSETPvim(ptr noundef, i32 noundef, i64 noundef) #4

declare noundef double @_Z10ut_time_msv() #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z15convolution_arm10TensorDescPvS_PKv20ConvolutionParamSpec27ConvolutionForwardAlgorithmS_S2_S_S2_jS0_S_S0_19ActivationParamSpec4Arch(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.ConvolutionParamSpec) align 8, i32 noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, i32 noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.ActivationParamSpec) align 8, i32 noundef) #0

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

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

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

!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 = !{!"_ZTS17ConvolutionPolicy", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTS8DataType", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTS2EE", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"_ZTS27ConvolutionForwardAlgorithm", !7, i64 0}
!19 = !{i64 0, i64 4, !11, i64 4, i64 4, !20, i64 8, i64 4, !15, i64 12, i64 80, !22}
!20 = !{!21, !21, i64 0}
!21 = !{!"_ZTS10DataFormat", !7, i64 0}
!22 = !{!7, !7, i64 0}
!23 = !{!24, !16, i64 16}
!24 = !{!"_ZTS20ConvolutionParamSpec", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !16, i64 64, !16, i64 68, !25, i64 72, !26, i64 76, !26, i64 80, !7, i64 84, !27, i64 92, !16, i64 96, !16, i64 100, !16, i64 104}
!25 = !{!"_ZTS15ConvolutionMode", !7, i64 0}
!26 = !{!"_ZTS14ActivationMode", !7, i64 0}
!27 = !{!"_ZTS9RoundMode", !7, i64 0}
!28 = !{!24, !16, i64 56}
!29 = !{!24, !16, i64 32}
!30 = !{!24, !16, i64 28}
!31 = !{!24, !16, i64 52}
!32 = !{!24, !16, i64 20}
!33 = !{!24, !16, i64 24}
!34 = !{!24, !16, i64 36}
!35 = !{!24, !16, i64 40}
!36 = !{!24, !16, i64 44}
!37 = !{!24, !16, i64 48}
!38 = !{!24, !16, i64 60}
!39 = !{!24, !16, i64 64}
!40 = !{i64 0, i64 4, !15, i64 4, i64 4, !15, i64 8, i64 4, !15, i64 12, i64 4, !15, i64 16, i64 4, !15, i64 20, i64 4, !15, i64 24, i64 4, !15, i64 28, i64 4, !15, i64 32, i64 4, !15, i64 36, i64 4, !15, i64 40, i64 4, !15, i64 44, i64 4, !15, i64 48, i64 4, !15, i64 52, i64 4, !15, i64 56, i64 4, !15, i64 60, i64 4, !15, i64 64, i64 4, !15, i64 68, i64 4, !15, i64 72, i64 4, !41, i64 76, i64 4, !42, i64 80, i64 4, !42, i64 84, i64 8, !22, i64 92, i64 4, !43, i64 96, i64 4, !15, i64 100, i64 4, !15, i64 104, i64 4, !15}
!41 = !{!25, !25, i64 0}
!42 = !{!26, !26, i64 0}
!43 = !{!27, !27, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!47, !12, i64 0}
!47 = !{!"_ZTS10TensorDesc", !12, i64 0, !21, i64 4, !16, i64 8, !7, i64 12}
!48 = !{!49, !26, i64 0}
!49 = !{!"_ZTS19ActivationParamSpec", !26, i64 0, !7, i64 4}
!50 = !{!51, !51, i64 0}
!51 = !{!"float", !7, i64 0}
!52 = !{!53, !53, i64 0}
!53 = !{!"double", !7, i64 0}
!54 = !{i64 0, i64 4, !42, i64 4, i64 16, !22}
!55 = distinct !{!55, !45}


; 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.TensorDesc = type { i32, i32, i32, [20 x i32] }
%struct.ConvolutionParamSpec = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %union.ActivationSpec, i32, i32, i32, i32 }
%union.ActivationSpec = type { %struct.ClipParamSpec }
%struct.ClipParamSpec = type { float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl" }
%"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl" = type { %"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ConvolutionForwardAlgorithm, std::allocator<ConvolutionForwardAlgorithm>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ActivationParamSpec = type { i32, [4 x float] }

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

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 52) i32 @_Z39convolution_infer_forward_algorithm_arm10TensorDescS_S_20ConvolutionParamSpec17ConvolutionPolicyP27ConvolutionForwardAlgorithm8DataType(ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %0, ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %1, ptr nocapture noundef readonly byval(%struct.TensorDesc) align 8 %2, ptr nocapture noundef byval(%struct.ConvolutionParamSpec) align 8 %3, i32 noundef %4, ptr noundef %5, i32 noundef %6) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %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 %"class.std::vector", align 8
  %23 = alloca i32, align 4
  %24 = alloca %struct.TensorDesc, align 8
  %25 = alloca %struct.ConvolutionParamSpec, align 8
  %26 = alloca %struct.TensorDesc, align 8
  %27 = alloca %struct.TensorDesc, align 8
  %28 = alloca %struct.TensorDesc, align 8
  %29 = alloca %struct.ConvolutionParamSpec, align 8
  %30 = alloca %struct.TensorDesc, align 8
  %31 = alloca %struct.TensorDesc, align 8
  %32 = alloca %struct.ActivationParamSpec, align 8
  %33 = alloca %struct.TensorDesc, align 4
  %34 = alloca %struct.TensorDesc, align 8
  %35 = alloca %struct.ConvolutionParamSpec, align 8
  %36 = alloca %struct.TensorDesc, align 8
  %37 = alloca %struct.TensorDesc, align 8
  %38 = alloca %struct.ConvolutionParamSpec, align 8
  %39 = icmp eq ptr %5, null
  br i1 %39, label %40, label %50

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

50:                                               ; preds = %7
  %51 = load i32, ptr %5, align 4, !tbaa !9
  %.not = icmp eq i32 %51, 9
  br i1 %.not, label %52, label %315

52:                                               ; preds = %50
  switch i32 %4, label %315 [
    i32 1, label %53
    i32 2, label %158
  ]

53:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #12
  %54 = tail call noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0)
  %.not189 = icmp eq i8 %54, 0
  br i1 %.not189, label %84, label %55

55:                                               ; preds = %53
  %56 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %16)
  %.not193 = icmp eq i32 %56, 0
  br i1 %.not193, label %67, label %57

57:                                               ; preds = %55
  %58 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %59 = trunc i64 %58 to i32
  %60 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %59)
  %61 = load ptr, ptr @stdout, align 8, !tbaa !5
  %62 = call i32 @fflush(ptr noundef %61)
  %63 = call ptr @ee2str(i32 noundef %56)
  %64 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %63)
  %65 = load ptr, ptr @stdout, align 8, !tbaa !5
  %66 = call i32 @fflush(ptr noundef %65)
  call void @exit(i32 noundef 1) #13
  unreachable

67:                                               ; preds = %55
  %68 = call noundef i32 @_Z11tensor4dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %1, ptr noundef nonnull %9, ptr noundef nonnull %11, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %20, ptr noundef nonnull %21)
  %.not194 = icmp eq i32 %68, 0
  br i1 %.not194, label %79, label %69

69:                                               ; preds = %67
  %70 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %71 = trunc i64 %70 to i32
  %72 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %71)
  %73 = load ptr, ptr @stdout, align 8, !tbaa !5
  %74 = call i32 @fflush(ptr noundef %73)
  %75 = call ptr @ee2str(i32 noundef %68)
  %76 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %75)
  %77 = load ptr, ptr @stdout, align 8, !tbaa !5
  %78 = call i32 @fflush(ptr noundef %77)
  call void @exit(i32 noundef 1) #13
  unreachable

79:                                               ; preds = %67
  store i32 1, ptr %19, align 4, !tbaa !11
  %80 = getelementptr inbounds i8, ptr %3, i64 16
  store i32 1, ptr %80, align 8, !tbaa !13
  %81 = getelementptr inbounds i8, ptr %3, i64 56
  store i32 1, ptr %81, align 8, !tbaa !18
  %82 = getelementptr inbounds i8, ptr %3, i64 32
  store i32 0, ptr %82, align 8, !tbaa !19
  %83 = getelementptr inbounds i8, ptr %3, i64 28
  store i32 0, ptr %83, align 4, !tbaa !20
  br label %110

84:                                               ; preds = %53
  %85 = tail call noundef zeroext i8 @_Z10tensorIs5d10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0)
  %.not190 = icmp eq i8 %85, 0
  br i1 %.not190, label %157, label %86

86:                                               ; preds = %84
  %87 = call noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16)
  %.not191 = icmp eq i32 %87, 0
  br i1 %.not191, label %98, label %88

88:                                               ; preds = %86
  %89 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %90 = trunc i64 %89 to i32
  %91 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %90)
  %92 = load ptr, ptr @stdout, align 8, !tbaa !5
  %93 = call i32 @fflush(ptr noundef %92)
  %94 = call ptr @ee2str(i32 noundef %87)
  %95 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %94)
  %96 = load ptr, ptr @stdout, align 8, !tbaa !5
  %97 = call i32 @fflush(ptr noundef %96)
  call void @exit(i32 noundef 1) #13
  unreachable

98:                                               ; preds = %86
  %99 = call noundef i32 @_Z11tensor5dGet10TensorDescP8DataTypeP10DataFormatPjS4_S4_S4_S4_(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %1, ptr noundef nonnull %9, ptr noundef nonnull %11, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21)
  %.not192 = icmp eq i32 %99, 0
  br i1 %.not192, label %110, label %100

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

110:                                              ; preds = %98, %79
  %111 = load i32, ptr %10, align 4, !tbaa !21
  %.not195 = icmp eq i32 %111, 2
  br i1 %.not195, label %112, label %121

112:                                              ; preds = %110
  %113 = load i32, ptr %13, align 4, !tbaa !11
  %114 = getelementptr inbounds i8, ptr %3, i64 52
  %115 = load i32, ptr %114, align 4, !tbaa !23
  %116 = udiv i32 %113, %115
  %117 = and i32 %116, 7
  %118 = icmp ne i32 %117, 0
  %119 = load i32, ptr %8, align 4
  %120 = icmp ne i32 %119, 1
  %or.cond = select i1 %118, i1 %120, i1 false
  br i1 %or.cond, label %154, label %122

121:                                              ; preds = %110
  %.old = load i32, ptr %8, align 4, !tbaa !24
  %.old1.not = icmp eq i32 %.old, 1
  br i1 %.old1.not, label %122, label %154

122:                                              ; preds = %121, %112
  %123 = load i32, ptr %19, align 4, !tbaa !11
  %124 = load i32, ptr %20, align 4
  %125 = load i32, ptr %21, align 4
  %126 = getelementptr inbounds i8, ptr %3, i64 16
  %127 = load <4 x i32>, ptr %126, align 8
  %128 = getelementptr inbounds i8, ptr %3, i64 32
  %129 = load i32, ptr %128, align 8
  %130 = insertelement <8 x i32> poison, i32 %123, i64 0
  %131 = insertelement <8 x i32> %130, i32 %124, i64 1
  %132 = insertelement <8 x i32> %131, i32 %125, i64 2
  %133 = shufflevector <4 x i32> %127, <4 x i32> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison>
  %134 = shufflevector <8 x i32> %132, <8 x i32> %133, <8 x i32> <i32 0, i32 1, i32 2, i32 8, i32 9, i32 10, i32 11, i32 poison>
  %135 = insertelement <8 x i32> %134, i32 %129, i64 7
  %.fr = freeze <8 x i32> %135
  %136 = getelementptr inbounds i8, ptr %3, i64 36
  %137 = load <4 x i32>, ptr %136, align 4
  %.fr292 = freeze <4 x i32> %137
  %138 = getelementptr inbounds i8, ptr %3, i64 56
  %139 = load i32, ptr %138, align 8
  %.fr295 = freeze i32 %139
  %140 = icmp eq i32 %.fr295, 1
  %141 = getelementptr inbounds i8, ptr %3, i64 60
  %142 = load i32, ptr %141, align 4
  %.fr293 = freeze i32 %142
  %143 = icmp eq i32 %.fr293, 1
  %144 = getelementptr inbounds i8, ptr %3, i64 64
  %145 = load i32, ptr %144, align 8
  %146 = icmp eq i32 %145, 1
  %147 = icmp ne <8 x i32> %.fr, <i32 1, i32 3, i32 3, i32 1, i32 1, i32 1, i32 0, i32 0>
  %148 = bitcast <8 x i1> %147 to i8
  %149 = icmp eq i8 %148, 0
  %150 = icmp ne <4 x i32> %.fr292, <i32 1, i32 1, i32 1, i32 1>
  %151 = bitcast <4 x i1> %150 to i4
  %152 = icmp eq i4 %151, 0
  %op.rdx = and i1 %149, %152
  %op.rdx289 = and i1 %op.rdx, %140
  %153 = and i1 %op.rdx289, %143
  %op.rdx291 = select i1 %153, i1 %146, i1 false
  %. = select i1 %op.rdx291, i32 5, i32 3
  br label %154

154:                                              ; preds = %122, %121, %112
  %.sink = phi i32 [ 4, %112 ], [ 4, %121 ], [ %., %122 ]
  %155 = phi i1 [ false, %112 ], [ false, %121 ], [ %op.rdx291, %122 ]
  %.not196 = phi i1 [ true, %112 ], [ true, %121 ], [ false, %122 ]
  store i32 %.sink, ptr %5, align 4, !tbaa !9
  switch i32 %6, label %thread-pre-split [
    i32 7, label %.thread.sink.split
    i32 8, label %.thread.sink.split
    i32 1, label %156
  ]

156:                                              ; preds = %154
  br i1 %155, label %.thread.sink.split, label %thread-pre-split

thread-pre-split:                                 ; preds = %154, %156
  br i1 %.not196, label %157, label %.thread

.thread.sink.split:                               ; preds = %156, %154, %154
  %.sink269 = phi i32 [ 6, %154 ], [ 6, %154 ], [ 3, %156 ]
  store i32 %.sink269, ptr %5, align 4, !tbaa !9
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %thread-pre-split
  store i32 3, ptr %5, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %thread-pre-split, %.thread, %84
  %.0 = phi i32 [ 51, %84 ], [ 0, %.thread ], [ 0, %thread-pre-split ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #12
  br label %315

158:                                              ; preds = %52
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #12
  call void @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  %159 = call noundef i64 @_ZNKSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  %.not231 = icmp eq i64 %159, 0
  br i1 %.not231, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %199, %158
  %.0141.lcssa = phi i32 [ 0, %158 ], [ %201, %199 ]
  %.0140.lcssa = phi i32 [ 0, %158 ], [ %182, %199 ]
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %30) #12
  %160 = load i32, ptr %1, align 8, !tbaa !26
  %161 = getelementptr inbounds i8, ptr %2, i64 24
  %162 = load i32, ptr %161, align 8, !tbaa !11
  invoke void @_Z8tensor1d8DataTypej(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %30, i32 noundef %160, i32 noundef %162)
          to label %207 unwind label %246

.lr.ph:                                           ; preds = %158, %199
  %163 = phi i64 [ %203, %199 ], [ 0, %158 ]
  %.0140223 = phi i32 [ %182, %199 ], [ 0, %158 ]
  %.0141222 = phi i32 [ %201, %199 ], [ 0, %158 ]
  %.0142221 = phi i32 [ %202, %199 ], [ 0, %158 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #12
  store i32 0, ptr %23, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %24, ptr noundef nonnull align 8 dereferenceable(92) %1, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(108) %25, ptr noundef nonnull align 8 dereferenceable(108) %3, i64 108, i1 false), !tbaa.struct !30
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %163) #12
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = invoke noundef i32 @_Z38convolution_transform_filter_bytes_arm10TensorDesc20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %24, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %25, i32 noundef %165, ptr noundef nonnull %23)
          to label %167 unwind label %178

167:                                              ; preds = %.lr.ph
  %.not184 = icmp eq i32 %166, 0
  br i1 %.not184, label %180, label %168

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

178:                                              ; preds = %.lr.ph
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %206

180:                                              ; preds = %167
  %181 = load i32, ptr %23, align 4
  %182 = call i32 @llvm.umax.i32(i32 %181, i32 %.0140223)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %26, ptr noundef nonnull align 8 dereferenceable(92) %0, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %27, ptr noundef nonnull align 8 dereferenceable(92) %1, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %28, ptr noundef nonnull align 8 dereferenceable(92) %2, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(108) %29, ptr noundef nonnull align 8 dereferenceable(108) %3, i64 108, i1 false), !tbaa.struct !30
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %163) #12
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = invoke noundef i32 @_Z39convolution_infer_forward_tmp_bytes_arm10TensorDescS_S_20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %26, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %27, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %28, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %29, i32 noundef %184, ptr noundef nonnull %23)
          to label %186 unwind label %197

186:                                              ; preds = %180
  %.not188 = icmp eq i32 %185, 0
  br i1 %.not188, label %199, label %187

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

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

199:                                              ; preds = %186
  %200 = load i32, ptr %23, align 4
  %201 = call i32 @llvm.umax.i32(i32 %200, i32 %.0141222)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #12
  %202 = add i32 %.0142221, 1
  %203 = zext i32 %202 to i64
  %204 = call noundef i64 @_ZNKSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  %205 = icmp ugt i64 %204, %203
  br i1 %205, label %.lr.ph, label %._crit_edge, !llvm.loop !34

206:                                              ; preds = %197, %178
  %.pn185 = phi { ptr, i32 } [ %198, %197 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #12
  br label %314

207:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %31) #12
  %208 = getelementptr inbounds i8, ptr %2, i64 20
  %209 = load i32, ptr %208, align 4, !tbaa !11
  invoke void @_Z8tensor1d8DataTypej(ptr dead_on_unwind nonnull writable sret(%struct.TensorDesc) align 4 %31, i32 noundef 6, i32 noundef %209)
          to label %210 unwind label %248

210:                                              ; preds = %207
  %211 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %0)
  %212 = load i32, ptr %0, align 8, !tbaa !26
  %213 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %211, i32 noundef %212, i32 noundef 0)
          to label %214 unwind label %250

214:                                              ; preds = %210
  %215 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %1)
  %216 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %215, i32 noundef %160, i32 noundef 0)
          to label %217 unwind label %252

217:                                              ; preds = %214
  %218 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %160)
          to label %219 unwind label %254

219:                                              ; preds = %217
  %220 = udiv i32 %.0140.lcssa, %218
  %221 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %220, i32 noundef %160, i32 noundef 0)
          to label %222 unwind label %254

222:                                              ; preds = %219
  %223 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %30)
  %224 = load i32, ptr %30, align 8, !tbaa !26
  %225 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %223, i32 noundef %224, i32 noundef 0)
          to label %226 unwind label %256

226:                                              ; preds = %222
  %227 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %31)
  %228 = load i32, ptr %31, align 8, !tbaa !26
  %229 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %227, i32 noundef %228, i32 noundef 0)
          to label %230 unwind label %258

230:                                              ; preds = %226
  %231 = invoke noundef i32 @_Z7bytesOf8DataType(i32 noundef %212)
          to label %232 unwind label %260

232:                                              ; preds = %230
  %233 = udiv i32 %.0141.lcssa, %231
  %234 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %233, i32 noundef %212, i32 noundef 3)
          to label %235 unwind label %260

235:                                              ; preds = %232
  %236 = call noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %2)
  %237 = load i32, ptr %2, align 8, !tbaa !26
  %238 = invoke noundef ptr @_Z10ut_input_vj8DataType14UT_RANDOM_TYPE(i32 noundef %236, i32 noundef %237, i32 noundef 3)
          to label %239 unwind label %262

239:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %32) #12
  call void @_ZN19ActivationParamSpecC2Ev(ptr noundef nonnull align 4 dereferenceable(20) %32) #12
  store i32 1, ptr %32, align 8, !tbaa !36
  %240 = getelementptr inbounds i8, ptr %32, i64 4
  store float 0.000000e+00, ptr %240, align 4, !tbaa !38
  %241 = call noundef i64 @_ZNKSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  %.not232 = icmp eq i64 %241, 0
  br i1 %.not232, label %._crit_edge229, label %.lr.ph228

.lr.ph228:                                        ; preds = %239
  %242 = zext i32 %.0141.lcssa to i64
  br label %264

._crit_edge229.loopexit:                          ; preds = %302
  %243 = zext i32 %.1145 to i64
  br label %._crit_edge229

._crit_edge229:                                   ; preds = %._crit_edge229.loopexit, %239
  %.0144.lcssa = phi i64 [ 0, %239 ], [ %243, %._crit_edge229.loopexit ]
  call void @free(ptr noundef %213) #12
  call void @free(ptr noundef %216) #12
  call void @free(ptr noundef %221) #12
  call void @free(ptr noundef %225) #12
  call void @free(ptr noundef %229) #12
  call void @free(ptr noundef %234) #12
  call void @free(ptr noundef %238) #12
  %244 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %.0144.lcssa) #12
  %245 = load i32, ptr %244, align 4, !tbaa !9
  store i32 %245, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %32) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %31) #12
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %30) #12
  call void @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #12
  br label %315

246:                                              ; preds = %._crit_edge
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %313

248:                                              ; preds = %207
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %312

250:                                              ; preds = %210
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %312

252:                                              ; preds = %214
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %312

254:                                              ; preds = %219, %217
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %312

256:                                              ; preds = %222
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %312

258:                                              ; preds = %226
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %312

260:                                              ; preds = %232, %230
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %312

262:                                              ; preds = %235
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %312

264:                                              ; preds = %.lr.ph228, %302
  %265 = phi i64 [ 0, %.lr.ph228 ], [ %306, %302 ]
  %.0143226 = phi i32 [ 0, %.lr.ph228 ], [ %305, %302 ]
  %.0144225 = phi i32 [ 0, %.lr.ph228 ], [ %.1145, %302 ]
  call void @llvm.lifetime.start.p0(i64 92, ptr nonnull %33) #12
  call void @_ZN10TensorDescC2Ev(ptr noundef nonnull align 4 dereferenceable(92) %33) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %34, ptr noundef nonnull align 8 dereferenceable(92) %1, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(108) %35, ptr noundef nonnull align 8 dereferenceable(108) %3, i64 108, i1 false), !tbaa.struct !30
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %265) #12
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = call noundef i32 @_Z32convolution_transform_filter_arm10TensorDescPKv20ConvolutionParamSpec27ConvolutionForwardAlgorithmPS_Pv(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %34, ptr noundef %216, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %35, i32 noundef %267, ptr noundef nonnull %33, ptr noundef %221)
  %.not172 = icmp eq i32 %268, 0
  br i1 %.not172, label %279, label %269

269:                                              ; preds = %264
  %270 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %271 = trunc i64 %270 to i32
  %272 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %271)
  %273 = load ptr, ptr @stdout, align 8, !tbaa !5
  %274 = call i32 @fflush(ptr noundef %273)
  %275 = call ptr @ee2str(i32 noundef %268)
  %276 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %275)
  %277 = load ptr, ptr @stdout, align 8, !tbaa !5
  %278 = call i32 @fflush(ptr noundef %277)
  call void @exit(i32 noundef 1) #13
  unreachable

279:                                              ; preds = %264
  call void @_Z10UNI_MEMSETPvim(ptr noundef %234, i32 noundef 0, i64 noundef %242)
  %280 = invoke noundef double @_Z10ut_time_msv()
          to label %281 unwind label %296

281:                                              ; preds = %279
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %36, ptr noundef nonnull align 8 dereferenceable(92) %0, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(92) %37, ptr noundef nonnull align 4 dereferenceable(92) %33, i64 92, i1 false), !tbaa.struct !28
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(108) %38, ptr noundef nonnull align 8 dereferenceable(108) %3, i64 108, i1 false), !tbaa.struct !30
  %282 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %265) #12
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = invoke noundef i32 @_Z15convolution_arm10TensorDescPvS_PKv20ConvolutionParamSpec27ConvolutionForwardAlgorithmS_S2_S_S2_jS0_S_S0_19ActivationParamSpec4Arch(ptr noundef nonnull byval(%struct.TensorDesc) align 8 %36, ptr noundef %213, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %37, ptr noundef %221, ptr noundef nonnull byval(%struct.ConvolutionParamSpec) align 8 %38, i32 noundef %283, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %31, ptr noundef %229, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %30, ptr noundef %225, i32 noundef %.0141.lcssa, ptr noundef %234, ptr noundef nonnull byval(%struct.TensorDesc) align 8 %2, ptr noundef %238, ptr noundef nonnull byval(%struct.ActivationParamSpec) align 8 %32, i32 noundef 6)
          to label %285 unwind label %298

285:                                              ; preds = %281
  %.not173 = icmp eq i32 %284, 0
  br i1 %.not173, label %300, label %286

286:                                              ; preds = %285
  %287 = call i64 (i64, ...) @syscall(i64 noundef 186) #12
  %288 = trunc i64 %287 to i32
  %289 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %288)
  %290 = load ptr, ptr @stdout, align 8, !tbaa !5
  %291 = call i32 @fflush(ptr noundef %290)
  %292 = call ptr @ee2str(i32 noundef %284)
  %293 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %292)
  %294 = load ptr, ptr @stdout, align 8, !tbaa !5
  %295 = call i32 @fflush(ptr noundef %294)
  call void @exit(i32 noundef 1) #13
  unreachable

296:                                              ; preds = %279
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %311

298:                                              ; preds = %281
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %311

300:                                              ; preds = %285
  %301 = invoke noundef double @_Z10ut_time_msv()
          to label %302 unwind label %309

302:                                              ; preds = %300
  %303 = fsub double %301, %280
  %304 = fcmp olt double %303, 0x41DFFFFFFFC00000
  %.1145 = select i1 %304, i32 %.0143226, i32 %.0144225
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %33) #12
  %305 = add i32 %.0143226, 1
  %306 = zext i32 %305 to i64
  %307 = call noundef i64 @_ZNKSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  %308 = icmp ugt i64 %307, %306
  br i1 %308, label %264, label %._crit_edge229.loopexit, !llvm.loop !40

309:                                              ; preds = %300
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %311

311:                                              ; preds = %309, %298, %296
  %.pn = phi { ptr, i32 } [ %310, %309 ], [ %299, %298 ], [ %297, %296 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %32) #12
  br label %312

312:                                              ; preds = %250, %254, %258, %262, %311, %260, %256, %252, %248
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %249, %248 ], [ %251, %250 ], [ %253, %252 ], [ %255, %254 ], [ %257, %256 ], [ %259, %258 ], [ %261, %260 ], [ %.pn, %311 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %31) #12
  br label %313

313:                                              ; preds = %312, %246
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn, %312 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 92, ptr nonnull %30) #12
  br label %314

314:                                              ; preds = %313, %206
  %.pn185.pn = phi { ptr, i32 } [ %.pn185, %206 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %313 ]
  call void @_ZNSt6vectorI27ConvolutionForwardAlgorithmSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #12
  resume { ptr, i32 } %.pn185.pn

315:                                              ; preds = %157, %52, %._crit_edge229, %50
  %.2 = phi i32 [ 0, %50 ], [ %.0, %157 ], [ 0, %._crit_edge229 ], [ 51, %52 ]
  ret i32 %.2
}

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local ptr @ee2str(i32 noundef) local_unnamed_addr #4

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

; 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 noundef zeroext i8 @_Z10tensorIs4d10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #4

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z38convolution_transform_filter_bytes_arm10TensorDesc20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8, i32 noundef, ptr noundef) local_unnamed_addr #0

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z39convolution_infer_forward_tmp_bytes_arm10TensorDescS_S_20ConvolutionParamSpec27ConvolutionForwardAlgorithmPj(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef byval(%struct.ConvolutionParamSpec) align 8, i32 noundef, ptr noundef) local_unnamed_addr #0

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

; 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 nounwind uwtable
declare dso_local noundef i32 @_Z17tensorNumElements10TensorDesc(ptr noundef byval(%struct.TensorDesc) align 8) local_unnamed_addr #4

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z10UNI_MEMSETPvim(ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #4

declare noundef double @_Z10ut_time_msv() local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z15convolution_arm10TensorDescPvS_PKv20ConvolutionParamSpec27ConvolutionForwardAlgorithmS_S2_S_S2_jS0_S_S0_19ActivationParamSpec4Arch(ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.ConvolutionParamSpec) align 8, i32 noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, i32 noundef, ptr noundef, ptr noundef byval(%struct.TensorDesc) align 8, ptr noundef, ptr noundef byval(%struct.ActivationParamSpec) align 8, i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #11

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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"_ZTS27ConvolutionForwardAlgorithm", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 16}
!14 = !{!"_ZTS20ConvolutionParamSpec", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !15, i64 72, !16, i64 76, !16, i64 80, !7, i64 84, !17, i64 92, !12, i64 96, !12, i64 100, !12, i64 104}
!15 = !{!"_ZTS15ConvolutionMode", !7, i64 0}
!16 = !{!"_ZTS14ActivationMode", !7, i64 0}
!17 = !{!"_ZTS9RoundMode", !7, i64 0}
!18 = !{!14, !12, i64 56}
!19 = !{!14, !12, i64 32}
!20 = !{!14, !12, i64 28}
!21 = !{!22, !22, i64 0}
!22 = !{!"_ZTS10DataFormat", !7, i64 0}
!23 = !{!14, !12, i64 52}
!24 = !{!25, !25, i64 0}
!25 = !{!"_ZTS8DataType", !7, i64 0}
!26 = !{!27, !25, i64 0}
!27 = !{!"_ZTS10TensorDesc", !25, i64 0, !22, i64 4, !12, i64 8, !7, i64 12}
!28 = !{i64 0, i64 4, !24, i64 4, i64 4, !21, i64 8, i64 4, !11, i64 12, i64 80, !29}
!29 = !{!7, !7, i64 0}
!30 = !{i64 0, i64 4, !11, i64 4, i64 4, !11, i64 8, i64 4, !11, i64 12, i64 4, !11, i64 16, i64 4, !11, i64 20, i64 4, !11, i64 24, i64 4, !11, i64 28, i64 4, !11, i64 32, i64 4, !11, i64 36, i64 4, !11, i64 40, i64 4, !11, i64 44, i64 4, !11, i64 48, i64 4, !11, i64 52, i64 4, !11, i64 56, i64 4, !11, i64 60, i64 4, !11, i64 64, i64 4, !11, i64 68, i64 4, !11, i64 72, i64 4, !31, i64 76, i64 4, !32, i64 80, i64 4, !32, i64 84, i64 8, !29, i64 92, i64 4, !33, i64 96, i64 4, !11, i64 100, i64 4, !11, i64 104, i64 4, !11}
!31 = !{!15, !15, i64 0}
!32 = !{!16, !16, i64 0}
!33 = !{!17, !17, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !16, i64 0}
!37 = !{!"_ZTS19ActivationParamSpec", !16, i64 0, !7, i64 4}
!38 = !{!39, !39, i64 0}
!39 = !{!"float", !7, i64 0}
!40 = distinct !{!40, !35}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass