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

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

%"class.Simd::Base::SynetMergedConvolution16b" = type { %"class.Simd::SynetMergedConvolution16b", %"struct.Simd::MergConvParam", %"class.std::__cxx11::basic_string", i8, i8, i8, ptr, ptr, ptr, ptr, [2 x ptr], i64, i64, [4 x i64], %"struct.Simd::Base::SynetMergedConvolution16b::AlgParam", %"struct.Simd::Array", %"struct.Simd::Array.0", %"struct.Simd::Array.0", %"struct.Simd::Array.1", [3 x %"struct.Simd::Array.1"], [3 x %"struct.Simd::Array.1"] }
%"class.Simd::SynetMergedConvolution16b" = type { %"struct.Simd::Deletable" }
%"struct.Simd::Deletable" = type { ptr }
%"struct.Simd::MergConvParam" = type <{ [3 x %"struct.Simd::ConvParam"], i64, i32, [4 x i8] }>
%"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 }
%"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::Base::SynetMergedConvolution16b::AlgParam" = type { i64, i64, i64, [3 x i64], [3 x i64], [3 x i64], [2 x i64], [3 x i64], [2 x i64] }
%"struct.Simd::Array" = type { ptr, i64 }
%"struct.Simd::Array.0" = type { ptr, i64 }
%"struct.Simd::Array.1" = type { ptr, i64 }

@_ZTVN4Simd4Base25SynetMergedConvolution16bE = external dso_local unnamed_addr constant { [12 x ptr] }, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__._ZN4Simd4Base25SynetMergedConvolution16bC2ERKNS_13MergConvParamE = external hidden unnamed_addr constant [88 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Simd4Base17ConvertFp32ToBf16EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPt(ptr noundef, ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, i64 noundef, ptr noundef) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Simd4Base17ConvertBf16ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf(ptr noundef, ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, i64 noundef, ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base14CopyFp32ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf(ptr noundef, ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, i64 noundef, ptr noundef) #2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Simd4Base25SynetMergedConvolution16bC2ERKNS_13MergConvParamE(ptr noundef nonnull align 8 dereferenceable(1024) %0, ptr noundef nonnull align 8 dereferenceable(564) %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %11 = load ptr, ptr %3, align 8
  call void @_ZN4Simd25SynetMergedConvolution16bC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  store ptr getelementptr inbounds inrange(-16, 80) ({ [12 x ptr] }, ptr @_ZTVN4Simd4Base25SynetMergedConvolution16bE, i32 0, i32 0, i32 2), ptr %11, align 8, !tbaa !9
  %12 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %13 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %12, ptr align 8 %13, i64 568, i1 false), !tbaa.struct !11
  %14 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 2
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  %15 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 14
  %16 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 15
  invoke void @_ZN4Simd5ArrayIhEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %17 unwind label %255

17:                                               ; preds = %2
  %18 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 16
  invoke void @_ZN4Simd5ArrayItEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %18, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %19 unwind label %259

19:                                               ; preds = %17
  %20 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 17
  invoke void @_ZN4Simd5ArrayItEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %21 unwind label %263

21:                                               ; preds = %19
  %22 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 18
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %23 unwind label %267

23:                                               ; preds = %21
  %24 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 19
  %25 = getelementptr inbounds [3 x %"struct.Simd::Array.1"], ptr %24, i32 0, i32 0
  %26 = getelementptr inbounds %"struct.Simd::Array.1", ptr %25, i64 3
  br label %27

27:                                               ; preds = %29, %23
  %28 = phi ptr [ %25, %23 ], [ %30, %29 ]
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %29 unwind label %271

29:                                               ; preds = %27
  %30 = getelementptr inbounds %"struct.Simd::Array.1", ptr %28, i64 1
  %31 = icmp eq ptr %30, %26
  br i1 %31, label %32, label %27

32:                                               ; preds = %29
  %33 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 20
  %34 = getelementptr inbounds [3 x %"struct.Simd::Array.1"], ptr %33, i32 0, i32 0
  %35 = getelementptr inbounds %"struct.Simd::Array.1", ptr %34, i64 3
  br label %36

36:                                               ; preds = %38, %32
  %37 = phi ptr [ %34, %32 ], [ %39, %38 ]
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %38 unwind label %281

38:                                               ; preds = %36
  %39 = getelementptr inbounds %"struct.Simd::Array.1", ptr %37, i64 1
  %40 = icmp eq ptr %39, %35
  br i1 %40, label %41, label %36

41:                                               ; preds = %38
  %42 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 14
  call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 152, i1 false)
  %43 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 6
  store ptr null, ptr %43, align 8, !tbaa !17
  %44 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 7
  store ptr null, ptr %44, align 8, !tbaa !29
  %45 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  store ptr null, ptr %45, align 8, !tbaa !30
  %46 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  store ptr null, ptr %46, align 8, !tbaa !31
  %47 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %48 = getelementptr inbounds [2 x ptr], ptr %47, i64 0, i64 0
  store ptr null, ptr %48, align 8, !tbaa !5
  %49 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %50 = getelementptr inbounds [2 x ptr], ptr %49, i64 0, i64 1
  store ptr null, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %51, i32 0, i32 0
  %53 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %52, i64 0, i64 0
  store ptr %53, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %54, i32 0, i32 0
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %56, i32 0, i32 1
  %58 = load i64, ptr %57, align 8, !tbaa !32
  %59 = sub i64 %58, 1
  %60 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %55, i64 0, i64 %59
  store ptr %60, ptr %8, align 8, !tbaa !5
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %61, i32 0, i32 20
  %63 = load i64, ptr %62, align 8, !tbaa !33
  %64 = icmp ne i64 %63, 1
  %65 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 3
  %66 = zext i1 %64 to i8
  store i8 %66, ptr %65, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #9
  %67 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 3
  %68 = load i8, ptr %67, align 8, !tbaa !38, !range !39, !noundef !40
  %69 = trunc i8 %68 to i1
  br i1 %69, label %70, label %74

70:                                               ; preds = %41
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %71, i32 0, i32 0
  %73 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %72, i64 0, i64 0
  br label %78

74:                                               ; preds = %41
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %75, i32 0, i32 0
  %77 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %76, i64 0, i64 1
  br label %78

78:                                               ; preds = %74, %70
  %79 = phi ptr [ %73, %70 ], [ %77, %74 ]
  store ptr %79, ptr %9, align 8, !tbaa !5
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %80, i32 0, i32 3
  %82 = load i32, ptr %81, align 8, !tbaa !41
  %83 = icmp eq i32 %82, 7
  %84 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 4
  %85 = zext i1 %83 to i8
  store i8 %85, ptr %84, align 1, !tbaa !42
  %86 = load ptr, ptr %8, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %86, i32 0, i32 8
  %88 = load i32, ptr %87, align 8, !tbaa !43
  %89 = icmp eq i32 %88, 7
  %90 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 5
  %91 = zext i1 %89 to i8
  store i8 %91, ptr %90, align 2, !tbaa !44
  %92 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 4
  %93 = load i8, ptr %92, align 1, !tbaa !42, !range !39, !noundef !40
  %94 = trunc i8 %93 to i1
  %95 = zext i1 %94 to i64
  %96 = select i1 %94, i32 2, i32 4
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 14
  %99 = getelementptr inbounds %"struct.Simd::Base::SynetMergedConvolution16b::AlgParam", ptr %98, i32 0, i32 8
  %100 = getelementptr inbounds [2 x i64], ptr %99, i64 0, i64 0
  store i64 %97, ptr %100, align 8, !tbaa !13
  %101 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 5
  %102 = load i8, ptr %101, align 2, !tbaa !44, !range !39, !noundef !40
  %103 = trunc i8 %102 to i1
  %104 = zext i1 %103 to i64
  %105 = select i1 %103, i32 2, i32 4
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 14
  %108 = getelementptr inbounds %"struct.Simd::Base::SynetMergedConvolution16b::AlgParam", ptr %107, i32 0, i32 8
  %109 = getelementptr inbounds [2 x i64], ptr %108, i64 0, i64 1
  store i64 %106, ptr %109, align 8, !tbaa !13
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %110, i32 0, i32 1
  %112 = load i64, ptr %111, align 8, !tbaa !45
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %113, i32 0, i32 2
  %115 = load i64, ptr %114, align 8, !tbaa !46
  %116 = mul i64 %112, %115
  %117 = load ptr, ptr %7, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %117, i32 0, i32 0
  %119 = load i64, ptr %118, align 8, !tbaa !47
  %120 = mul i64 %116, %119
  %121 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 11
  store i64 %120, ptr %121, align 8, !tbaa !48
  %122 = load ptr, ptr %8, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %122, i32 0, i32 6
  %124 = load i64, ptr %123, align 8, !tbaa !49
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %125, i32 0, i32 7
  %127 = load i64, ptr %126, align 8, !tbaa !50
  %128 = mul i64 %124, %127
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %129, i32 0, i32 5
  %131 = load i64, ptr %130, align 8, !tbaa !51
  %132 = mul i64 %128, %131
  %133 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 12
  store i64 %132, ptr %133, align 8, !tbaa !52
  %134 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 3
  %135 = load i8, ptr %134, align 8, !tbaa !38, !range !39, !noundef !40
  %136 = trunc i8 %135 to i1
  br i1 %136, label %141, label %137

137:                                              ; preds = %78
  %138 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 4
  %139 = load i8, ptr %138, align 1, !tbaa !42, !range !39, !noundef !40
  %140 = trunc i8 %139 to i1
  br i1 %140, label %141, label %142

141:                                              ; preds = %137, %78
  br label %160

142:                                              ; preds = %137
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %143, i32 0, i32 0
  %145 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %144, i64 0, i64 0
  %146 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %145, i32 0, i32 1
  %147 = load i64, ptr %146, align 8, !tbaa !45
  %148 = load ptr, ptr %4, align 8, !tbaa !5
  %149 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %148, i32 0, i32 0
  %150 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %149, i64 0, i64 0
  %151 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %150, i32 0, i32 2
  %152 = load i64, ptr %151, align 8, !tbaa !46
  %153 = mul i64 %147, %152
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %154, i32 0, i32 0
  %156 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %155, i64 0, i64 0
  %157 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %156, i32 0, i32 0
  %158 = load i64, ptr %157, align 8, !tbaa !47
  %159 = mul i64 %153, %158
  br label %160

160:                                              ; preds = %142, %141
  %161 = phi i64 [ 0, %141 ], [ %159, %142 ]
  %162 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 13
  %163 = getelementptr inbounds [4 x i64], ptr %162, i64 0, i64 0
  store i64 %161, ptr %163, align 8, !tbaa !13
  %164 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 3
  %165 = load i8, ptr %164, align 8, !tbaa !38, !range !39, !noundef !40
  %166 = trunc i8 %165 to i1
  br i1 %166, label %167, label %168

167:                                              ; preds = %160
  br label %180

168:                                              ; preds = %160
  %169 = load ptr, ptr %9, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %169, i32 0, i32 1
  %171 = load i64, ptr %170, align 8, !tbaa !45
  %172 = load ptr, ptr %9, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %172, i32 0, i32 2
  %174 = load i64, ptr %173, align 8, !tbaa !46
  %175 = mul i64 %171, %174
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %176, i32 0, i32 0
  %178 = load i64, ptr %177, align 8, !tbaa !47
  %179 = mul i64 %175, %178
  br label %180

180:                                              ; preds = %168, %167
  %181 = phi i64 [ 0, %167 ], [ %179, %168 ]
  %182 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 13
  %183 = getelementptr inbounds [4 x i64], ptr %182, i64 0, i64 1
  store i64 %181, ptr %183, align 8, !tbaa !13
  %184 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 3
  %185 = load i8, ptr %184, align 8, !tbaa !38, !range !39, !noundef !40
  %186 = trunc i8 %185 to i1
  br i1 %186, label %192, label %187

187:                                              ; preds = %180
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %188, i32 0, i32 1
  %190 = load i64, ptr %189, align 8, !tbaa !32
  %191 = icmp eq i64 %190, 3
  br i1 %191, label %192, label %204

192:                                              ; preds = %187, %180
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %193, i32 0, i32 6
  %195 = load i64, ptr %194, align 8, !tbaa !49
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %196, i32 0, i32 7
  %198 = load i64, ptr %197, align 8, !tbaa !50
  %199 = mul i64 %195, %198
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %200, i32 0, i32 5
  %202 = load i64, ptr %201, align 8, !tbaa !51
  %203 = mul i64 %199, %202
  br label %205

204:                                              ; preds = %187
  br label %205

205:                                              ; preds = %204, %192
  %206 = phi i64 [ %203, %192 ], [ 0, %204 ]
  %207 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 13
  %208 = getelementptr inbounds [4 x i64], ptr %207, i64 0, i64 2
  store i64 %206, ptr %208, align 8, !tbaa !13
  %209 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 5
  %210 = load i8, ptr %209, align 2, !tbaa !44, !range !39, !noundef !40
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %234

212:                                              ; preds = %205
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %213, i32 0, i32 20
  %215 = load i64, ptr %214, align 8, !tbaa !33
  %216 = icmp eq i64 %215, 1
  br i1 %216, label %222, label %217

217:                                              ; preds = %212
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %218, i32 0, i32 2
  %220 = load i32, ptr %219, align 8, !tbaa !53
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %234

222:                                              ; preds = %217, %212
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %223, i32 0, i32 6
  %225 = load i64, ptr %224, align 8, !tbaa !49
  %226 = load ptr, ptr %8, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %226, i32 0, i32 7
  %228 = load i64, ptr %227, align 8, !tbaa !50
  %229 = mul i64 %225, %228
  %230 = load ptr, ptr %8, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %230, i32 0, i32 5
  %232 = load i64, ptr %231, align 8, !tbaa !51
  %233 = mul i64 %229, %232
  br label %235

234:                                              ; preds = %217, %205
  br label %235

235:                                              ; preds = %234, %222
  %236 = phi i64 [ %233, %222 ], [ 0, %234 ]
  %237 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 13
  %238 = getelementptr inbounds [4 x i64], ptr %237, i64 0, i64 3
  store i64 %236, ptr %238, align 8, !tbaa !13
  %239 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 6
  store ptr @_ZN4Simd4Base17ConvertFp32ToBf16EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPt, ptr %239, align 8, !tbaa !17
  %240 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 4
  %241 = load i8, ptr %240, align 1, !tbaa !42, !range !39, !noundef !40
  %242 = trunc i8 %241 to i1
  br i1 %242, label %243, label %244

243:                                              ; preds = %235
  br label %245

244:                                              ; preds = %235
  br label %245

245:                                              ; preds = %244, %243
  %246 = phi ptr [ @_ZN4Simd4Base17ConvertBf16ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf, %243 ], [ @_ZN4Simd4Base14CopyFp32ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf, %244 ]
  %247 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 7
  store ptr %246, ptr %247, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  store i64 0, ptr %10, align 8, !tbaa !13
  br label %248

248:                                              ; preds = %394, %245
  %249 = load i64, ptr %10, align 8, !tbaa !13
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %250, i32 0, i32 1
  %252 = load i64, ptr %251, align 8, !tbaa !32
  %253 = icmp ult i64 %249, %252
  br i1 %253, label %291, label %254

254:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  br label %397

255:                                              ; preds = %2
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %5, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %6, align 4
  br label %415

259:                                              ; preds = %17
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %5, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %6, align 4
  br label %414

263:                                              ; preds = %19
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %5, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %6, align 4
  br label %413

267:                                              ; preds = %21
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %5, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %6, align 4
  br label %412

271:                                              ; preds = %27
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %5, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %6, align 4
  %275 = icmp eq ptr %25, %28
  br i1 %275, label %280, label %276

276:                                              ; preds = %276, %271
  %277 = phi ptr [ %28, %271 ], [ %278, %276 ]
  %278 = getelementptr inbounds %"struct.Simd::Array.1", ptr %277, i64 -1
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %278) #9
  %279 = icmp eq ptr %278, %25
  br i1 %279, label %280, label %276

280:                                              ; preds = %276, %271
  br label %411

281:                                              ; preds = %36
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %5, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %6, align 4
  %285 = icmp eq ptr %34, %37
  br i1 %285, label %290, label %286

286:                                              ; preds = %286, %281
  %287 = phi ptr [ %37, %281 ], [ %288, %286 ]
  %288 = getelementptr inbounds %"struct.Simd::Array.1", ptr %287, i64 -1
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %288) #9
  %289 = icmp eq ptr %288, %34
  br i1 %289, label %290, label %286

290:                                              ; preds = %286, %281
  br label %403

291:                                              ; preds = %248
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.Simd::MergConvParam", ptr %292, i32 0, i32 0
  %294 = load i64, ptr %10, align 8, !tbaa !13
  %295 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %293, i64 0, i64 %294
  %296 = getelementptr inbounds %struct.SimdConvolutionParameters, ptr %295, i32 0, i32 21
  %297 = load i32, ptr %296, align 8, !tbaa !54
  switch i32 %297, label %392 [
    i32 0, label %298
    i32 1, label %312
    i32 2, label %320
    i32 3, label %328
    i32 4, label %336
    i32 5, label %344
    i32 6, label %352
    i32 7, label %360
    i32 8, label %368
    i32 9, label %376
    i32 10, label %384
  ]

298:                                              ; preds = %291
  %299 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %300 = load i64, ptr %10, align 8, !tbaa !13
  %301 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %302 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %303 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %304 = getelementptr inbounds [2 x ptr], ptr %303, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType0EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %299, i64 noundef %300, ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(8) %304)
          to label %305 unwind label %306

305:                                              ; preds = %298
  br label %393

306:                                              ; preds = %384, %376, %368, %360, %352, %344, %336, %328, %320, %312, %298
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %5, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  %310 = getelementptr inbounds [3 x %"struct.Simd::Array.1"], ptr %33, i32 0, i32 0
  %311 = getelementptr inbounds %"struct.Simd::Array.1", ptr %310, i64 3
  br label %398

312:                                              ; preds = %291
  %313 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %314 = load i64, ptr %10, align 8, !tbaa !13
  %315 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %316 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %317 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %318 = getelementptr inbounds [2 x ptr], ptr %317, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType1EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %313, i64 noundef %314, ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %319 unwind label %306

319:                                              ; preds = %312
  br label %393

320:                                              ; preds = %291
  %321 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %322 = load i64, ptr %10, align 8, !tbaa !13
  %323 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %324 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %325 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %326 = getelementptr inbounds [2 x ptr], ptr %325, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType2EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %321, i64 noundef %322, ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef nonnull align 8 dereferenceable(8) %326)
          to label %327 unwind label %306

327:                                              ; preds = %320
  br label %393

328:                                              ; preds = %291
  %329 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %330 = load i64, ptr %10, align 8, !tbaa !13
  %331 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %332 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %333 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %334 = getelementptr inbounds [2 x ptr], ptr %333, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType3EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %329, i64 noundef %330, ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull align 8 dereferenceable(8) %334)
          to label %335 unwind label %306

335:                                              ; preds = %328
  br label %393

336:                                              ; preds = %291
  %337 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %338 = load i64, ptr %10, align 8, !tbaa !13
  %339 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %340 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %341 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %342 = getelementptr inbounds [2 x ptr], ptr %341, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType4EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %337, i64 noundef %338, ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(8) %342)
          to label %343 unwind label %306

343:                                              ; preds = %336
  br label %393

344:                                              ; preds = %291
  %345 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %346 = load i64, ptr %10, align 8, !tbaa !13
  %347 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %348 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %349 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %350 = getelementptr inbounds [2 x ptr], ptr %349, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType5EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %345, i64 noundef %346, ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %351 unwind label %306

351:                                              ; preds = %344
  br label %393

352:                                              ; preds = %291
  %353 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %354 = load i64, ptr %10, align 8, !tbaa !13
  %355 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %356 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %357 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %358 = getelementptr inbounds [2 x ptr], ptr %357, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType6EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %353, i64 noundef %354, ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull align 8 dereferenceable(8) %356, ptr noundef nonnull align 8 dereferenceable(8) %358)
          to label %359 unwind label %306

359:                                              ; preds = %352
  br label %393

360:                                              ; preds = %291
  %361 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %362 = load i64, ptr %10, align 8, !tbaa !13
  %363 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %364 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %365 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %366 = getelementptr inbounds [2 x ptr], ptr %365, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType7EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %361, i64 noundef %362, ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef nonnull align 8 dereferenceable(8) %366)
          to label %367 unwind label %306

367:                                              ; preds = %360
  br label %393

368:                                              ; preds = %291
  %369 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %370 = load i64, ptr %10, align 8, !tbaa !13
  %371 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %372 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %373 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %374 = getelementptr inbounds [2 x ptr], ptr %373, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType8EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %369, i64 noundef %370, ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull align 8 dereferenceable(8) %372, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %375 unwind label %306

375:                                              ; preds = %368
  br label %393

376:                                              ; preds = %291
  %377 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %378 = load i64, ptr %10, align 8, !tbaa !13
  %379 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %380 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %381 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %382 = getelementptr inbounds [2 x ptr], ptr %381, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType9EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %377, i64 noundef %378, ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull align 8 dereferenceable(8) %382)
          to label %383 unwind label %306

383:                                              ; preds = %376
  br label %393

384:                                              ; preds = %291
  %385 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 1
  %386 = load i64, ptr %10, align 8, !tbaa !13
  %387 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 8
  %388 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 9
  %389 = getelementptr inbounds %"class.Simd::Base::SynetMergedConvolution16b", ptr %11, i32 0, i32 10
  %390 = getelementptr inbounds [2 x ptr], ptr %389, i64 0, i64 0
  invoke void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType10EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %385, i64 noundef %386, ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull align 8 dereferenceable(8) %390)
          to label %391 unwind label %306

391:                                              ; preds = %384
  br label %393

392:                                              ; preds = %291
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 363, ptr noundef @__PRETTY_FUNCTION__._ZN4Simd4Base25SynetMergedConvolution16bC2ERKNS_13MergConvParamE) #10
  unreachable

393:                                              ; preds = %391, %383, %375, %367, %359, %351, %343, %335, %327, %319, %305
  br label %394

394:                                              ; preds = %393
  %395 = load i64, ptr %10, align 8, !tbaa !13
  %396 = add i64 %395, 1
  store i64 %396, ptr %10, align 8, !tbaa !13
  br label %248, !llvm.loop !55

397:                                              ; preds = %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  ret void

398:                                              ; preds = %398, %306
  %399 = phi ptr [ %311, %306 ], [ %400, %398 ]
  %400 = getelementptr inbounds %"struct.Simd::Array.1", ptr %399, i64 -1
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %400) #9
  %401 = icmp eq ptr %400, %310
  br i1 %401, label %402, label %398

402:                                              ; preds = %398
  br label %403

403:                                              ; preds = %402, %290
  %404 = getelementptr inbounds [3 x %"struct.Simd::Array.1"], ptr %24, i32 0, i32 0
  %405 = getelementptr inbounds %"struct.Simd::Array.1", ptr %404, i64 3
  br label %406

406:                                              ; preds = %406, %403
  %407 = phi ptr [ %405, %403 ], [ %408, %406 ]
  %408 = getelementptr inbounds %"struct.Simd::Array.1", ptr %407, i64 -1
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %408) #9
  %409 = icmp eq ptr %408, %404
  br i1 %409, label %410, label %406

410:                                              ; preds = %406
  br label %411

411:                                              ; preds = %410, %280
  call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #9
  br label %412

412:                                              ; preds = %411, %267
  call void @_ZN4Simd5ArrayItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  br label %413

413:                                              ; preds = %412, %263
  call void @_ZN4Simd5ArrayItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %18) #9
  br label %414

414:                                              ; preds = %413, %259
  call void @_ZN4Simd5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #9
  br label %415

415:                                              ; preds = %414, %255
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @_ZN4Simd9DeletableD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  br label %416

416:                                              ; preds = %415
  %417 = load ptr, ptr %5, align 8
  %418 = load i32, ptr %6, align 4
  %419 = insertvalue { ptr, i32 } poison, ptr %417, 0
  %420 = insertvalue { ptr, i32 } %419, i32 %418, 1
  resume { ptr, i32 } %420
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType0EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType1EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType2EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType3EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType4EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType5EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType6EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType7EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType8EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType9EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType10EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{i64 0, i64 552, !12, i64 552, i64 8, !13, i64 560, i64 4, !15}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"_ZTS8SimdBool", !7, i64 0}
!17 = !{!18, !6, i64 616}
!18 = !{!"_ZTSN4Simd4Base25SynetMergedConvolution16bE", !19, i64 0, !21, i64 8, !22, i64 576, !24, i64 608, !24, i64 609, !24, i64 610, !6, i64 616, !6, i64 624, !6, i64 632, !6, i64 640, !7, i64 648, !14, i64 664, !14, i64 672, !7, i64 680, !25, i64 712, !26, i64 864, !27, i64 880, !27, i64 896, !28, i64 912, !7, i64 928, !7, i64 976}
!19 = !{!"_ZTSN4Simd25SynetMergedConvolution16bE", !20, i64 0}
!20 = !{!"_ZTSN4Simd9DeletableE"}
!21 = !{!"_ZTSN4Simd13MergConvParamE", !7, i64 0, !14, i64 552, !16, i64 560}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !14, i64 8, !7, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!24 = !{!"bool", !7, i64 0}
!25 = !{!"_ZTSN4Simd4Base25SynetMergedConvolution16b8AlgParamE", !14, i64 0, !14, i64 8, !14, i64 16, !7, i64 24, !7, i64 48, !7, i64 72, !7, i64 96, !7, i64 112, !7, i64 136}
!26 = !{!"_ZTSN4Simd5ArrayIhEE", !6, i64 0, !14, i64 8}
!27 = !{!"_ZTSN4Simd5ArrayItEE", !6, i64 0, !14, i64 8}
!28 = !{!"_ZTSN4Simd5ArrayIfEE", !6, i64 0, !14, i64 8}
!29 = !{!18, !6, i64 624}
!30 = !{!18, !6, i64 632}
!31 = !{!18, !6, i64 640}
!32 = !{!21, !14, i64 552}
!33 = !{!34, !14, i64 144}
!34 = !{!"_ZTS25SimdConvolutionParameters", !14, i64 0, !14, i64 8, !14, i64 16, !35, i64 24, !36, i64 28, !14, i64 32, !14, i64 40, !14, i64 48, !35, i64 56, !36, i64 60, !14, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !14, i64 128, !14, i64 136, !14, i64 144, !37, i64 152}
!35 = !{!"_ZTS18SimdTensorDataType", !7, i64 0}
!36 = !{!"_ZTS20SimdTensorFormatType", !7, i64 0}
!37 = !{!"_ZTS29SimdConvolutionActivationType", !7, i64 0}
!38 = !{!18, !24, i64 608}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!34, !35, i64 24}
!42 = !{!18, !24, i64 609}
!43 = !{!34, !35, i64 56}
!44 = !{!18, !24, i64 610}
!45 = !{!34, !14, i64 8}
!46 = !{!34, !14, i64 16}
!47 = !{!34, !14, i64 0}
!48 = !{!18, !14, i64 664}
!49 = !{!34, !14, i64 40}
!50 = !{!34, !14, i64 48}
!51 = !{!34, !14, i64 32}
!52 = !{!18, !14, i64 672}
!53 = !{!21, !16, i64 560}
!54 = !{!34, !37, i64 152}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}


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

%"struct.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 }

@_ZTVN4Simd4Base25SynetMergedConvolution16bE = external dso_local unnamed_addr constant { [12 x ptr] }, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [95 x i8], align 1
@__PRETTY_FUNCTION__._ZN4Simd4Base25SynetMergedConvolution16bC2ERKNS_13MergConvParamE = external hidden unnamed_addr constant [88 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Simd4Base17ConvertFp32ToBf16EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPt(ptr noundef, ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, i64 noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Simd4Base17ConvertBf16ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf(ptr noundef, ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, i64 noundef, ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base14CopyFp32ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf(ptr noundef, ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(152), i64 noundef, i64 noundef, ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Simd4Base25SynetMergedConvolution16bC2ERKNS_13MergConvParamE(ptr noundef nonnull align 8 dereferenceable(1024) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(564) %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  tail call void @_ZN4Simd25SynetMergedConvolution16bC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #8
  store ptr getelementptr inbounds inrange(-16, 80) (i8, ptr @_ZTVN4Simd4Base25SynetMergedConvolution16bE, i64 16), ptr %0, align 8, !tbaa !5
  %3 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(568) %3, ptr noundef nonnull align 8 dereferenceable(568) %1, i64 568, i1 false), !tbaa.struct !8
  %4 = getelementptr inbounds i8, ptr %0, i64 576
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  %5 = getelementptr inbounds i8, ptr %0, i64 864
  invoke void @_ZN4Simd5ArrayIhEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %6 unwind label %101

6:                                                ; preds = %2
  %7 = getelementptr inbounds i8, ptr %0, i64 880
  invoke void @_ZN4Simd5ArrayItEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %8 unwind label %103

8:                                                ; preds = %6
  %9 = getelementptr inbounds i8, ptr %0, i64 896
  invoke void @_ZN4Simd5ArrayItEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %10 unwind label %105

10:                                               ; preds = %8
  %11 = getelementptr inbounds i8, ptr %0, i64 912
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %.preheader93.preheader unwind label %107

.preheader93.preheader:                           ; preds = %10
  %.ptr.ptr = getelementptr inbounds i8, ptr %0, i64 928
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %.preheader93.1 unwind label %109

.preheader93.1:                                   ; preds = %.preheader93.preheader
  %.ptr.ptr.1 = getelementptr inbounds i8, ptr %0, i64 944
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr.1, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %.preheader93.2 unwind label %.preheader91.preheader

.preheader93.2:                                   ; preds = %.preheader93.1
  %.ptr.ptr.2 = getelementptr inbounds i8, ptr %0, i64 960
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr.2, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %.preheader90.preheader unwind label %.preheader91.preheader

.preheader90.preheader:                           ; preds = %.preheader93.2
  %.ptr.ptr73 = getelementptr inbounds i8, ptr %0, i64 976
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr73, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %.preheader90.1 unwind label %111

.preheader90.1:                                   ; preds = %.preheader90.preheader
  %.ptr.ptr73.1 = getelementptr inbounds i8, ptr %0, i64 992
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr73.1, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %.preheader90.2 unwind label %.preheader.preheader

.preheader90.2:                                   ; preds = %.preheader90.1
  %.ptr.ptr73.2 = getelementptr inbounds i8, ptr %0, i64 1008
  invoke void @_ZN4Simd5ArrayIfEC2Embm(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr73.2, i64 noundef 0, i1 noundef zeroext false, i64 noundef 8)
          to label %12 unwind label %.preheader.preheader

12:                                               ; preds = %.preheader90.2
  %13 = getelementptr inbounds i8, ptr %0, i64 712
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %13, i8 0, i64 152, i1 false)
  %14 = getelementptr inbounds i8, ptr %0, i64 616
  %15 = getelementptr inbounds i8, ptr %0, i64 624
  %16 = getelementptr inbounds i8, ptr %0, i64 632
  %17 = getelementptr inbounds i8, ptr %0, i64 640
  %18 = getelementptr inbounds i8, ptr %0, i64 648
  %19 = getelementptr inbounds i8, ptr %1, i64 552
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %14, i8 0, i64 48, i1 false)
  %20 = load i64, ptr %19, align 8, !tbaa !15
  %21 = add i64 %20, -1
  %22 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %1, i64 0, i64 %21
  %23 = getelementptr inbounds i8, ptr %1, i64 144
  %24 = load i64, ptr %23, align 8, !tbaa !17
  %25 = icmp ne i64 %24, 1
  %26 = getelementptr inbounds i8, ptr %0, i64 608
  %27 = zext i1 %25 to i8
  store i8 %27, ptr %26, align 8, !tbaa !22
  %.idx83 = select i1 %25, i64 0, i64 184
  %28 = getelementptr inbounds i8, ptr %1, i64 %.idx83
  %29 = getelementptr inbounds i8, ptr %1, i64 24
  %30 = load i32, ptr %29, align 8, !tbaa !34
  %31 = icmp eq i32 %30, 7
  %32 = getelementptr inbounds i8, ptr %0, i64 609
  %33 = zext i1 %31 to i8
  store i8 %33, ptr %32, align 1, !tbaa !35
  %34 = getelementptr inbounds i8, ptr %22, i64 56
  %35 = load i32, ptr %34, align 8, !tbaa !36
  %36 = icmp eq i32 %35, 7
  %37 = getelementptr inbounds i8, ptr %0, i64 610
  %38 = zext i1 %36 to i8
  store i8 %38, ptr %37, align 2, !tbaa !37
  %39 = select i1 %31, i64 2, i64 4
  %40 = getelementptr inbounds i8, ptr %0, i64 848
  store i64 %39, ptr %40, align 8, !tbaa !11
  %41 = select i1 %36, i64 2, i64 4
  %42 = getelementptr inbounds i8, ptr %0, i64 856
  store i64 %41, ptr %42, align 8, !tbaa !11
  %43 = getelementptr inbounds i8, ptr %1, i64 8
  %44 = load i64, ptr %43, align 8, !tbaa !38
  %45 = getelementptr inbounds i8, ptr %1, i64 16
  %46 = load i64, ptr %45, align 8, !tbaa !39
  %47 = mul i64 %46, %44
  %48 = load i64, ptr %1, align 8, !tbaa !40
  %49 = mul i64 %47, %48
  %50 = getelementptr inbounds i8, ptr %0, i64 664
  store i64 %49, ptr %50, align 8, !tbaa !41
  %51 = getelementptr inbounds i8, ptr %22, i64 40
  %52 = load i64, ptr %51, align 8, !tbaa !42
  %53 = getelementptr inbounds i8, ptr %22, i64 48
  %54 = load i64, ptr %53, align 8, !tbaa !43
  %55 = mul i64 %54, %52
  %56 = getelementptr inbounds i8, ptr %22, i64 32
  %57 = load i64, ptr %56, align 8, !tbaa !44
  %58 = mul i64 %55, %57
  %59 = getelementptr inbounds i8, ptr %0, i64 672
  store i64 %58, ptr %59, align 8, !tbaa !45
  br i1 %25, label %.thread87, label %60

60:                                               ; preds = %12
  %spec.select = select i1 %31, i64 0, i64 %49
  %61 = getelementptr inbounds i8, ptr %0, i64 680
  store i64 %spec.select, ptr %61, align 8, !tbaa !11
  %62 = getelementptr inbounds i8, ptr %28, i64 8
  %63 = load i64, ptr %62, align 8, !tbaa !38
  %64 = getelementptr inbounds i8, ptr %28, i64 16
  %65 = load i64, ptr %64, align 8, !tbaa !39
  %66 = mul i64 %65, %63
  %67 = load i64, ptr %28, align 8, !tbaa !40
  %68 = mul i64 %66, %67
  %69 = getelementptr inbounds i8, ptr %0, i64 688
  store i64 %68, ptr %69, align 8, !tbaa !11
  %70 = load i64, ptr %19, align 8
  %71 = icmp eq i64 %70, 3
  br i1 %71, label %73, label %82

.thread87:                                        ; preds = %12
  %72 = getelementptr inbounds i8, ptr %0, i64 680
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %72, i8 0, i64 16, i1 false)
  br label %73

73:                                               ; preds = %.thread87, %60
  %74 = getelementptr inbounds i8, ptr %28, i64 40
  %75 = load i64, ptr %74, align 8, !tbaa !42
  %76 = getelementptr inbounds i8, ptr %28, i64 48
  %77 = load i64, ptr %76, align 8, !tbaa !43
  %78 = mul i64 %77, %75
  %79 = getelementptr inbounds i8, ptr %28, i64 32
  %80 = load i64, ptr %79, align 8, !tbaa !44
  %81 = mul i64 %78, %80
  br label %82

82:                                               ; preds = %60, %73
  %83 = phi i64 [ %81, %73 ], [ 0, %60 ]
  %84 = getelementptr inbounds i8, ptr %0, i64 696
  store i64 %83, ptr %84, align 8, !tbaa !11
  br i1 %36, label %85, label %97

85:                                               ; preds = %82
  %86 = getelementptr inbounds i8, ptr %22, i64 144
  %87 = load i64, ptr %86, align 8, !tbaa !17
  %88 = icmp ne i64 %87, 1
  %89 = getelementptr inbounds i8, ptr %1, i64 560
  %90 = load i32, ptr %89, align 8
  %.not = icmp eq i32 %90, 0
  %or.cond86 = select i1 %88, i1 %.not, i1 false
  br i1 %or.cond86, label %97, label %91

91:                                               ; preds = %85
  %92 = load i64, ptr %51, align 8, !tbaa !42
  %93 = load i64, ptr %53, align 8, !tbaa !43
  %94 = mul i64 %93, %92
  %95 = load i64, ptr %56, align 8, !tbaa !44
  %96 = mul i64 %94, %95
  br label %97

97:                                               ; preds = %85, %82, %91
  %98 = phi i64 [ %96, %91 ], [ 0, %82 ], [ 0, %85 ]
  %99 = getelementptr inbounds i8, ptr %0, i64 704
  store i64 %98, ptr %99, align 8, !tbaa !11
  store ptr @_ZN4Simd4Base17ConvertFp32ToBf16EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPt, ptr %14, align 8, !tbaa !46
  %_ZN4Simd4Base17ConvertBf16ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf._ZN4Simd4Base14CopyFp32ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf = select i1 %31, ptr @_ZN4Simd4Base17ConvertBf16ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf, ptr @_ZN4Simd4Base14CopyFp32ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf
  store ptr %_ZN4Simd4Base17ConvertBf16ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf._ZN4Simd4Base14CopyFp32ToFp32EPKhRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmPf, ptr %15, align 8, !tbaa !47
  %100 = load i64, ptr %19, align 8, !tbaa !15
  %.not97 = icmp eq i64 %100, 0
  br i1 %.not97, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %127, %97
  ret void

101:                                              ; preds = %2
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %134

103:                                              ; preds = %6
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %133

105:                                              ; preds = %8
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %132

107:                                              ; preds = %10
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %131

109:                                              ; preds = %.preheader93.preheader
  %lpad.thr_comm.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

.preheader91.preheader:                           ; preds = %.preheader93.1, %.preheader93.2
  %.idx.lcssa.ph = phi i64 [ 960, %.preheader93.2 ], [ 944, %.preheader93.1 ]
  %lpad.thr_comm = landingpad { ptr, i32 }
          cleanup
  br label %.preheader91

.preheader91:                                     ; preds = %.preheader91.preheader, %.preheader91
  %.idx61 = phi i64 [ %.add62, %.preheader91 ], [ %.idx.lcssa.ph, %.preheader91.preheader ]
  %.add62 = add nsw i64 %.idx61, -16
  %.ptr64 = getelementptr inbounds i8, ptr %0, i64 %.add62
  tail call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.ptr64) #8
  %110 = icmp eq i64 %.add62, 928
  br i1 %110, label %.loopexit, label %.preheader91

111:                                              ; preds = %.preheader90.preheader
  %lpad.thr_comm.split-lp108 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit89

.preheader.preheader:                             ; preds = %.preheader90.1, %.preheader90.2
  %.idx65.lcssa.ph = phi i64 [ 1008, %.preheader90.2 ], [ 992, %.preheader90.1 ]
  %lpad.thr_comm107 = landingpad { ptr, i32 }
          cleanup
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %.preheader
  %.idx69 = phi i64 [ %.add70, %.preheader ], [ %.idx65.lcssa.ph, %.preheader.preheader ]
  %.add70 = add nsw i64 %.idx69, -16
  %.ptr72 = getelementptr inbounds i8, ptr %0, i64 %.add70
  tail call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.ptr72) #8
  %112 = icmp eq i64 %.add70, 976
  br i1 %112, label %.loopexit89, label %.preheader

.lr.ph:                                           ; preds = %97, %127
  %.096 = phi i64 [ %128, %127 ], [ 0, %97 ]
  %113 = getelementptr inbounds [3 x %"struct.Simd::ConvParam"], ptr %1, i64 0, i64 %.096, i32 0, i32 21
  %114 = load i32, ptr %113, align 8, !tbaa !48
  switch i32 %114, label %126 [
    i32 0, label %115
    i32 1, label %116
    i32 2, label %117
    i32 3, label %118
    i32 4, label %119
    i32 5, label %120
    i32 6, label %121
    i32 7, label %122
    i32 8, label %123
    i32 9, label %124
    i32 10, label %125
  ]

115:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType0EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

116:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType1EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

117:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType2EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

118:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType3EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

119:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType4EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

120:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType5EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

121:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType6EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

122:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType7EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

123:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType8EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

124:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType9EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

125:                                              ; preds = %.lr.ph
  tail call void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType10EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564) %3, i64 noundef %.096, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  br label %127

126:                                              ; preds = %.lr.ph
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 363, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN4Simd4Base25SynetMergedConvolution16bC2ERKNS_13MergConvParamE) #9
  unreachable

127:                                              ; preds = %115, %116, %117, %118, %119, %120, %121, %122, %123, %124, %125
  %128 = add nuw i64 %.096, 1
  %129 = load i64, ptr %19, align 8, !tbaa !15
  %130 = icmp ult i64 %128, %129
  br i1 %130, label %.lr.ph, label %._crit_edge, !llvm.loop !49

.loopexit89:                                      ; preds = %.preheader, %111
  %lpad.phi114 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp108, %111 ], [ %lpad.thr_comm107, %.preheader ]
  tail call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr.2) #8
  tail call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr.1) #8
  tail call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %.ptr.ptr) #8
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader91, %109, %.loopexit89
  %.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %109 ], [ %lpad.phi114, %.loopexit89 ], [ %lpad.thr_comm, %.preheader91 ]
  tail call void @_ZN4Simd5ArrayIfED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #8
  br label %131

131:                                              ; preds = %.loopexit, %107
  %.pn.pn = phi { ptr, i32 } [ %.pn, %.loopexit ], [ %108, %107 ]
  tail call void @_ZN4Simd5ArrayItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  br label %132

132:                                              ; preds = %131, %105
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %131 ], [ %106, %105 ]
  tail call void @_ZN4Simd5ArrayItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #8
  br label %133

133:                                              ; preds = %132, %103
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %132 ], [ %104, %103 ]
  tail call void @_ZN4Simd5ArrayIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #8
  br label %134

134:                                              ; preds = %133, %101
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %133 ], [ %102, %101 ]
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  tail call void @_ZN4Simd9DeletableD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #8
  resume { ptr, i32 } %.pn.pn.pn.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType0EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType1EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType2EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType3EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType4EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType5EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType6EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType7EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType8EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType9EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd4Base3SetIL29SimdConvolutionActivationType10EEEvRKNS_13MergConvParamEmRPFvPKtRKNS_9ConvParamERKNS0_25SynetMergedConvolution16b8AlgParamEmmmS7_PKfSG_PfERPFvPKhSA_SE_mmmSG_SG_SG_PhERPFvS7_SA_SE_mmmiS7_SG_SG_SH_SN_E(ptr noundef nonnull align 8 dereferenceable(564), i64 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress 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 #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { 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 #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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{i64 0, i64 552, !9, i64 552, i64 8, !11, i64 560, i64 4, !13}
!9 = !{!10, !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !10, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTS8SimdBool", !10, i64 0}
!15 = !{!16, !12, i64 552}
!16 = !{!"_ZTSN4Simd13MergConvParamE", !10, i64 0, !12, i64 552, !14, i64 560}
!17 = !{!18, !12, i64 144}
!18 = !{!"_ZTS25SimdConvolutionParameters", !12, i64 0, !12, i64 8, !12, i64 16, !19, i64 24, !20, i64 28, !12, i64 32, !12, i64 40, !12, i64 48, !19, i64 56, !20, i64 60, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !21, i64 152}
!19 = !{!"_ZTS18SimdTensorDataType", !10, i64 0}
!20 = !{!"_ZTS20SimdTensorFormatType", !10, i64 0}
!21 = !{!"_ZTS29SimdConvolutionActivationType", !10, i64 0}
!22 = !{!23, !29, i64 608}
!23 = !{!"_ZTSN4Simd4Base25SynetMergedConvolution16bE", !24, i64 0, !16, i64 8, !26, i64 576, !29, i64 608, !29, i64 609, !29, i64 610, !28, i64 616, !28, i64 624, !28, i64 632, !28, i64 640, !10, i64 648, !12, i64 664, !12, i64 672, !10, i64 680, !30, i64 712, !31, i64 864, !32, i64 880, !32, i64 896, !33, i64 912, !10, i64 928, !10, i64 976}
!24 = !{!"_ZTSN4Simd25SynetMergedConvolution16bE", !25, i64 0}
!25 = !{!"_ZTSN4Simd9DeletableE"}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !27, i64 0, !12, i64 8, !10, i64 16}
!27 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !28, i64 0}
!28 = !{!"any pointer", !10, i64 0}
!29 = !{!"bool", !10, i64 0}
!30 = !{!"_ZTSN4Simd4Base25SynetMergedConvolution16b8AlgParamE", !12, i64 0, !12, i64 8, !12, i64 16, !10, i64 24, !10, i64 48, !10, i64 72, !10, i64 96, !10, i64 112, !10, i64 136}
!31 = !{!"_ZTSN4Simd5ArrayIhEE", !28, i64 0, !12, i64 8}
!32 = !{!"_ZTSN4Simd5ArrayItEE", !28, i64 0, !12, i64 8}
!33 = !{!"_ZTSN4Simd5ArrayIfEE", !28, i64 0, !12, i64 8}
!34 = !{!18, !19, i64 24}
!35 = !{!23, !29, i64 609}
!36 = !{!18, !19, i64 56}
!37 = !{!23, !29, i64 610}
!38 = !{!18, !12, i64 8}
!39 = !{!18, !12, i64 16}
!40 = !{!18, !12, i64 0}
!41 = !{!23, !12, i64 664}
!42 = !{!18, !12, i64 40}
!43 = !{!18, !12, i64 48}
!44 = !{!18, !12, i64 32}
!45 = !{!23, !12, i64 672}
!46 = !{!23, !28, i64 616}
!47 = !{!23, !28, i64 624}
!48 = !{!18, !21, i64 152}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass