; LLVM IR from ermig1979/Simd :: src/Simd (SimdBaseSynetConvolution8i)

; 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.Simd::Array.0" = type { ptr, i64 }
%"class.Simd::SynetConvolution8i" = type { %"struct.Simd::Deletable", %"struct.Simd::ConvParam", %"struct.Simd::Array", %"class.std::__cxx11::basic_string", ptr, %"struct.Simd::CvtParam", %"struct.Simd::CvtParam", %"struct.Simd::Array.1", %"struct.Simd::Array.0", %"struct.Simd::Array.0", %"struct.Simd::Array.0", i8, i8, i64, i64, i64 }
%"struct.Simd::Deletable" = type { ptr }
%"struct.Simd::ConvParam" = type <{ %struct.SimdConvolutionParameters, i32, [4 x i8], i64, i32, [4 x i8] }>
%struct.SimdConvolutionParameters = type { i64, i64, i64, i32, i32, i64, i64, i64, i32, i32, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32 }
%"struct.Simd::Array" = type { ptr, i64 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.Simd::CvtParam" = type <{ %"struct.Simd::Array", %"struct.Simd::Array.0", %"struct.Simd::Array.0", %"struct.Simd::Array.0", %"struct.Simd::Array.0", i8, [3 x i8], i32, i32, i32, i32, [4 x i8] }>
%"struct.Simd::Array.1" = type { ptr, i64 }

@.str.1 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@__PRETTY_FUNCTION__._ZN4Simd18SynetConvolution8i9SetParamsEPKfS2_S2_PKS2_ = external hidden unnamed_addr constant [116 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Simd8CvtParam4InitEPKfS2_m26SimdSynetCompatibilityType(ptr noundef nonnull align 8 dereferenceable(100), ptr noundef, ptr noundef, i64 noundef, i32 noundef) #0 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIfE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) #1 align 2

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #4 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Simd18SynetConvolution8i9SetParamsEPKfS2_S2_PKS2_(ptr noundef nonnull align 8 dereferenceable(552) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %"struct.Simd::Array.0", align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca i64, align 8
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i32, align 4
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i32, align 4
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  %53 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %54 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 1
  store ptr %54, ptr %11, align 8, !tbaa !5
  %55 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %56 = load ptr, ptr %10, align 8, !tbaa !5
  %57 = getelementptr inbounds ptr, ptr %56, i64 0
  %58 = load ptr, ptr %57, align 8, !tbaa !5
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = getelementptr inbounds ptr, ptr %59, i64 1
  %61 = load ptr, ptr %60, align 8, !tbaa !5
  %62 = load ptr, ptr %11, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %62, i32 0, i32 0
  %64 = load i64, ptr %63, align 8, !tbaa !9
  %65 = load ptr, ptr %11, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.Simd::ConvParam", ptr %65, i32 0, i32 4
  %67 = load i32, ptr %66, align 8, !tbaa !15
  call void @_ZN4Simd8CvtParam4InitEPKfS2_m26SimdSynetCompatibilityType(ptr noundef nonnull align 8 dereferenceable(100) %55, ptr noundef %58, ptr noundef %61, i64 noundef %64, i32 noundef %67)
  %68 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 6
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = getelementptr inbounds ptr, ptr %69, i64 2
  %71 = load ptr, ptr %70, align 8, !tbaa !5
  %72 = load ptr, ptr %10, align 8, !tbaa !5
  %73 = getelementptr inbounds ptr, ptr %72, i64 3
  %74 = load ptr, ptr %73, align 8, !tbaa !5
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %75, i32 0, i32 5
  %77 = load i64, ptr %76, align 8, !tbaa !19
  %78 = load ptr, ptr %11, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.Simd::ConvParam", ptr %78, i32 0, i32 4
  %80 = load i32, ptr %79, align 8, !tbaa !15
  call void @_ZN4Simd8CvtParam4InitEPKfS2_m26SimdSynetCompatibilityType(ptr noundef nonnull align 8 dereferenceable(100) %68, ptr noundef %71, ptr noundef %74, i64 noundef %77, i32 noundef %80)
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %81 = load ptr, ptr %11, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %81, i32 0, i32 20
  %83 = load i64, ptr %82, align 8, !tbaa !20
  store i64 %83, ptr %12, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %84, i32 0, i32 5
  %86 = load i64, ptr %85, align 8, !tbaa !19
  %87 = load i64, ptr %12, align 8, !tbaa !21
  %88 = udiv i64 %86, %87
  store i64 %88, ptr %13, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %89 = load ptr, ptr %11, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %89, i32 0, i32 0
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = load i64, ptr %12, align 8, !tbaa !21
  %93 = udiv i64 %91, %92
  store i64 %93, ptr %14, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %94, i32 0, i32 10
  %96 = load i64, ptr %95, align 8, !tbaa !22
  %97 = load ptr, ptr %11, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %97, i32 0, i32 11
  %99 = load i64, ptr %98, align 8, !tbaa !23
  %100 = mul i64 %96, %99
  store i64 %100, ptr %15, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %101 = load i64, ptr %14, align 8, !tbaa !21
  %102 = load i64, ptr %15, align 8, !tbaa !21
  %103 = mul i64 %101, %102
  store i64 %103, ptr %16, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %104 = load i64, ptr %12, align 8, !tbaa !21
  %105 = load i64, ptr %13, align 8, !tbaa !21
  %106 = mul i64 %104, %105
  store i64 %106, ptr %17, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #7
  %107 = load i64, ptr %16, align 8, !tbaa !21
  call void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef %107, i1 noundef zeroext false, i64 noundef 8)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %108, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %109, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %110 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %111 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %110, i32 0, i32 1
  %112 = getelementptr inbounds %"struct.Simd::Array.0", ptr %111, i32 0, i32 0
  %113 = load ptr, ptr %112, align 8, !tbaa !24
  store ptr %113, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %114 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %115 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %114, i32 0, i32 2
  %116 = getelementptr inbounds %"struct.Simd::Array.0", ptr %115, i32 0, i32 0
  %117 = load ptr, ptr %116, align 8, !tbaa !35
  store ptr %117, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %118 = getelementptr inbounds %"struct.Simd::Array.0", ptr %18, i32 0, i32 0
  %119 = load ptr, ptr %118, align 8, !tbaa !36
  store ptr %119, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %120 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 7
  %121 = getelementptr inbounds %"struct.Simd::Array.1", ptr %120, i32 0, i32 0
  %122 = load ptr, ptr %121, align 8, !tbaa !37
  store ptr %122, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %123 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 8
  %124 = getelementptr inbounds %"struct.Simd::Array.0", ptr %123, i32 0, i32 0
  %125 = load ptr, ptr %124, align 8, !tbaa !38
  store ptr %125, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %126 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 9
  %127 = getelementptr inbounds %"struct.Simd::Array.0", ptr %126, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8, !tbaa !39
  store ptr %128, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  %129 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %130 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %129, i32 0, i32 5
  %131 = load i8, ptr %130, align 8, !tbaa !40, !range !41, !noundef !42
  %132 = trunc i8 %131 to i1
  br i1 %132, label %133, label %139

133:                                              ; preds = %5
  %134 = load ptr, ptr %11, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.Simd::ConvParam", ptr %134, i32 0, i32 4
  %136 = load i32, ptr %135, align 8, !tbaa !15
  %137 = invoke noundef zeroext i1 @_ZN4Simd4Base8OverflowE26SimdSynetCompatibilityType(i32 noundef %136)
          to label %138 unwind label %147

138:                                              ; preds = %133
  br label %139

139:                                              ; preds = %138, %5
  %140 = phi i1 [ false, %5 ], [ %137, %138 ]
  %141 = zext i1 %140 to i8
  store i8 %141, ptr %27, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store i64 0, ptr %30, align 8, !tbaa !21
  br label %142

142:                                              ; preds = %614, %139
  %143 = load i64, ptr %30, align 8, !tbaa !21
  %144 = load i64, ptr %12, align 8, !tbaa !21
  %145 = icmp ult i64 %143, %144
  br i1 %145, label %151, label %146

146:                                              ; preds = %142
  store i32 2, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %617

147:                                              ; preds = %756, %749, %743, %736, %729, %723, %716, %684, %678, %650, %647, %643, %640, %633, %627, %133
  %148 = landingpad { ptr, i32 }
          cleanup
  %149 = extractvalue { ptr, i32 } %148, 0
  store ptr %149, ptr %28, align 8
  %150 = extractvalue { ptr, i32 } %148, 1
  store i32 %150, ptr %29, align 4
  br label %765

151:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  store i64 0, ptr %32, align 8, !tbaa !21
  br label %152

152:                                              ; preds = %567, %151
  %153 = load i64, ptr %32, align 8, !tbaa !21
  %154 = load i64, ptr %13, align 8, !tbaa !21
  %155 = icmp ult i64 %153, %154
  br i1 %155, label %157, label %156

156:                                              ; preds = %152
  store i32 5, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %571

157:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store float 0.000000e+00, ptr %33, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store float 0x47EFFFFFE0000000, ptr %34, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store float 0xC7EFFFFFE0000000, ptr %35, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  store float 1.000000e+00, ptr %36, align 4, !tbaa !44
  %158 = load ptr, ptr %11, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.Simd::ConvParam", ptr %158, i32 0, i32 1
  %160 = load i32, ptr %159, align 8, !tbaa !46
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %353

162:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store i64 0, ptr %37, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store i64 0, ptr %38, align 8, !tbaa !21
  br label %163

163:                                              ; preds = %215, %162
  %164 = load i64, ptr %37, align 8, !tbaa !21
  %165 = load i64, ptr %15, align 8, !tbaa !21
  %166 = icmp ult i64 %164, %165
  br i1 %166, label %168, label %167

167:                                              ; preds = %163
  store i32 8, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %218

168:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  store i64 0, ptr %39, align 8, !tbaa !21
  br label %169

169:                                              ; preds = %205, %168
  %170 = load i64, ptr %39, align 8, !tbaa !21
  %171 = load i64, ptr %14, align 8, !tbaa !21
  %172 = icmp ult i64 %170, %171
  br i1 %172, label %174, label %173

173:                                              ; preds = %169
  store i32 11, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  br label %214

174:                                              ; preds = %169
  %175 = load ptr, ptr %19, align 8, !tbaa !5
  %176 = load i64, ptr %38, align 8, !tbaa !21
  %177 = load i64, ptr %17, align 8, !tbaa !21
  %178 = mul i64 %176, %177
  %179 = load i64, ptr %32, align 8, !tbaa !21
  %180 = add i64 %178, %179
  %181 = getelementptr inbounds float, ptr %175, i64 %180
  %182 = load float, ptr %181, align 4, !tbaa !44
  %183 = load ptr, ptr %21, align 8, !tbaa !5
  %184 = load i64, ptr %39, align 8, !tbaa !21
  %185 = getelementptr inbounds float, ptr %183, i64 %184
  %186 = load float, ptr %185, align 4, !tbaa !44
  %187 = fdiv float %182, %186
  %188 = load ptr, ptr %23, align 8, !tbaa !5
  %189 = load i64, ptr %38, align 8, !tbaa !21
  %190 = getelementptr inbounds float, ptr %188, i64 %189
  store float %187, ptr %190, align 4, !tbaa !44
  %191 = load float, ptr %34, align 4, !tbaa !44
  %192 = load ptr, ptr %23, align 8, !tbaa !5
  %193 = load i64, ptr %38, align 8, !tbaa !21
  %194 = getelementptr inbounds float, ptr %192, i64 %193
  %195 = load float, ptr %194, align 4, !tbaa !44
  %196 = invoke noundef float @_ZN4Simd3MinIfEET_S1_S1_(float noundef %191, float noundef %195)
          to label %197 unwind label %210

197:                                              ; preds = %174
  store float %196, ptr %34, align 4, !tbaa !44
  %198 = load float, ptr %35, align 4, !tbaa !44
  %199 = load ptr, ptr %23, align 8, !tbaa !5
  %200 = load i64, ptr %38, align 8, !tbaa !21
  %201 = getelementptr inbounds float, ptr %199, i64 %200
  %202 = load float, ptr %201, align 4, !tbaa !44
  %203 = invoke noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %198, float noundef %202)
          to label %204 unwind label %210

204:                                              ; preds = %197
  store float %203, ptr %35, align 4, !tbaa !44
  br label %205

205:                                              ; preds = %204
  %206 = load i64, ptr %39, align 8, !tbaa !21
  %207 = add i64 %206, 1
  store i64 %207, ptr %39, align 8, !tbaa !21
  %208 = load i64, ptr %38, align 8, !tbaa !21
  %209 = add i64 %208, 1
  store i64 %209, ptr %38, align 8, !tbaa !21
  br label %169, !llvm.loop !47

210:                                              ; preds = %197, %174
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %28, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %570

214:                                              ; preds = %173
  br label %215

215:                                              ; preds = %214
  %216 = load i64, ptr %37, align 8, !tbaa !21
  %217 = add i64 %216, 1
  store i64 %217, ptr %37, align 8, !tbaa !21
  br label %163, !llvm.loop !49

218:                                              ; preds = %167
  %219 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %220 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %219, i32 0, i32 8
  %221 = load i32, ptr %220, align 8, !tbaa !50
  %222 = sitofp i32 %221 to float
  %223 = load float, ptr %35, align 4, !tbaa !44
  %224 = invoke noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %223)
          to label %225 unwind label %237

225:                                              ; preds = %218
  %226 = load float, ptr %34, align 4, !tbaa !44
  %227 = invoke noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %226)
          to label %228 unwind label %237

228:                                              ; preds = %225
  %229 = invoke noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %224, float noundef %227)
          to label %230 unwind label %237

230:                                              ; preds = %228
  %231 = fdiv float %222, %229
  store float %231, ptr %36, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  store i64 0, ptr %40, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store i64 0, ptr %41, align 8, !tbaa !21
  br label %232

232:                                              ; preds = %349, %230
  %233 = load i64, ptr %40, align 8, !tbaa !21
  %234 = load i64, ptr %15, align 8, !tbaa !21
  %235 = icmp ult i64 %233, %234
  br i1 %235, label %241, label %236

236:                                              ; preds = %232
  store i32 14, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %352

237:                                              ; preds = %419, %416, %409, %228, %225, %218
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %28, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %29, align 4
  br label %570

241:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store i64 0, ptr %42, align 8, !tbaa !21
  br label %242

242:                                              ; preds = %342, %241
  %243 = load i64, ptr %42, align 8, !tbaa !21
  %244 = load i64, ptr %14, align 8, !tbaa !21
  %245 = icmp ult i64 %243, %244
  br i1 %245, label %247, label %246

246:                                              ; preds = %242
  store i32 17, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %348

247:                                              ; preds = %242
  %248 = load i8, ptr %27, align 1, !tbaa !43, !range !41, !noundef !42
  %249 = trunc i8 %248 to i1
  br i1 %249, label %250, label %299

250:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %251 = load ptr, ptr %23, align 8, !tbaa !5
  %252 = load i64, ptr %41, align 8, !tbaa !21
  %253 = getelementptr inbounds float, ptr %251, i64 %252
  %254 = load float, ptr %253, align 4, !tbaa !44
  %255 = load float, ptr %36, align 4, !tbaa !44
  %256 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %257 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %256, i32 0, i32 7
  %258 = load i32, ptr %257, align 4, !tbaa !51
  %259 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %260 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %259, i32 0, i32 8
  %261 = load i32, ptr %260, align 8, !tbaa !50
  %262 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %254, float noundef %255, float noundef 0.000000e+00, i32 noundef %258, i32 noundef %261)
          to label %263 unwind label %275

263:                                              ; preds = %250
  %264 = sext i8 %262 to i32
  store i32 %264, ptr %43, align 4, !tbaa !52
  %265 = load i32, ptr %43, align 4, !tbaa !52
  %266 = and i32 %265, 1
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %268, label %279

268:                                              ; preds = %263
  %269 = load i32, ptr %43, align 4, !tbaa !52
  %270 = sitofp i32 %269 to float
  %271 = fmul float %270, 2.500000e-01
  %272 = invoke noundef i32 @_ZN4Simd5RoundEf(float noundef %271)
          to label %273 unwind label %275

273:                                              ; preds = %268
  %274 = mul nsw i32 %272, 4
  store i32 %274, ptr %43, align 4, !tbaa !52
  br label %279

275:                                              ; preds = %268, %250
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %28, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %347

279:                                              ; preds = %273, %263
  %280 = load i32, ptr %43, align 4, !tbaa !52
  %281 = sdiv i32 %280, 2
  %282 = trunc i32 %281 to i8
  %283 = load ptr, ptr %24, align 8, !tbaa !5
  %284 = load i64, ptr %41, align 8, !tbaa !21
  %285 = load i64, ptr %17, align 8, !tbaa !21
  %286 = mul i64 %284, %285
  %287 = load i64, ptr %32, align 8, !tbaa !21
  %288 = add i64 %286, %287
  %289 = getelementptr inbounds i8, ptr %283, i64 %288
  store i8 %282, ptr %289, align 1, !tbaa !53
  %290 = load i32, ptr %43, align 4, !tbaa !52
  %291 = sitofp i32 %290 to float
  %292 = load ptr, ptr %22, align 8, !tbaa !5
  %293 = load i64, ptr %42, align 8, !tbaa !21
  %294 = getelementptr inbounds float, ptr %292, i64 %293
  %295 = load float, ptr %294, align 4, !tbaa !44
  %296 = load float, ptr %33, align 4, !tbaa !44
  %297 = fneg float %291
  %298 = call float @llvm.fmuladd.f32(float %297, float %295, float %296)
  store float %298, ptr %33, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %341

299:                                              ; preds = %247
  %300 = load ptr, ptr %23, align 8, !tbaa !5
  %301 = load i64, ptr %41, align 8, !tbaa !21
  %302 = getelementptr inbounds float, ptr %300, i64 %301
  %303 = load float, ptr %302, align 4, !tbaa !44
  %304 = load float, ptr %36, align 4, !tbaa !44
  %305 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %306 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %305, i32 0, i32 7
  %307 = load i32, ptr %306, align 4, !tbaa !51
  %308 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %309 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %308, i32 0, i32 8
  %310 = load i32, ptr %309, align 8, !tbaa !50
  %311 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %303, float noundef %304, float noundef 0.000000e+00, i32 noundef %307, i32 noundef %310)
          to label %312 unwind label %337

312:                                              ; preds = %299
  %313 = load ptr, ptr %24, align 8, !tbaa !5
  %314 = load i64, ptr %41, align 8, !tbaa !21
  %315 = load i64, ptr %17, align 8, !tbaa !21
  %316 = mul i64 %314, %315
  %317 = load i64, ptr %32, align 8, !tbaa !21
  %318 = add i64 %316, %317
  %319 = getelementptr inbounds i8, ptr %313, i64 %318
  store i8 %311, ptr %319, align 1, !tbaa !53
  %320 = load ptr, ptr %24, align 8, !tbaa !5
  %321 = load i64, ptr %41, align 8, !tbaa !21
  %322 = load i64, ptr %17, align 8, !tbaa !21
  %323 = mul i64 %321, %322
  %324 = load i64, ptr %32, align 8, !tbaa !21
  %325 = add i64 %323, %324
  %326 = getelementptr inbounds i8, ptr %320, i64 %325
  %327 = load i8, ptr %326, align 1, !tbaa !53
  %328 = sext i8 %327 to i32
  %329 = sitofp i32 %328 to float
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = load i64, ptr %42, align 8, !tbaa !21
  %332 = getelementptr inbounds float, ptr %330, i64 %331
  %333 = load float, ptr %332, align 4, !tbaa !44
  %334 = load float, ptr %33, align 4, !tbaa !44
  %335 = fneg float %329
  %336 = call float @llvm.fmuladd.f32(float %335, float %333, float %334)
  store float %336, ptr %33, align 4, !tbaa !44
  br label %341

337:                                              ; preds = %299
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %28, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %29, align 4
  br label %347

341:                                              ; preds = %312, %279
  br label %342

342:                                              ; preds = %341
  %343 = load i64, ptr %42, align 8, !tbaa !21
  %344 = add i64 %343, 1
  store i64 %344, ptr %42, align 8, !tbaa !21
  %345 = load i64, ptr %41, align 8, !tbaa !21
  %346 = add i64 %345, 1
  store i64 %346, ptr %41, align 8, !tbaa !21
  br label %242, !llvm.loop !54

347:                                              ; preds = %337, %275
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %570

348:                                              ; preds = %246
  br label %349

349:                                              ; preds = %348
  %350 = load i64, ptr %40, align 8, !tbaa !21
  %351 = add i64 %350, 1
  store i64 %351, ptr %40, align 8, !tbaa !21
  br label %232, !llvm.loop !55

352:                                              ; preds = %236
  br label %540

353:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  store i64 0, ptr %44, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store i64 0, ptr %45, align 8, !tbaa !21
  br label %354

354:                                              ; preds = %406, %353
  %355 = load i64, ptr %44, align 8, !tbaa !21
  %356 = load i64, ptr %14, align 8, !tbaa !21
  %357 = icmp ult i64 %355, %356
  br i1 %357, label %359, label %358

358:                                              ; preds = %354
  store i32 20, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %409

359:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store i64 0, ptr %46, align 8, !tbaa !21
  br label %360

360:                                              ; preds = %396, %359
  %361 = load i64, ptr %46, align 8, !tbaa !21
  %362 = load i64, ptr %15, align 8, !tbaa !21
  %363 = icmp ult i64 %361, %362
  br i1 %363, label %365, label %364

364:                                              ; preds = %360
  store i32 23, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %405

365:                                              ; preds = %360
  %366 = load ptr, ptr %19, align 8, !tbaa !5
  %367 = load i64, ptr %32, align 8, !tbaa !21
  %368 = load i64, ptr %16, align 8, !tbaa !21
  %369 = mul i64 %367, %368
  %370 = load i64, ptr %45, align 8, !tbaa !21
  %371 = add i64 %369, %370
  %372 = getelementptr inbounds float, ptr %366, i64 %371
  %373 = load float, ptr %372, align 4, !tbaa !44
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = load i64, ptr %44, align 8, !tbaa !21
  %376 = getelementptr inbounds float, ptr %374, i64 %375
  %377 = load float, ptr %376, align 4, !tbaa !44
  %378 = fdiv float %373, %377
  %379 = load ptr, ptr %23, align 8, !tbaa !5
  %380 = load i64, ptr %45, align 8, !tbaa !21
  %381 = getelementptr inbounds float, ptr %379, i64 %380
  store float %378, ptr %381, align 4, !tbaa !44
  %382 = load float, ptr %34, align 4, !tbaa !44
  %383 = load ptr, ptr %23, align 8, !tbaa !5
  %384 = load i64, ptr %45, align 8, !tbaa !21
  %385 = getelementptr inbounds float, ptr %383, i64 %384
  %386 = load float, ptr %385, align 4, !tbaa !44
  %387 = invoke noundef float @_ZN4Simd3MinIfEET_S1_S1_(float noundef %382, float noundef %386)
          to label %388 unwind label %401

388:                                              ; preds = %365
  store float %387, ptr %34, align 4, !tbaa !44
  %389 = load float, ptr %35, align 4, !tbaa !44
  %390 = load ptr, ptr %23, align 8, !tbaa !5
  %391 = load i64, ptr %45, align 8, !tbaa !21
  %392 = getelementptr inbounds float, ptr %390, i64 %391
  %393 = load float, ptr %392, align 4, !tbaa !44
  %394 = invoke noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %389, float noundef %393)
          to label %395 unwind label %401

395:                                              ; preds = %388
  store float %394, ptr %35, align 4, !tbaa !44
  br label %396

396:                                              ; preds = %395
  %397 = load i64, ptr %46, align 8, !tbaa !21
  %398 = add i64 %397, 1
  store i64 %398, ptr %46, align 8, !tbaa !21
  %399 = load i64, ptr %45, align 8, !tbaa !21
  %400 = add i64 %399, 1
  store i64 %400, ptr %45, align 8, !tbaa !21
  br label %360, !llvm.loop !56

401:                                              ; preds = %388, %365
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %28, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %570

405:                                              ; preds = %364
  br label %406

406:                                              ; preds = %405
  %407 = load i64, ptr %44, align 8, !tbaa !21
  %408 = add i64 %407, 1
  store i64 %408, ptr %44, align 8, !tbaa !21
  br label %354, !llvm.loop !57

409:                                              ; preds = %358
  %410 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %411 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %410, i32 0, i32 8
  %412 = load i32, ptr %411, align 8, !tbaa !50
  %413 = sitofp i32 %412 to float
  %414 = load float, ptr %35, align 4, !tbaa !44
  %415 = invoke noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %414)
          to label %416 unwind label %237

416:                                              ; preds = %409
  %417 = load float, ptr %34, align 4, !tbaa !44
  %418 = invoke noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %417)
          to label %419 unwind label %237

419:                                              ; preds = %416
  %420 = invoke noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %415, float noundef %418)
          to label %421 unwind label %237

421:                                              ; preds = %419
  %422 = fdiv float %413, %420
  store float %422, ptr %36, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store i64 0, ptr %47, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  store i64 0, ptr %48, align 8, !tbaa !21
  br label %423

423:                                              ; preds = %536, %421
  %424 = load i64, ptr %47, align 8, !tbaa !21
  %425 = load i64, ptr %14, align 8, !tbaa !21
  %426 = icmp ult i64 %424, %425
  br i1 %426, label %428, label %427

427:                                              ; preds = %423
  store i32 26, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %539

428:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  store i64 0, ptr %49, align 8, !tbaa !21
  br label %429

429:                                              ; preds = %529, %428
  %430 = load i64, ptr %49, align 8, !tbaa !21
  %431 = load i64, ptr %15, align 8, !tbaa !21
  %432 = icmp ult i64 %430, %431
  br i1 %432, label %434, label %433

433:                                              ; preds = %429
  store i32 29, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %535

434:                                              ; preds = %429
  %435 = load i8, ptr %27, align 1, !tbaa !43, !range !41, !noundef !42
  %436 = trunc i8 %435 to i1
  br i1 %436, label %437, label %486

437:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  %438 = load ptr, ptr %23, align 8, !tbaa !5
  %439 = load i64, ptr %48, align 8, !tbaa !21
  %440 = getelementptr inbounds float, ptr %438, i64 %439
  %441 = load float, ptr %440, align 4, !tbaa !44
  %442 = load float, ptr %36, align 4, !tbaa !44
  %443 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %444 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %443, i32 0, i32 7
  %445 = load i32, ptr %444, align 4, !tbaa !51
  %446 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %447 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %446, i32 0, i32 8
  %448 = load i32, ptr %447, align 8, !tbaa !50
  %449 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %441, float noundef %442, float noundef 0.000000e+00, i32 noundef %445, i32 noundef %448)
          to label %450 unwind label %462

450:                                              ; preds = %437
  %451 = sext i8 %449 to i32
  store i32 %451, ptr %50, align 4, !tbaa !52
  %452 = load i32, ptr %50, align 4, !tbaa !52
  %453 = and i32 %452, 1
  %454 = icmp ne i32 %453, 0
  br i1 %454, label %455, label %466

455:                                              ; preds = %450
  %456 = load i32, ptr %50, align 4, !tbaa !52
  %457 = sitofp i32 %456 to float
  %458 = fmul float %457, 2.500000e-01
  %459 = invoke noundef i32 @_ZN4Simd5RoundEf(float noundef %458)
          to label %460 unwind label %462

460:                                              ; preds = %455
  %461 = mul nsw i32 %459, 4
  store i32 %461, ptr %50, align 4, !tbaa !52
  br label %466

462:                                              ; preds = %455, %437
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %28, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  br label %534

466:                                              ; preds = %460, %450
  %467 = load i32, ptr %50, align 4, !tbaa !52
  %468 = sdiv i32 %467, 2
  %469 = trunc i32 %468 to i8
  %470 = load ptr, ptr %24, align 8, !tbaa !5
  %471 = load i64, ptr %32, align 8, !tbaa !21
  %472 = load i64, ptr %16, align 8, !tbaa !21
  %473 = mul i64 %471, %472
  %474 = load i64, ptr %48, align 8, !tbaa !21
  %475 = add i64 %473, %474
  %476 = getelementptr inbounds i8, ptr %470, i64 %475
  store i8 %469, ptr %476, align 1, !tbaa !53
  %477 = load i32, ptr %50, align 4, !tbaa !52
  %478 = sitofp i32 %477 to float
  %479 = load ptr, ptr %22, align 8, !tbaa !5
  %480 = load i64, ptr %47, align 8, !tbaa !21
  %481 = getelementptr inbounds float, ptr %479, i64 %480
  %482 = load float, ptr %481, align 4, !tbaa !44
  %483 = load float, ptr %33, align 4, !tbaa !44
  %484 = fneg float %478
  %485 = call float @llvm.fmuladd.f32(float %484, float %482, float %483)
  store float %485, ptr %33, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  br label %528

486:                                              ; preds = %434
  %487 = load ptr, ptr %23, align 8, !tbaa !5
  %488 = load i64, ptr %48, align 8, !tbaa !21
  %489 = getelementptr inbounds float, ptr %487, i64 %488
  %490 = load float, ptr %489, align 4, !tbaa !44
  %491 = load float, ptr %36, align 4, !tbaa !44
  %492 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %493 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %492, i32 0, i32 7
  %494 = load i32, ptr %493, align 4, !tbaa !51
  %495 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 5
  %496 = getelementptr inbounds %"struct.Simd::CvtParam", ptr %495, i32 0, i32 8
  %497 = load i32, ptr %496, align 8, !tbaa !50
  %498 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %490, float noundef %491, float noundef 0.000000e+00, i32 noundef %494, i32 noundef %497)
          to label %499 unwind label %524

499:                                              ; preds = %486
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load i64, ptr %32, align 8, !tbaa !21
  %502 = load i64, ptr %16, align 8, !tbaa !21
  %503 = mul i64 %501, %502
  %504 = load i64, ptr %48, align 8, !tbaa !21
  %505 = add i64 %503, %504
  %506 = getelementptr inbounds i8, ptr %500, i64 %505
  store i8 %498, ptr %506, align 1, !tbaa !53
  %507 = load ptr, ptr %24, align 8, !tbaa !5
  %508 = load i64, ptr %32, align 8, !tbaa !21
  %509 = load i64, ptr %16, align 8, !tbaa !21
  %510 = mul i64 %508, %509
  %511 = load i64, ptr %48, align 8, !tbaa !21
  %512 = add i64 %510, %511
  %513 = getelementptr inbounds i8, ptr %507, i64 %512
  %514 = load i8, ptr %513, align 1, !tbaa !53
  %515 = sext i8 %514 to i32
  %516 = sitofp i32 %515 to float
  %517 = load ptr, ptr %22, align 8, !tbaa !5
  %518 = load i64, ptr %47, align 8, !tbaa !21
  %519 = getelementptr inbounds float, ptr %517, i64 %518
  %520 = load float, ptr %519, align 4, !tbaa !44
  %521 = load float, ptr %33, align 4, !tbaa !44
  %522 = fneg float %516
  %523 = call float @llvm.fmuladd.f32(float %522, float %520, float %521)
  store float %523, ptr %33, align 4, !tbaa !44
  br label %528

524:                                              ; preds = %486
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %28, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %29, align 4
  br label %534

528:                                              ; preds = %499, %466
  br label %529

529:                                              ; preds = %528
  %530 = load i64, ptr %49, align 8, !tbaa !21
  %531 = add i64 %530, 1
  store i64 %531, ptr %49, align 8, !tbaa !21
  %532 = load i64, ptr %48, align 8, !tbaa !21
  %533 = add i64 %532, 1
  store i64 %533, ptr %48, align 8, !tbaa !21
  br label %429, !llvm.loop !58

534:                                              ; preds = %524, %462
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %570

535:                                              ; preds = %433
  br label %536

536:                                              ; preds = %535
  %537 = load i64, ptr %47, align 8, !tbaa !21
  %538 = add i64 %537, 1
  store i64 %538, ptr %47, align 8, !tbaa !21
  br label %423, !llvm.loop !59

539:                                              ; preds = %427
  br label %540

540:                                              ; preds = %539, %352
  %541 = load i8, ptr %27, align 1, !tbaa !43, !range !41, !noundef !42
  %542 = trunc i8 %541 to i1
  %543 = zext i1 %542 to i64
  %544 = select i1 %542, float 2.000000e+00, float 1.000000e+00
  %545 = load float, ptr %36, align 4, !tbaa !44
  %546 = fdiv float %544, %545
  %547 = load ptr, ptr %25, align 8, !tbaa !5
  %548 = load i64, ptr %32, align 8, !tbaa !21
  %549 = getelementptr inbounds float, ptr %547, i64 %548
  store float %546, ptr %549, align 4, !tbaa !44
  %550 = load ptr, ptr %20, align 8, !tbaa !5
  %551 = icmp ne ptr %550, null
  br i1 %551, label %552, label %557

552:                                              ; preds = %540
  %553 = load ptr, ptr %20, align 8, !tbaa !5
  %554 = load i64, ptr %32, align 8, !tbaa !21
  %555 = getelementptr inbounds float, ptr %553, i64 %554
  %556 = load float, ptr %555, align 4, !tbaa !44
  br label %558

557:                                              ; preds = %540
  br label %558

558:                                              ; preds = %557, %552
  %559 = phi float [ %556, %552 ], [ 0.000000e+00, %557 ]
  %560 = load float, ptr %33, align 4, !tbaa !44
  %561 = load float, ptr %36, align 4, !tbaa !44
  %562 = fdiv float %560, %561
  %563 = fadd float %559, %562
  %564 = load ptr, ptr %26, align 8, !tbaa !5
  %565 = load i64, ptr %32, align 8, !tbaa !21
  %566 = getelementptr inbounds float, ptr %564, i64 %565
  store float %563, ptr %566, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %567

567:                                              ; preds = %558
  %568 = load i64, ptr %32, align 8, !tbaa !21
  %569 = add i64 %568, 1
  store i64 %569, ptr %32, align 8, !tbaa !21
  br label %152, !llvm.loop !60

570:                                              ; preds = %534, %401, %347, %237, %210
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %765

571:                                              ; preds = %156
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.Simd::ConvParam", ptr %572, i32 0, i32 1
  %574 = load i32, ptr %573, align 8, !tbaa !46
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %576, label %583

576:                                              ; preds = %571
  %577 = load i64, ptr %13, align 8, !tbaa !21
  %578 = load ptr, ptr %19, align 8, !tbaa !5
  %579 = getelementptr inbounds float, ptr %578, i64 %577
  store ptr %579, ptr %19, align 8, !tbaa !5
  %580 = load i64, ptr %13, align 8, !tbaa !21
  %581 = load ptr, ptr %24, align 8, !tbaa !5
  %582 = getelementptr inbounds i8, ptr %581, i64 %580
  store ptr %582, ptr %24, align 8, !tbaa !5
  br label %594

583:                                              ; preds = %571
  %584 = load i64, ptr %16, align 8, !tbaa !21
  %585 = load i64, ptr %13, align 8, !tbaa !21
  %586 = mul i64 %584, %585
  %587 = load ptr, ptr %19, align 8, !tbaa !5
  %588 = getelementptr inbounds float, ptr %587, i64 %586
  store ptr %588, ptr %19, align 8, !tbaa !5
  %589 = load i64, ptr %16, align 8, !tbaa !21
  %590 = load i64, ptr %13, align 8, !tbaa !21
  %591 = mul i64 %589, %590
  %592 = load ptr, ptr %24, align 8, !tbaa !5
  %593 = getelementptr inbounds i8, ptr %592, i64 %591
  store ptr %593, ptr %24, align 8, !tbaa !5
  br label %594

594:                                              ; preds = %583, %576
  %595 = load ptr, ptr %20, align 8, !tbaa !5
  %596 = icmp ne ptr %595, null
  br i1 %596, label %597, label %601

597:                                              ; preds = %594
  %598 = load i64, ptr %13, align 8, !tbaa !21
  %599 = load ptr, ptr %20, align 8, !tbaa !5
  %600 = getelementptr inbounds float, ptr %599, i64 %598
  store ptr %600, ptr %20, align 8, !tbaa !5
  br label %601

601:                                              ; preds = %597, %594
  %602 = load i64, ptr %14, align 8, !tbaa !21
  %603 = load ptr, ptr %21, align 8, !tbaa !5
  %604 = getelementptr inbounds float, ptr %603, i64 %602
  store ptr %604, ptr %21, align 8, !tbaa !5
  %605 = load i64, ptr %14, align 8, !tbaa !21
  %606 = load ptr, ptr %22, align 8, !tbaa !5
  %607 = getelementptr inbounds float, ptr %606, i64 %605
  store ptr %607, ptr %22, align 8, !tbaa !5
  %608 = load i64, ptr %13, align 8, !tbaa !21
  %609 = load ptr, ptr %25, align 8, !tbaa !5
  %610 = getelementptr inbounds float, ptr %609, i64 %608
  store ptr %610, ptr %25, align 8, !tbaa !5
  %611 = load i64, ptr %13, align 8, !tbaa !21
  %612 = load ptr, ptr %26, align 8, !tbaa !5
  %613 = getelementptr inbounds float, ptr %612, i64 %611
  store ptr %613, ptr %26, align 8, !tbaa !5
  br label %614

614:                                              ; preds = %601
  %615 = load i64, ptr %30, align 8, !tbaa !21
  %616 = add i64 %615, 1
  store i64 %616, ptr %30, align 8, !tbaa !21
  br label %142, !llvm.loop !61

617:                                              ; preds = %146
  %618 = load ptr, ptr %11, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %618, i32 0, i32 21
  %620 = load i32, ptr %619, align 8, !tbaa !62
  %621 = icmp eq i32 %620, 2
  br i1 %621, label %627, label %622

622:                                              ; preds = %617
  %623 = load ptr, ptr %11, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %623, i32 0, i32 21
  %625 = load i32, ptr %624, align 8, !tbaa !62
  %626 = icmp eq i32 %625, 4
  br i1 %626, label %627, label %633

627:                                              ; preds = %622, %617
  %628 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %629 = load ptr, ptr %11, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %629, i32 0, i32 5
  %631 = load i64, ptr %630, align 8, !tbaa !19
  invoke void @_ZN4Simd5ArrayIfE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %628, i64 noundef %631, i1 noundef zeroext false, i64 noundef 8)
          to label %632 unwind label %147

632:                                              ; preds = %627
  br label %636

633:                                              ; preds = %622
  %634 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  invoke void @_ZN4Simd5ArrayIfE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %634, i64 noundef 2, i1 noundef zeroext false, i64 noundef 8)
          to label %635 unwind label %147

635:                                              ; preds = %633
  br label %636

636:                                              ; preds = %635, %632
  %637 = load ptr, ptr %11, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %637, i32 0, i32 21
  %639 = load i32, ptr %638, align 8, !tbaa !62
  switch i32 %639, label %763 [
    i32 0, label %640
    i32 1, label %647
    i32 2, label %654
    i32 3, label %678
    i32 4, label %691
    i32 5, label %716
    i32 6, label %723
    i32 7, label %736
    i32 8, label %743
    i32 9, label %756
    i32 10, label %764
  ]

640:                                              ; preds = %636
  %641 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %642 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %641, i64 noundef 0)
          to label %643 unwind label %147

643:                                              ; preds = %640
  store float 0xC7EFFFFFE0000000, ptr %642, align 4, !tbaa !44
  %644 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %645 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %644, i64 noundef 1)
          to label %646 unwind label %147

646:                                              ; preds = %643
  store float 0x47EFFFFFE0000000, ptr %645, align 4, !tbaa !44
  br label %764

647:                                              ; preds = %636
  %648 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %649 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %648, i64 noundef 0)
          to label %650 unwind label %147

650:                                              ; preds = %647
  store float 0.000000e+00, ptr %649, align 4, !tbaa !44
  %651 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %652 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %651, i64 noundef 1)
          to label %653 unwind label %147

653:                                              ; preds = %650
  store float 0x47EFFFFFE0000000, ptr %652, align 4, !tbaa !44
  br label %764

654:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  store i64 0, ptr %51, align 8, !tbaa !21
  br label %655

655:                                              ; preds = %670, %654
  %656 = load i64, ptr %51, align 8, !tbaa !21
  %657 = load ptr, ptr %11, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %657, i32 0, i32 5
  %659 = load i64, ptr %658, align 8, !tbaa !19
  %660 = icmp ult i64 %656, %659
  br i1 %660, label %662, label %661

661:                                              ; preds = %655
  store i32 33, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %677

662:                                              ; preds = %655
  %663 = load ptr, ptr %9, align 8, !tbaa !5
  %664 = getelementptr inbounds float, ptr %663, i64 0
  %665 = load float, ptr %664, align 4, !tbaa !44
  %666 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %667 = load i64, ptr %51, align 8, !tbaa !21
  %668 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %666, i64 noundef %667)
          to label %669 unwind label %673

669:                                              ; preds = %662
  store float %665, ptr %668, align 4, !tbaa !44
  br label %670

670:                                              ; preds = %669
  %671 = load i64, ptr %51, align 8, !tbaa !21
  %672 = add i64 %671, 1
  store i64 %672, ptr %51, align 8, !tbaa !21
  br label %655, !llvm.loop !63

673:                                              ; preds = %662
  %674 = landingpad { ptr, i32 }
          cleanup
  %675 = extractvalue { ptr, i32 } %674, 0
  store ptr %675, ptr %28, align 8
  %676 = extractvalue { ptr, i32 } %674, 1
  store i32 %676, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %765

677:                                              ; preds = %661
  br label %764

678:                                              ; preds = %636
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  %680 = getelementptr inbounds float, ptr %679, i64 0
  %681 = load float, ptr %680, align 4, !tbaa !44
  %682 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %683 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %682, i64 noundef 0)
          to label %684 unwind label %147

684:                                              ; preds = %678
  store float %681, ptr %683, align 4, !tbaa !44
  %685 = load ptr, ptr %9, align 8, !tbaa !5
  %686 = getelementptr inbounds float, ptr %685, i64 1
  %687 = load float, ptr %686, align 4, !tbaa !44
  %688 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %689 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %688, i64 noundef 1)
          to label %690 unwind label %147

690:                                              ; preds = %684
  store float %687, ptr %689, align 4, !tbaa !44
  br label %764

691:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  store i64 0, ptr %52, align 8, !tbaa !21
  br label %692

692:                                              ; preds = %708, %691
  %693 = load i64, ptr %52, align 8, !tbaa !21
  %694 = load ptr, ptr %11, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %694, i32 0, i32 5
  %696 = load i64, ptr %695, align 8, !tbaa !19
  %697 = icmp ult i64 %693, %696
  br i1 %697, label %699, label %698

698:                                              ; preds = %692
  store i32 36, ptr %31, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %715

699:                                              ; preds = %692
  %700 = load ptr, ptr %9, align 8, !tbaa !5
  %701 = load i64, ptr %52, align 8, !tbaa !21
  %702 = getelementptr inbounds float, ptr %700, i64 %701
  %703 = load float, ptr %702, align 4, !tbaa !44
  %704 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %705 = load i64, ptr %52, align 8, !tbaa !21
  %706 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %704, i64 noundef %705)
          to label %707 unwind label %711

707:                                              ; preds = %699
  store float %703, ptr %706, align 4, !tbaa !44
  br label %708

708:                                              ; preds = %707
  %709 = load i64, ptr %52, align 8, !tbaa !21
  %710 = add i64 %709, 1
  store i64 %710, ptr %52, align 8, !tbaa !21
  br label %692, !llvm.loop !64

711:                                              ; preds = %699
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %28, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %765

715:                                              ; preds = %698
  br label %764

716:                                              ; preds = %636
  %717 = load ptr, ptr %9, align 8, !tbaa !5
  %718 = getelementptr inbounds float, ptr %717, i64 0
  %719 = load float, ptr %718, align 4, !tbaa !44
  %720 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %721 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %720, i64 noundef 0)
          to label %722 unwind label %147

722:                                              ; preds = %716
  store float %719, ptr %721, align 4, !tbaa !44
  br label %764

723:                                              ; preds = %636
  %724 = load ptr, ptr %9, align 8, !tbaa !5
  %725 = getelementptr inbounds float, ptr %724, i64 0
  %726 = load float, ptr %725, align 4, !tbaa !44
  %727 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %728 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %727, i64 noundef 0)
          to label %729 unwind label %147

729:                                              ; preds = %723
  store float %726, ptr %728, align 4, !tbaa !44
  %730 = load ptr, ptr %9, align 8, !tbaa !5
  %731 = getelementptr inbounds float, ptr %730, i64 1
  %732 = load float, ptr %731, align 4, !tbaa !44
  %733 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %734 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %733, i64 noundef 1)
          to label %735 unwind label %147

735:                                              ; preds = %729
  store float %732, ptr %734, align 4, !tbaa !44
  br label %764

736:                                              ; preds = %636
  %737 = load ptr, ptr %9, align 8, !tbaa !5
  %738 = getelementptr inbounds float, ptr %737, i64 0
  %739 = load float, ptr %738, align 4, !tbaa !44
  %740 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %741 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %740, i64 noundef 0)
          to label %742 unwind label %147

742:                                              ; preds = %736
  store float %739, ptr %741, align 4, !tbaa !44
  br label %764

743:                                              ; preds = %636
  %744 = load ptr, ptr %9, align 8, !tbaa !5
  %745 = getelementptr inbounds float, ptr %744, i64 0
  %746 = load float, ptr %745, align 4, !tbaa !44
  %747 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %748 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %747, i64 noundef 0)
          to label %749 unwind label %147

749:                                              ; preds = %743
  store float %746, ptr %748, align 4, !tbaa !44
  %750 = load ptr, ptr %9, align 8, !tbaa !5
  %751 = getelementptr inbounds float, ptr %750, i64 1
  %752 = load float, ptr %751, align 4, !tbaa !44
  %753 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %754 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %753, i64 noundef 1)
          to label %755 unwind label %147

755:                                              ; preds = %749
  store float %752, ptr %754, align 4, !tbaa !44
  br label %764

756:                                              ; preds = %636
  %757 = load ptr, ptr %9, align 8, !tbaa !5
  %758 = getelementptr inbounds float, ptr %757, i64 0
  %759 = load float, ptr %758, align 4, !tbaa !44
  %760 = getelementptr inbounds %"class.Simd::SynetConvolution8i", ptr %53, i32 0, i32 10
  %761 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %760, i64 noundef 0)
          to label %762 unwind label %147

762:                                              ; preds = %756
  store float %759, ptr %761, align 4, !tbaa !44
  br label %764

763:                                              ; preds = %636
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 238, ptr noundef @__PRETTY_FUNCTION__._ZN4Simd18SynetConvolution8i9SetParamsEPKfS2_S2_PKS2_) #8
  unreachable

764:                                              ; preds = %762, %755, %742, %735, %722, %715, %690, %677, %653, %646, %636
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  ret void

765:                                              ; preds = %711, %673, %570, %147
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %766

766:                                              ; preds = %765
  %767 = load ptr, ptr %28, align 8
  %768 = load i32, ptr %29, align 4
  %769 = insertvalue { ptr, i32 } poison, ptr %767, 0
  %770 = insertvalue { ptr, i32 } %769, i32 %768, 1
  resume { ptr, i32 } %770
}

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd4Base8OverflowE26SimdSynetCompatibilityType(i32 noundef) #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN4Simd3MinIfEET_S1_S1_(float noundef, float noundef) #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef, float noundef) #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef) #4

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef, float noundef, float noundef, i32 noundef, i32 noundef) #1

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i32 @_ZN4Simd5RoundEf(float noundef) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #6

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 = { alwaysinline 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { alwaysinline 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 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="128" "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 nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }
attributes #8 = { 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, !11, i64 0}
!10 = !{!"_ZTS25SimdConvolutionParameters", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !13, i64 28, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !13, i64 60, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !14, i64 152}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTS18SimdTensorDataType", !7, i64 0}
!13 = !{!"_ZTS20SimdTensorFormatType", !7, i64 0}
!14 = !{!"_ZTS29SimdConvolutionActivationType", !7, i64 0}
!15 = !{!16, !18, i64 176}
!16 = !{!"_ZTSN4Simd9ConvParamE", !10, i64 0, !17, i64 160, !11, i64 168, !18, i64 176}
!17 = !{!"_ZTS8SimdBool", !7, i64 0}
!18 = !{!"_ZTS26SimdSynetCompatibilityType", !7, i64 0}
!19 = !{!10, !11, i64 32}
!20 = !{!10, !11, i64 144}
!21 = !{!11, !11, i64 0}
!22 = !{!10, !11, i64 64}
!23 = !{!10, !11, i64 72}
!24 = !{!25, !6, i64 264}
!25 = !{!"_ZTSN4Simd18SynetConvolution8iE", !26, i64 0, !16, i64 8, !27, i64 192, !28, i64 208, !6, i64 240, !30, i64 248, !30, i64 352, !34, i64 456, !31, i64 472, !31, i64 488, !31, i64 504, !32, i64 520, !32, i64 521, !11, i64 528, !11, i64 536, !11, i64 544}
!26 = !{!"_ZTSN4Simd9DeletableE"}
!27 = !{!"_ZTSN4Simd5ArrayIhEE", !6, i64 0, !11, i64 8}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !29, i64 0, !11, i64 8, !7, i64 16}
!29 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!30 = !{!"_ZTSN4Simd8CvtParamE", !27, i64 0, !31, i64 16, !31, i64 32, !31, i64 48, !31, i64 64, !32, i64 80, !33, i64 84, !33, i64 88, !33, i64 92, !33, i64 96}
!31 = !{!"_ZTSN4Simd5ArrayIfEE", !6, i64 0, !11, i64 8}
!32 = !{!"bool", !7, i64 0}
!33 = !{!"int", !7, i64 0}
!34 = !{!"_ZTSN4Simd5ArrayIaEE", !6, i64 0, !11, i64 8}
!35 = !{!25, !6, i64 280}
!36 = !{!31, !6, i64 0}
!37 = !{!25, !6, i64 456}
!38 = !{!25, !6, i64 472}
!39 = !{!25, !6, i64 488}
!40 = !{!25, !32, i64 328}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!32, !32, i64 0}
!44 = !{!45, !45, i64 0}
!45 = !{!"float", !7, i64 0}
!46 = !{!16, !17, i64 160}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = distinct !{!49, !48}
!50 = !{!25, !33, i64 336}
!51 = !{!25, !33, i64 332}
!52 = !{!33, !33, i64 0}
!53 = !{!7, !7, i64 0}
!54 = distinct !{!54, !48}
!55 = distinct !{!55, !48}
!56 = distinct !{!56, !48}
!57 = distinct !{!57, !48}
!58 = distinct !{!58, !48}
!59 = distinct !{!59, !48}
!60 = distinct !{!60, !48}
!61 = distinct !{!61, !48}
!62 = !{!10, !14, i64 152}
!63 = distinct !{!63, !48}
!64 = distinct !{!64, !48}


; 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.Simd::Array.0" = type { ptr, i64 }

@.str.1 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@__PRETTY_FUNCTION__._ZN4Simd18SynetConvolution8i9SetParamsEPKfS2_S2_PKS2_ = external hidden unnamed_addr constant [116 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Simd8CvtParam4InitEPKfS2_m26SimdSynetCompatibilityType(ptr noundef nonnull align 8 dereferenceable(100), ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIfE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Simd18SynetConvolution8i9SetParamsEPKfS2_S2_PKS2_(ptr noundef nonnull align 8 dereferenceable(552) %0, ptr nocapture noundef readonly %1, ptr noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"struct.Simd::Array.0", align 8
  %7 = getelementptr inbounds i8, ptr %0, i64 8
  %8 = getelementptr inbounds i8, ptr %0, i64 248
  %9 = load ptr, ptr %4, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %4, i64 8
  %11 = load ptr, ptr %10, align 8, !tbaa !5
  %12 = load i64, ptr %7, align 8, !tbaa !9
  %13 = getelementptr inbounds i8, ptr %0, i64 184
  %14 = load i32, ptr %13, align 8, !tbaa !15
  tail call void @_ZN4Simd8CvtParam4InitEPKfS2_m26SimdSynetCompatibilityType(ptr noundef nonnull align 8 dereferenceable(100) %8, ptr noundef %9, ptr noundef %11, i64 noundef %12, i32 noundef %14)
  %15 = getelementptr inbounds i8, ptr %0, i64 352
  %16 = getelementptr inbounds i8, ptr %4, i64 16
  %17 = load ptr, ptr %16, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %4, i64 24
  %19 = load ptr, ptr %18, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %0, i64 40
  %21 = load i64, ptr %20, align 8, !tbaa !19
  %22 = load i32, ptr %13, align 8, !tbaa !15
  tail call void @_ZN4Simd8CvtParam4InitEPKfS2_m26SimdSynetCompatibilityType(ptr noundef nonnull align 8 dereferenceable(100) %15, ptr noundef %17, ptr noundef %19, i64 noundef %21, i32 noundef %22)
  %23 = getelementptr inbounds i8, ptr %0, i64 152
  %24 = load i64, ptr %23, align 8, !tbaa !20
  %25 = load i64, ptr %20, align 8, !tbaa !19
  %26 = udiv i64 %25, %24
  %27 = load i64, ptr %7, align 8, !tbaa !9
  %28 = udiv i64 %27, %24
  %29 = getelementptr inbounds i8, ptr %0, i64 72
  %30 = load i64, ptr %29, align 8, !tbaa !21
  %31 = getelementptr inbounds i8, ptr %0, i64 80
  %32 = load i64, ptr %31, align 8, !tbaa !22
  %33 = mul i64 %32, %30
  %34 = mul i64 %33, %28
  %35 = mul i64 %26, %24
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  call void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %34, i1 noundef zeroext false, i64 noundef 8)
  %36 = getelementptr inbounds i8, ptr %0, i64 264
  %37 = load ptr, ptr %36, align 8, !tbaa !23
  %38 = getelementptr inbounds i8, ptr %0, i64 280
  %39 = load ptr, ptr %38, align 8, !tbaa !34
  %40 = load ptr, ptr %6, align 8, !tbaa !35
  %41 = getelementptr inbounds i8, ptr %0, i64 456
  %42 = load ptr, ptr %41, align 8, !tbaa !36
  %43 = getelementptr inbounds i8, ptr %0, i64 472
  %44 = load ptr, ptr %43, align 8, !tbaa !37
  %45 = getelementptr inbounds i8, ptr %0, i64 488
  %46 = load ptr, ptr %45, align 8, !tbaa !38
  %47 = getelementptr inbounds i8, ptr %0, i64 328
  %48 = load i8, ptr %47, align 8, !tbaa !39, !range !40, !noundef !41
  %49 = trunc nuw i8 %48 to i1
  br i1 %49, label %50, label %.thread

.thread:                                          ; preds = %5
  %.not433471 = icmp ugt i64 %24, %25
  br i1 %.not433471, label %.split425.us, label %.preheader282.us.preheader

50:                                               ; preds = %5
  %51 = load i32, ptr %13, align 8, !tbaa !15
  %52 = call noundef zeroext i1 @_ZN4Simd4Base8OverflowE26SimdSynetCompatibilityType(i32 noundef %51)
  %.not433 = icmp ugt i64 %24, %25
  %. = select i1 %52, float 2.000000e+00, float 1.000000e+00
  br i1 %.not433, label %.split425.us, label %.preheader282.us.preheader

.preheader282.us.preheader:                       ; preds = %50, %.thread
  %53 = phi float [ 1.000000e+00, %.thread ], [ %., %50 ]
  %54 = phi i1 [ false, %.thread ], [ %52, %50 ]
  %55 = getelementptr inbounds i8, ptr %0, i64 332
  %56 = getelementptr inbounds i8, ptr %0, i64 336
  %.not435476477 = icmp ugt i64 %24, %27
  %.not434475478 = icmp eq i64 %33, 0
  %57 = getelementptr inbounds i8, ptr %0, i64 168
  %umax = call i64 @llvm.umax.i64(i64 %24, i64 1)
  %brmerge = or i1 %.not434475478, %.not435476477
  %brmerge494 = or i1 %.not434475478, %.not435476477
  br label %.preheader282.us

.preheader282.us:                                 ; preds = %.preheader282.us.preheader, %._crit_edge.us423
  %.0237391.us = phi i64 [ %220, %._crit_edge.us423 ], [ 0, %.preheader282.us.preheader ]
  %.0246390.us = phi ptr [ %.1247.us, %._crit_edge.us423 ], [ %1, %.preheader282.us.preheader ]
  %.0248389.us = phi ptr [ %219, %._crit_edge.us423 ], [ %46, %.preheader282.us.preheader ]
  %.0249388.us = phi ptr [ %218, %._crit_edge.us423 ], [ %44, %.preheader282.us.preheader ]
  %.0250387.us = phi ptr [ %.1251.us, %._crit_edge.us423 ], [ %42, %.preheader282.us.preheader ]
  %.0252386.us = phi ptr [ %.1253.us, %._crit_edge.us423 ], [ %2, %.preheader282.us.preheader ]
  %.0254385.us = phi ptr [ %217, %._crit_edge.us423 ], [ %39, %.preheader282.us.preheader ]
  %.0255384.us = phi ptr [ %216, %._crit_edge.us423 ], [ %37, %.preheader282.us.preheader ]
  %.not266.us = icmp eq ptr %.0252386.us, null
  br label %58

58:                                               ; preds = %.preheader282.us, %77
  %.0236380.us = phi i64 [ 0, %.preheader282.us ], [ %82, %77 ]
  %59 = load i32, ptr %57, align 8, !tbaa !42
  %.not262.us = icmp eq i32 %59, 0
  br i1 %.not262.us, label %.preheader279.us, label %.preheader281.us

._crit_edge305.us:                                ; preds = %._crit_edge.us.us, %.preheader281.us
  %.0228.lcssa.us = phi float [ 0x47EFFFFFE0000000, %.preheader281.us ], [ %93, %._crit_edge.us.us ]
  %.0226.lcssa.us = phi float [ 0xC7EFFFFFE0000000, %.preheader281.us ], [ %95, %._crit_edge.us.us ]
  %60 = load i32, ptr %56, align 8, !tbaa !43
  %61 = sitofp i32 %60 to float
  %62 = call noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %.0226.lcssa.us)
  %63 = call noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %.0228.lcssa.us)
  %64 = call noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %62, float noundef %63)
  %65 = fdiv float %61, %64
  br i1 %brmerge494, label %.loopexit278.us, label %.preheader276.lr.ph.split.us.us

._crit_edge345.us:                                ; preds = %._crit_edge.us348.us, %.preheader275.lr.ph.us, %.preheader279.us
  %.2230.lcssa.us = phi float [ 0x47EFFFFFE0000000, %.preheader279.us ], [ 0x47EFFFFFE0000000, %.preheader275.lr.ph.us ], [ %159, %._crit_edge.us348.us ]
  %.2.lcssa.us = phi float [ 0xC7EFFFFFE0000000, %.preheader279.us ], [ 0xC7EFFFFFE0000000, %.preheader275.lr.ph.us ], [ %161, %._crit_edge.us348.us ]
  %66 = load i32, ptr %56, align 8, !tbaa !43
  %67 = sitofp i32 %66 to float
  %68 = call noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %.2.lcssa.us)
  %69 = call noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef %.2230.lcssa.us)
  %70 = call noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %68, float noundef %69)
  %71 = fdiv float %67, %70
  br i1 %.not435476477, label %.loopexit278.us, label %.preheader274.lr.ph.us

.loopexit278.us:                                  ; preds = %._crit_edge.split.us324.us, %._crit_edge.split.us.us.us.us, %._crit_edge.split.us368.us, %._crit_edge.split.us.us.us377.us, %._crit_edge305.us, %.preheader274.lr.ph.us, %._crit_edge345.us
  %.6.us = phi float [ 0.000000e+00, %._crit_edge345.us ], [ 0.000000e+00, %._crit_edge305.us ], [ 0.000000e+00, %.preheader274.lr.ph.us ], [ %209, %._crit_edge.split.us.us.us377.us ], [ %180, %._crit_edge.split.us368.us ], [ %144, %._crit_edge.split.us.us.us.us ], [ %114, %._crit_edge.split.us324.us ]
  %.0225.us = phi float [ %71, %._crit_edge345.us ], [ %65, %._crit_edge305.us ], [ %71, %.preheader274.lr.ph.us ], [ %71, %._crit_edge.split.us.us.us377.us ], [ %71, %._crit_edge.split.us368.us ], [ %65, %._crit_edge.split.us.us.us.us ], [ %65, %._crit_edge.split.us324.us ]
  %72 = fdiv float %53, %.0225.us
  %73 = getelementptr inbounds float, ptr %.0249388.us, i64 %.0236380.us
  store float %72, ptr %73, align 4, !tbaa !44
  br i1 %.not266.us, label %77, label %74

74:                                               ; preds = %.loopexit278.us
  %75 = getelementptr inbounds float, ptr %.0252386.us, i64 %.0236380.us
  %76 = load float, ptr %75, align 4, !tbaa !44
  br label %77

77:                                               ; preds = %74, %.loopexit278.us
  %78 = phi float [ %76, %74 ], [ 0.000000e+00, %.loopexit278.us ]
  %79 = fdiv float %.6.us, %.0225.us
  %80 = fadd float %79, %78
  %81 = getelementptr inbounds float, ptr %.0248389.us, i64 %.0236380.us
  store float %80, ptr %81, align 4, !tbaa !44
  %82 = add nuw i64 %.0236380.us, 1
  %83 = icmp ult i64 %82, %26
  br i1 %83, label %58, label %._crit_edge.us423, !llvm.loop !46

.preheader279.us:                                 ; preds = %58
  br i1 %.not435476477, label %._crit_edge345.us, label %.preheader275.lr.ph.us

.preheader281.us:                                 ; preds = %58
  br i1 %brmerge, label %._crit_edge305.us, label %.preheader277.us.us

.preheader277.us.us:                              ; preds = %.preheader281.us, %._crit_edge.us.us
  %.0222304.us.us = phi i64 [ %97, %._crit_edge.us.us ], [ 0, %.preheader281.us ]
  %.0224303.us.us = phi i64 [ %99, %._crit_edge.us.us ], [ 0, %.preheader281.us ]
  %.0226302.us.us = phi float [ %95, %._crit_edge.us.us ], [ 0xC7EFFFFFE0000000, %.preheader281.us ]
  %.0228301.us.us = phi float [ %93, %._crit_edge.us.us ], [ 0x47EFFFFFE0000000, %.preheader281.us ]
  br label %84

84:                                               ; preds = %84, %.preheader277.us.us
  %.0221298.us.us = phi i64 [ 0, %.preheader277.us.us ], [ %96, %84 ]
  %.1223297.us.us = phi i64 [ %.0222304.us.us, %.preheader277.us.us ], [ %97, %84 ]
  %.1227296.us.us = phi float [ %.0226302.us.us, %.preheader277.us.us ], [ %95, %84 ]
  %.1229295.us.us = phi float [ %.0228301.us.us, %.preheader277.us.us ], [ %93, %84 ]
  %85 = mul i64 %.1223297.us.us, %35
  %86 = add i64 %85, %.0236380.us
  %87 = getelementptr inbounds float, ptr %.0246390.us, i64 %86
  %88 = load float, ptr %87, align 4, !tbaa !44
  %89 = getelementptr inbounds float, ptr %.0255384.us, i64 %.0221298.us.us
  %90 = load float, ptr %89, align 4, !tbaa !44
  %91 = fdiv float %88, %90
  %92 = getelementptr inbounds float, ptr %40, i64 %.1223297.us.us
  store float %91, ptr %92, align 4, !tbaa !44
  %93 = call noundef float @_ZN4Simd3MinIfEET_S1_S1_(float noundef %.1229295.us.us, float noundef %91)
  %94 = load float, ptr %92, align 4, !tbaa !44
  %95 = call noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %.1227296.us.us, float noundef %94)
  %96 = add nuw i64 %.0221298.us.us, 1
  %97 = add i64 %.1223297.us.us, 1
  %98 = icmp ult i64 %96, %28
  br i1 %98, label %84, label %._crit_edge.us.us, !llvm.loop !48

._crit_edge.us.us:                                ; preds = %84
  %99 = add nuw i64 %.0224303.us.us, 1
  %exitcond.not = icmp eq i64 %99, %33
  br i1 %exitcond.not, label %._crit_edge305.us, label %.preheader277.us.us, !llvm.loop !49

.preheader276.lr.ph.split.us.us:                  ; preds = %._crit_edge305.us
  br i1 %54, label %.preheader276.us.us.us, label %.preheader276.us.us405

.preheader276.us.us405:                           ; preds = %.preheader276.lr.ph.split.us.us, %._crit_edge.split.us324.us
  %.0218319.us.us406 = phi i64 [ %116, %._crit_edge.split.us324.us ], [ 0, %.preheader276.lr.ph.split.us.us ]
  %.0220318.us.us407 = phi i64 [ %118, %._crit_edge.split.us324.us ], [ 0, %.preheader276.lr.ph.split.us.us ]
  %.0232317.us.us408 = phi float [ %114, %._crit_edge.split.us324.us ], [ 0.000000e+00, %.preheader276.lr.ph.split.us.us ]
  br label %100

100:                                              ; preds = %106, %.preheader276.us.us405
  %.0217311.us321.us = phi i64 [ 0, %.preheader276.us.us405 ], [ %115, %106 ]
  %.1219310.us322.us = phi i64 [ %.0218319.us.us406, %.preheader276.us.us405 ], [ %116, %106 ]
  %.1233309.us323.us = phi float [ %.0232317.us.us408, %.preheader276.us.us405 ], [ %114, %106 ]
  %101 = getelementptr inbounds float, ptr %40, i64 %.1219310.us322.us
  %102 = load float, ptr %101, align 4, !tbaa !44
  %103 = load i32, ptr %55, align 4, !tbaa !50
  %104 = load i32, ptr %56, align 8, !tbaa !43
  %105 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %102, float noundef %65, float noundef 0.000000e+00, i32 noundef %103, i32 noundef %104)
          to label %106 unwind label %.split.us330.split.us

106:                                              ; preds = %100
  %107 = mul i64 %.1219310.us322.us, %35
  %108 = add i64 %107, %.0236380.us
  %109 = getelementptr inbounds i8, ptr %.0250387.us, i64 %108
  store i8 %105, ptr %109, align 1, !tbaa !51
  %110 = sitofp i8 %105 to float
  %111 = getelementptr inbounds float, ptr %.0254385.us, i64 %.0217311.us321.us
  %112 = load float, ptr %111, align 4, !tbaa !44
  %113 = fneg float %110
  %114 = call float @llvm.fmuladd.f32(float %113, float %112, float %.1233309.us323.us)
  %115 = add nuw i64 %.0217311.us321.us, 1
  %116 = add i64 %.1219310.us322.us, 1
  %117 = icmp ult i64 %115, %28
  br i1 %117, label %100, label %._crit_edge.split.us324.us, !llvm.loop !52

._crit_edge.split.us324.us:                       ; preds = %106
  %118 = add nuw i64 %.0220318.us.us407, 1
  %exitcond465.not = icmp eq i64 %118, %33
  br i1 %exitcond465.not, label %.loopexit278.us, label %.preheader276.us.us405, !llvm.loop !53

.preheader276.us.us.us:                           ; preds = %.preheader276.lr.ph.split.us.us, %._crit_edge.split.us.us.us.us
  %.0218319.us.us.us = phi i64 [ %146, %._crit_edge.split.us.us.us.us ], [ 0, %.preheader276.lr.ph.split.us.us ]
  %.0220318.us.us.us = phi i64 [ %148, %._crit_edge.split.us.us.us.us ], [ 0, %.preheader276.lr.ph.split.us.us ]
  %.0232317.us.us.us = phi float [ %144, %._crit_edge.split.us.us.us.us ], [ 0.000000e+00, %.preheader276.lr.ph.split.us.us ]
  br label %119

119:                                              ; preds = %134, %.preheader276.us.us.us
  %.0217311.us.us.us.us = phi i64 [ 0, %.preheader276.us.us.us ], [ %145, %134 ]
  %.1219310.us.us.us.us = phi i64 [ %.0218319.us.us.us, %.preheader276.us.us.us ], [ %146, %134 ]
  %.1233309.us.us.us.us = phi float [ %.0232317.us.us.us, %.preheader276.us.us.us ], [ %144, %134 ]
  %120 = getelementptr inbounds float, ptr %40, i64 %.1219310.us.us.us.us
  %121 = load float, ptr %120, align 4, !tbaa !44
  %122 = load i32, ptr %55, align 4, !tbaa !50
  %123 = load i32, ptr %56, align 8, !tbaa !43
  %124 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %121, float noundef %65, float noundef 0.000000e+00, i32 noundef %122, i32 noundef %123)
          to label %125 unwind label %.split.us.split.us.split.us.split.us

125:                                              ; preds = %119
  %126 = sext i8 %124 to i32
  %127 = and i32 %126, 1
  %.not267.us.us.us.us = icmp eq i32 %127, 0
  br i1 %.not267.us.us.us.us, label %134, label %128

128:                                              ; preds = %125
  %129 = sitofp i8 %124 to float
  %130 = fmul float %129, 2.500000e-01
  %131 = invoke noundef i32 @_ZN4Simd5RoundEf(float noundef %130)
          to label %132 unwind label %.split.us.split.us.split.us.split.us

132:                                              ; preds = %128
  %133 = shl nsw i32 %131, 2
  br label %134

134:                                              ; preds = %132, %125
  %.0216.us.us.us.us = phi i32 [ %133, %132 ], [ %126, %125 ]
  %135 = sdiv i32 %.0216.us.us.us.us, 2
  %136 = trunc i32 %135 to i8
  %137 = mul i64 %.1219310.us.us.us.us, %35
  %138 = add i64 %137, %.0236380.us
  %139 = getelementptr inbounds i8, ptr %.0250387.us, i64 %138
  store i8 %136, ptr %139, align 1, !tbaa !51
  %140 = sitofp i32 %.0216.us.us.us.us to float
  %141 = getelementptr inbounds float, ptr %.0254385.us, i64 %.0217311.us.us.us.us
  %142 = load float, ptr %141, align 4, !tbaa !44
  %143 = fneg float %140
  %144 = call float @llvm.fmuladd.f32(float %143, float %142, float %.1233309.us.us.us.us)
  %145 = add nuw i64 %.0217311.us.us.us.us, 1
  %146 = add i64 %.1219310.us.us.us.us, 1
  %147 = icmp ult i64 %145, %28
  br i1 %147, label %119, label %._crit_edge.split.us.us.us.us, !llvm.loop !52

._crit_edge.split.us.us.us.us:                    ; preds = %134
  %148 = add nuw i64 %.0220318.us.us.us, 1
  %exitcond466.not = icmp eq i64 %148, %33
  br i1 %exitcond466.not, label %.loopexit278.us, label %.preheader276.us.us.us, !llvm.loop !53

.preheader275.lr.ph.us:                           ; preds = %.preheader279.us
  %149 = mul i64 %.0236380.us, %34
  br i1 %.not434475478, label %._crit_edge345.us, label %.preheader275.us.us

.preheader275.us.us:                              ; preds = %.preheader275.lr.ph.us, %._crit_edge.us348.us
  %.0213344.us.us = phi i64 [ %151, %._crit_edge.us348.us ], [ 0, %.preheader275.lr.ph.us ]
  %.0215343.us.us = phi i64 [ %163, %._crit_edge.us348.us ], [ 0, %.preheader275.lr.ph.us ]
  %.2342.us.us = phi float [ %161, %._crit_edge.us348.us ], [ 0xC7EFFFFFE0000000, %.preheader275.lr.ph.us ]
  %.2230341.us.us = phi float [ %159, %._crit_edge.us348.us ], [ 0x47EFFFFFE0000000, %.preheader275.lr.ph.us ]
  %150 = getelementptr inbounds float, ptr %.0255384.us, i64 %.0215343.us.us
  %151 = add i64 %33, %.0213344.us.us
  br label %152

152:                                              ; preds = %152, %.preheader275.us.us
  %.1214337.us.us = phi i64 [ %.0213344.us.us, %.preheader275.us.us ], [ %162, %152 ]
  %.3336.us.us = phi float [ %.2342.us.us, %.preheader275.us.us ], [ %161, %152 ]
  %.3231335.us.us = phi float [ %.2230341.us.us, %.preheader275.us.us ], [ %159, %152 ]
  %153 = add i64 %.1214337.us.us, %149
  %154 = getelementptr inbounds float, ptr %.0246390.us, i64 %153
  %155 = load float, ptr %154, align 4, !tbaa !44
  %156 = load float, ptr %150, align 4, !tbaa !44
  %157 = fdiv float %155, %156
  %158 = getelementptr inbounds float, ptr %40, i64 %.1214337.us.us
  store float %157, ptr %158, align 4, !tbaa !44
  %159 = call noundef float @_ZN4Simd3MinIfEET_S1_S1_(float noundef %.3231335.us.us, float noundef %157)
  %160 = load float, ptr %158, align 4, !tbaa !44
  %161 = call noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef %.3336.us.us, float noundef %160)
  %162 = add i64 %.1214337.us.us, 1
  %exitcond467.not = icmp eq i64 %162, %151
  br i1 %exitcond467.not, label %._crit_edge.us348.us, label %152, !llvm.loop !54

._crit_edge.us348.us:                             ; preds = %152
  %163 = add nuw i64 %.0215343.us.us, 1
  %164 = icmp ult i64 %163, %28
  br i1 %164, label %.preheader275.us.us, label %._crit_edge345.us, !llvm.loop !55

.preheader274.lr.ph.us:                           ; preds = %._crit_edge345.us
  %165 = mul i64 %.0236380.us, %34
  br i1 %.not434475478, label %.loopexit278.us, label %.preheader274.lr.ph.split.us.us

.preheader274.lr.ph.split.us.us:                  ; preds = %.preheader274.lr.ph.us
  br i1 %54, label %.preheader274.us.us.us, label %.preheader274.us.us416

.preheader274.us.us416:                           ; preds = %.preheader274.lr.ph.split.us.us, %._crit_edge.split.us368.us
  %.0210363.us.us417 = phi i64 [ %167, %._crit_edge.split.us368.us ], [ 0, %.preheader274.lr.ph.split.us.us ]
  %.0211362.us.us418 = phi i64 [ %182, %._crit_edge.split.us368.us ], [ 0, %.preheader274.lr.ph.split.us.us ]
  %.3235361.us.us419 = phi float [ %180, %._crit_edge.split.us368.us ], [ 0.000000e+00, %.preheader274.lr.ph.split.us.us ]
  %166 = getelementptr inbounds float, ptr %.0254385.us, i64 %.0211362.us.us418
  %167 = add i64 %33, %.0210363.us.us417
  br label %168

168:                                              ; preds = %174, %.preheader274.us.us416
  %.1353.us366.us = phi i64 [ %.0210363.us.us417, %.preheader274.us.us416 ], [ %181, %174 ]
  %.4352.us367.us = phi float [ %.3235361.us.us419, %.preheader274.us.us416 ], [ %180, %174 ]
  %169 = getelementptr inbounds float, ptr %40, i64 %.1353.us366.us
  %170 = load float, ptr %169, align 4, !tbaa !44
  %171 = load i32, ptr %55, align 4, !tbaa !50
  %172 = load i32, ptr %56, align 8, !tbaa !43
  %173 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %170, float noundef %71, float noundef 0.000000e+00, i32 noundef %171, i32 noundef %172)
          to label %174 unwind label %.split.us374.split.us

174:                                              ; preds = %168
  %175 = add i64 %.1353.us366.us, %165
  %176 = getelementptr inbounds i8, ptr %.0250387.us, i64 %175
  store i8 %173, ptr %176, align 1, !tbaa !51
  %177 = sitofp i8 %173 to float
  %178 = load float, ptr %166, align 4, !tbaa !44
  %179 = fneg float %177
  %180 = call float @llvm.fmuladd.f32(float %179, float %178, float %.4352.us367.us)
  %181 = add i64 %.1353.us366.us, 1
  %exitcond468.not = icmp eq i64 %181, %167
  br i1 %exitcond468.not, label %._crit_edge.split.us368.us, label %168, !llvm.loop !56

._crit_edge.split.us368.us:                       ; preds = %174
  %182 = add nuw i64 %.0211362.us.us418, 1
  %183 = icmp ult i64 %182, %28
  br i1 %183, label %.preheader274.us.us416, label %.loopexit278.us, !llvm.loop !57

.preheader274.us.us.us:                           ; preds = %.preheader274.lr.ph.split.us.us, %._crit_edge.split.us.us.us377.us
  %.0210363.us.us.us = phi i64 [ %185, %._crit_edge.split.us.us.us377.us ], [ 0, %.preheader274.lr.ph.split.us.us ]
  %.0211362.us.us.us = phi i64 [ %211, %._crit_edge.split.us.us.us377.us ], [ 0, %.preheader274.lr.ph.split.us.us ]
  %.3235361.us.us.us = phi float [ %209, %._crit_edge.split.us.us.us377.us ], [ 0.000000e+00, %.preheader274.lr.ph.split.us.us ]
  %184 = getelementptr inbounds float, ptr %.0254385.us, i64 %.0211362.us.us.us
  %185 = add i64 %33, %.0210363.us.us.us
  br label %186

186:                                              ; preds = %201, %.preheader274.us.us.us
  %.1353.us.us.us.us = phi i64 [ %.0210363.us.us.us, %.preheader274.us.us.us ], [ %210, %201 ]
  %.4352.us.us.us.us = phi float [ %.3235361.us.us.us, %.preheader274.us.us.us ], [ %209, %201 ]
  %187 = getelementptr inbounds float, ptr %40, i64 %.1353.us.us.us.us
  %188 = load float, ptr %187, align 4, !tbaa !44
  %189 = load i32, ptr %55, align 4, !tbaa !50
  %190 = load i32, ptr %56, align 8, !tbaa !43
  %191 = invoke noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef %188, float noundef %71, float noundef 0.000000e+00, i32 noundef %189, i32 noundef %190)
          to label %192 unwind label %.split.us356.split.us.split.us.split.us

192:                                              ; preds = %186
  %193 = sext i8 %191 to i32
  %194 = and i32 %193, 1
  %.not263.us.us.us.us = icmp eq i32 %194, 0
  br i1 %.not263.us.us.us.us, label %201, label %195

195:                                              ; preds = %192
  %196 = sitofp i8 %191 to float
  %197 = fmul float %196, 2.500000e-01
  %198 = invoke noundef i32 @_ZN4Simd5RoundEf(float noundef %197)
          to label %199 unwind label %.split.us356.split.us.split.us.split.us

199:                                              ; preds = %195
  %200 = shl nsw i32 %198, 2
  br label %201

201:                                              ; preds = %199, %192
  %.0208.us.us.us.us = phi i32 [ %200, %199 ], [ %193, %192 ]
  %202 = sdiv i32 %.0208.us.us.us.us, 2
  %203 = trunc i32 %202 to i8
  %204 = add i64 %.1353.us.us.us.us, %165
  %205 = getelementptr inbounds i8, ptr %.0250387.us, i64 %204
  store i8 %203, ptr %205, align 1, !tbaa !51
  %206 = sitofp i32 %.0208.us.us.us.us to float
  %207 = load float, ptr %184, align 4, !tbaa !44
  %208 = fneg float %206
  %209 = call float @llvm.fmuladd.f32(float %208, float %207, float %.4352.us.us.us.us)
  %210 = add i64 %.1353.us.us.us.us, 1
  %exitcond469.not = icmp eq i64 %210, %185
  br i1 %exitcond469.not, label %._crit_edge.split.us.us.us377.us, label %186, !llvm.loop !56

._crit_edge.split.us.us.us377.us:                 ; preds = %201
  %211 = add nuw i64 %.0211362.us.us.us, 1
  %212 = icmp ult i64 %211, %28
  br i1 %212, label %.preheader274.us.us.us, label %.loopexit278.us, !llvm.loop !57

._crit_edge.us423:                                ; preds = %77
  %213 = load i32, ptr %57, align 8, !tbaa !42
  %.not.us = icmp eq i32 %213, 0
  %214 = select i1 %.not.us, i64 %34, i64 1
  %.pn.us = mul i64 %214, %26
  %.1247.us = getelementptr inbounds float, ptr %.0246390.us, i64 %.pn.us
  %.1251.us = getelementptr inbounds i8, ptr %.0250387.us, i64 %.pn.us
  %215 = getelementptr inbounds float, ptr %.0252386.us, i64 %26
  %.1253.us = select i1 %.not266.us, ptr null, ptr %215
  %216 = getelementptr inbounds float, ptr %.0255384.us, i64 %28
  %217 = getelementptr inbounds float, ptr %.0254385.us, i64 %28
  %218 = getelementptr inbounds float, ptr %.0249388.us, i64 %26
  %219 = getelementptr inbounds float, ptr %.0248389.us, i64 %26
  %220 = add nuw i64 %.0237391.us, 1
  %exitcond470.not = icmp eq i64 %220, %umax
  br i1 %exitcond470.not, label %.split425.us, label %.preheader282.us, !llvm.loop !58

.split.us330.split.us:                            ; preds = %100
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %294

.split.us.split.us.split.us.split.us:             ; preds = %128, %119
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %294

.split.us374.split.us:                            ; preds = %168
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %294

.split.us356.split.us.split.us.split.us:          ; preds = %195, %186
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %294

.split425.us:                                     ; preds = %._crit_edge.us423, %50, %.thread
  %225 = getelementptr inbounds i8, ptr %0, i64 160
  %226 = load i32, ptr %225, align 8, !tbaa !59
  switch i32 %226, label %.invoke [
    i32 2, label %229
    i32 4, label %229
  ]

227:                                              ; preds = %.invoke
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %294

229:                                              ; preds = %.split425.us, %.split425.us
  %230 = load i64, ptr %20, align 8, !tbaa !19
  br label %.invoke

.invoke:                                          ; preds = %.split425.us, %229
  %231 = phi i64 [ %230, %229 ], [ 2, %.split425.us ]
  %232 = getelementptr inbounds i8, ptr %0, i64 504
  invoke void @_ZN4Simd5ArrayIfE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %232, i64 noundef %231, i1 noundef zeroext false, i64 noundef 8)
          to label %233 unwind label %227

233:                                              ; preds = %.invoke
  %234 = load i32, ptr %225, align 8, !tbaa !59
  switch i32 %234, label %293 [
    i32 0, label %239
    i32 1, label %243
    i32 2, label %.preheader
    i32 3, label %253
    i32 4, label %.preheader272
    i32 5, label %267
    i32 6, label %271
    i32 7, label %278
    i32 8, label %282
    i32 9, label %289
    i32 10, label %.loopexit
  ]

.preheader272:                                    ; preds = %233
  %235 = load i64, ptr %20, align 8, !tbaa !19
  %.not = icmp eq i64 %235, 0
  br i1 %.not, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader272
  %236 = getelementptr inbounds i8, ptr %0, i64 504
  br label %260

.preheader:                                       ; preds = %233
  %237 = load i64, ptr %20, align 8, !tbaa !19
  %.not442 = icmp eq i64 %237, 0
  br i1 %.not442, label %.loopexit, label %.lr.ph432

.lr.ph432:                                        ; preds = %.preheader
  %238 = getelementptr inbounds i8, ptr %0, i64 504
  br label %247

239:                                              ; preds = %233
  %240 = getelementptr inbounds i8, ptr %0, i64 504
  %241 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %240, i64 noundef 0)
  store float 0xC7EFFFFFE0000000, ptr %241, align 4, !tbaa !44
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %240, i64 noundef 1)
  store float 0x47EFFFFFE0000000, ptr %242, align 4, !tbaa !44
  br label %.loopexit

243:                                              ; preds = %233
  %244 = getelementptr inbounds i8, ptr %0, i64 504
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %244, i64 noundef 0)
  store float 0.000000e+00, ptr %245, align 4, !tbaa !44
  %246 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %244, i64 noundef 1)
  store float 0x47EFFFFFE0000000, ptr %246, align 4, !tbaa !44
  br label %.loopexit

247:                                              ; preds = %.lr.ph432, %247
  %.0207431 = phi i64 [ 0, %.lr.ph432 ], [ %250, %247 ]
  %248 = load float, ptr %3, align 4, !tbaa !44
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %238, i64 noundef %.0207431)
  store float %248, ptr %249, align 4, !tbaa !44
  %250 = add nuw i64 %.0207431, 1
  %251 = load i64, ptr %20, align 8, !tbaa !19
  %252 = icmp ult i64 %250, %251
  br i1 %252, label %247, label %.loopexit, !llvm.loop !60

253:                                              ; preds = %233
  %254 = load float, ptr %3, align 4, !tbaa !44
  %255 = getelementptr inbounds i8, ptr %0, i64 504
  %256 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %255, i64 noundef 0)
  store float %254, ptr %256, align 4, !tbaa !44
  %257 = getelementptr inbounds i8, ptr %3, i64 4
  %258 = load float, ptr %257, align 4, !tbaa !44
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %255, i64 noundef 1)
  store float %258, ptr %259, align 4, !tbaa !44
  br label %.loopexit

260:                                              ; preds = %.lr.ph, %260
  %.0430 = phi i64 [ 0, %.lr.ph ], [ %264, %260 ]
  %261 = getelementptr inbounds float, ptr %3, i64 %.0430
  %262 = load float, ptr %261, align 4, !tbaa !44
  %263 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %236, i64 noundef %.0430)
  store float %262, ptr %263, align 4, !tbaa !44
  %264 = add nuw i64 %.0430, 1
  %265 = load i64, ptr %20, align 8, !tbaa !19
  %266 = icmp ult i64 %264, %265
  br i1 %266, label %260, label %.loopexit, !llvm.loop !61

267:                                              ; preds = %233
  %268 = load float, ptr %3, align 4, !tbaa !44
  %269 = getelementptr inbounds i8, ptr %0, i64 504
  %270 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %269, i64 noundef 0)
  store float %268, ptr %270, align 4, !tbaa !44
  br label %.loopexit

271:                                              ; preds = %233
  %272 = load float, ptr %3, align 4, !tbaa !44
  %273 = getelementptr inbounds i8, ptr %0, i64 504
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %273, i64 noundef 0)
  store float %272, ptr %274, align 4, !tbaa !44
  %275 = getelementptr inbounds i8, ptr %3, i64 4
  %276 = load float, ptr %275, align 4, !tbaa !44
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %273, i64 noundef 1)
  store float %276, ptr %277, align 4, !tbaa !44
  br label %.loopexit

278:                                              ; preds = %233
  %279 = load float, ptr %3, align 4, !tbaa !44
  %280 = getelementptr inbounds i8, ptr %0, i64 504
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %280, i64 noundef 0)
  store float %279, ptr %281, align 4, !tbaa !44
  br label %.loopexit

282:                                              ; preds = %233
  %283 = load float, ptr %3, align 4, !tbaa !44
  %284 = getelementptr inbounds i8, ptr %0, i64 504
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %284, i64 noundef 0)
  store float %283, ptr %285, align 4, !tbaa !44
  %286 = getelementptr inbounds i8, ptr %3, i64 4
  %287 = load float, ptr %286, align 4, !tbaa !44
  %288 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %284, i64 noundef 1)
  store float %287, ptr %288, align 4, !tbaa !44
  br label %.loopexit

289:                                              ; preds = %233
  %290 = load float, ptr %3, align 4, !tbaa !44
  %291 = getelementptr inbounds i8, ptr %0, i64 504
  %292 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4Simd5ArrayIfEixEm(ptr noundef nonnull align 8 dereferenceable(16) %291, i64 noundef 0)
  store float %290, ptr %292, align 4, !tbaa !44
  br label %.loopexit

293:                                              ; preds = %233
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 238, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4Simd18SynetConvolution8i9SetParamsEPKfS2_S2_PKS2_) #9
  unreachable

.loopexit:                                        ; preds = %260, %247, %.preheader272, %.preheader, %289, %282, %278, %271, %267, %253, %243, %239, %233
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  ret void

294:                                              ; preds = %.split.us330.split.us, %.split.us.split.us.split.us.split.us, %.split.us374.split.us, %.split.us356.split.us.split.us.split.us, %227
  %.pn268.pn.pn = phi { ptr, i32 } [ %228, %227 ], [ %222, %.split.us.split.us.split.us.split.us ], [ %221, %.split.us330.split.us ], [ %224, %.split.us356.split.us.split.us.split.us ], [ %223, %.split.us374.split.us ]
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  resume { ptr, i32 } %.pn268.pn.pn
}

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN4Simd4Base8OverflowE26SimdSynetCompatibilityType(i32 noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN4Simd3MinIfEET_S1_S1_(float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN4Simd3MaxIfEET_S1_S1_(float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN4Simd3AbsIfEET_S1_(float noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef signext i8 @_ZN4Simd4Base19SynetConvert32fTo8iEfffii(float noundef, float noundef, float noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef i32 @_ZN4Simd5RoundEf(float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #6

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

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 = { alwaysinline 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { alwaysinline 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 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="128" "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 nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nounwind }
attributes #9 = { 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, !11, i64 0}
!10 = !{!"_ZTS25SimdConvolutionParameters", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !13, i64 28, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !13, i64 60, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !14, i64 152}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTS18SimdTensorDataType", !7, i64 0}
!13 = !{!"_ZTS20SimdTensorFormatType", !7, i64 0}
!14 = !{!"_ZTS29SimdConvolutionActivationType", !7, i64 0}
!15 = !{!16, !18, i64 176}
!16 = !{!"_ZTSN4Simd9ConvParamE", !10, i64 0, !17, i64 160, !11, i64 168, !18, i64 176}
!17 = !{!"_ZTS8SimdBool", !7, i64 0}
!18 = !{!"_ZTS26SimdSynetCompatibilityType", !7, i64 0}
!19 = !{!10, !11, i64 32}
!20 = !{!10, !11, i64 144}
!21 = !{!10, !11, i64 64}
!22 = !{!10, !11, i64 72}
!23 = !{!24, !6, i64 264}
!24 = !{!"_ZTSN4Simd18SynetConvolution8iE", !25, i64 0, !16, i64 8, !26, i64 192, !27, i64 208, !6, i64 240, !29, i64 248, !29, i64 352, !33, i64 456, !30, i64 472, !30, i64 488, !30, i64 504, !31, i64 520, !31, i64 521, !11, i64 528, !11, i64 536, !11, i64 544}
!25 = !{!"_ZTSN4Simd9DeletableE"}
!26 = !{!"_ZTSN4Simd5ArrayIhEE", !6, i64 0, !11, i64 8}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !28, i64 0, !11, i64 8, !7, i64 16}
!28 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!29 = !{!"_ZTSN4Simd8CvtParamE", !26, i64 0, !30, i64 16, !30, i64 32, !30, i64 48, !30, i64 64, !31, i64 80, !32, i64 84, !32, i64 88, !32, i64 92, !32, i64 96}
!30 = !{!"_ZTSN4Simd5ArrayIfEE", !6, i64 0, !11, i64 8}
!31 = !{!"bool", !7, i64 0}
!32 = !{!"int", !7, i64 0}
!33 = !{!"_ZTSN4Simd5ArrayIaEE", !6, i64 0, !11, i64 8}
!34 = !{!24, !6, i64 280}
!35 = !{!30, !6, i64 0}
!36 = !{!24, !6, i64 456}
!37 = !{!24, !6, i64 472}
!38 = !{!24, !6, i64 488}
!39 = !{!24, !31, i64 328}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!16, !17, i64 160}
!43 = !{!24, !32, i64 336}
!44 = !{!45, !45, i64 0}
!45 = !{!"float", !7, i64 0}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = distinct !{!48, !47}
!49 = distinct !{!49, !47}
!50 = !{!24, !32, i64 332}
!51 = !{!7, !7, i64 0}
!52 = distinct !{!52, !47}
!53 = distinct !{!53, !47}
!54 = distinct !{!54, !47}
!55 = distinct !{!55, !47}
!56 = distinct !{!56, !47}
!57 = distinct !{!57, !47}
!58 = distinct !{!58, !47}
!59 = !{!10, !14, i64 152}
!60 = distinct !{!60, !47}
!61 = distinct !{!61, !47}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass